Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2010, 17:56   #1
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
Сообщение

Приветствую всех.
Подключаю DBNavigator, MemTableEh, TDbGridEh и т.д. и т.п. ... ,DataSource, IBDatabase, IBTransaction.
Нажимаю на "+",вставляю запись. Жму на галочку. Все нормально запись добавилась.
В IBTransaction установил Read/Write.
В примерах из стандартной поставки этого нету (в смысле сохранения изменений). СУБД Firebird 2.1
На AfterPost Commit происходит, но сохранить всё равно не получается.
Есть у кого-нибудь любой пример или ссылка на пример?

И если можно,ещё 1 вопрос.
У меня на 1 ПК стоят одновременно Delphi 7 и 2010.
Поставил Ehlib v5.0.02 на Delphi 7 - всё отлично работает.
Поставил на Delphi 2010 - не все примеры запускаются. После компиляции и запуска примера с TreeView - ошибка из класса EdbEngine
"Cannot load driver" - не может загрузить драйвер. При этом если Delphi 2010 запущен и запущен Delphi 7,то в D7 выходит та же ошибка. Может я bpl не так поставил/не поставил в D2010? А так скомпилировал нормально. Там есть 2 bpl Design Time и 2 др. bpl. Как вот эти 2 bpl правильно поставить в D2010. Что посоветуете?

По поводу Cannot load driver.
Cейчас вообще была ошибка,что BDE вырубился. Закрыл D7.
Компилю в D2010 вроде работает, но всё равно странно всё это.
Работает, если вырубить IDE.
Темы для WordPress. Русские WordPress шаблоны

Последний раз редактировалось Stilet; 11.08.2010 в 07:43.
Alexei91 вне форума Ответить с цитированием
Старый 11.08.2010, 07:06   #2
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
Сообщение

Спасибо за ответы и понимание.
Решил свою проблему с commit.
Все компоненты для связи с базой вынес в DataModule.

На OnCreate в модуле данных (DataModule) наваял следующее
Код:
procedure TDataModule2.DataModuleCreate(Sender: TObject);
begin
  if not IBDatabase1.Connected then
  begin
    IBDataBase1.DatabaseName := 'localhost:' + ExtractFilePath(Application.ExeName) + 'POS_COPY.fdb';
    IBDataBase1.Connected := true;
  end;
  MemTableEh1.Active := True;
  MemTableEh1.TreeList.Active := True;//для деревца
  MemTableEh1.TreeList.KeyFieldName := 'UUID';
  MemTableEh1.TreeList.RefParentFieldName := 'PARENT_UUID';
  MemTableEh1.TreeList.DefaultNodeExpanded := True;
  MemTableEh1.Open;
  IBTable1.Open;
end;
На Destroy
Цитата:
procedure TDataModule2.DataModuleDestroy(Send er: TObject);
begin
DataModule2.IBDataBase1.Connected := false;
end;
В модуле,где отображается табличка на OnAfterPost для MemTableEh:
Код:
procedure TForm1.MemTableEh1AfterPost(DataSet: TDataSet);
begin
  with DataModule2 do
  begin
    try
      ibTransaction1.StartTransaction;
      ibTable1.Post;
      MemTableEh1.Post;
     ibTransaction1.Commit;
    except
      ibTransaction1.Rollback;
    end;
  end;
end;
Все вроде бы работает
Использованы компоненты (DataModule),настройки компонентов:
IBDataBase (в св-ве DefaultTransaction указываю свою IBTransaction,
LoginPrompt и проч. св-ва здесь и ниже не буду упоминать) - подкл. к базе,
IBTransaction (св-во DefaultDataBase - IBTransaction) - транзакция,
IBTable - табличка (св-во DataBase - IBDataBase, TableName - имя таблички),
DataSource - св-во DataSet - MemTableEh,
DataSetDriverEh - св-во ProviderDataSet - IBTable,
MemTableEh - св-во DataDriver - DataSetDriverEh.
Модуль,где интерфейс программки:
DbNavigator и dbGridEh - в св-ве DataSource обязательно 1 DataSource из
DataModule.
Вопрос: почему не работало,когда всё было в 1 модуле???
По-моему я где-то св-ва компонентов напутал.

P.S.
Пример учебный - для себя делал.
Темы для WordPress. Русские WordPress шаблоны
Alexei91 вне форума Ответить с цитированием
Старый 11.08.2010, 07:50   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"Cannot load driver"
Может быть непригоден этот компонент для D2010...
Цитата:
Решил свою проблему с commit.
Младец
Цитата:
По-моему я где-то св-ва компонентов напутал
Скорее всего, ибо не от местоположения зависит работоспособность.
Для интереса попробуй с нуля напиши по минимальному но все посади в один модуль.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 10:58   #4
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
Сообщение

Stilet спасибо за совет. Код с MemTableEh1AfterPost был излишним - cв-ва напутал - со мной часто такое бывает.
На счёт D2010 и Ehlib 5.0.02 - совместимо. Я из каталога для D2010
компоненты инсталлил, а примеры то в формате для D7. По-моему из-за этого EDbEngine "Cannot load driver". Но при откл. D2010 демо-проекты,
скомпиленные в D2010 работают.

Можно ещё вопрос?
Что лучше использовать для вывода записей таблиц IBTable или IBQuery?
Не помню где,но читал что Table будет тормозней.
____________________________

Понял, Query получше будет.
Темы для WordPress. Русские WordPress шаблоны

Последний раз редактировалось Stilet; 11.08.2010 в 15:31.
Alexei91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать в ehlib дерево kate158 БД в Delphi 2 05.07.2010 08:23
Как сделать поиск в ListBox в Delphi ? Gunet Помощь студентам 1 15.11.2009 21:08
Как сделать линейку в Delphi blackstersl Общие вопросы Delphi 4 25.07.2009 18:49
Как сделать сетку в Delphi? -HunteR- Общие вопросы Delphi 2 14.02.2009 17:25
Использование EhLib 4.1 в Delphi 2006 beketova Компоненты Delphi 2 15.11.2007 09:30