Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TADOQuery добавление данных

20K
25 сентября 2006 года
aaaaa
12 / / 25.09.2006
У меня такая проблема:
есть компонент adoquery на главной форме.
затем запускаю 2ю форму(на ней тоже компонент adoquery).
добавляю новую запись. затем закрываю эту форму.
и на главной выполняется функция adoquery->refresh().
Почему я не могу получить доступ к добавленным данным?
только если 5 раз вызывать этот refresh, то они появляются.
20K
25 сентября 2006 года
aaaaa
12 / / 25.09.2006
[QUOTE=aaaaa]У меня такая проблема:
есть компонент adoquery на главной форме.
затем запускаю 2ю форму(на ней тоже компонент adoquery).
добавляю новую запись. затем закрываю эту форму.
и на главной выполняется функция adoquery->refresh().
Почему я не могу получить доступ к добавленным данным?
только если 5 раз вызывать этот refresh, то они появляются.[/QUOTE]
ступил. извените. refres тут не причем. его вообще не надо использовать.
проблема была в этом:
[Och->Close();]-вот этой записи не было. добавил и все в поряде.
Och->SQL->Clear();
Och->SQL->Add("SELECT * FROM Och WHERE IDPlayers="+IntToStr(Players->Fields->Fields[0]->AsInteger));
Och->ExecSQL();
Och->Open();
20K
25 сентября 2006 года
aaaaa
12 / / 25.09.2006
нифига.
если выходишь из программы и снова заходишь то данные появляються. может какой метод есть для обнавления данных.
тоесть я как понял данные измененны в бд а в dataset(или как там короче в операт. пам.)остаються старые. какой метод переносит данные из бд в dataset?
309
26 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
Не используй ExecSQL при запросе на чтение - он используется только для запросов на изменение. Метод Open выполяет запрос на выборку сам.
20K
26 сентября 2006 года
aaaaa
12 / / 25.09.2006
Open это конечно хорошо. Но он опять почему то обновляет данные только если несколько раз сделаешь запрос. с первого не обновляет.
вот код на главной форме:
Och->Close();
Och->SQL->Clear();
Och->SQL->Add("SELECT * FROM Och WHERE IDPlayers="+IntToStr(Players->Fields->Fields[0]->AsInteger));
Och->Open();
вот код на 2й форме где добавляем данные:
Och->Insert();
Och->FieldByName("IDPlayers")->Value=idplayers;
Och->FieldByName("Data")->Value=data;
Och->FieldByName("Och")->Value=och;
Och->Post();
мне надо чтобы после добавления и выходи из 2й формы автоматом обнавлялась страница на главной форме.
а то мне приходится делать кнопку с обнавление и жать ее несколько раз. что не очень удобно!
помогите пожалуйста.
20K
26 сентября 2006 года
aaaaa
12 / / 25.09.2006
что никто не сталкивался с такой проблемой?
при добавлении, запись появляется в Access'е а компонент adoquery содержит старые данные. обновляется только после нескольких вызовов close()-open(). что за фигня???
20K
26 сентября 2006 года
aaaaa
12 / / 25.09.2006
может потому что я две копии adoquery использую на двух формах.
причем вторая форма после выхода не удаляется а просто скрывается.
может стоит передать указатель на adoquery?
или просто 2ю форму каждый раз удалять при выходе и создавать при вызове.
20K
26 сентября 2006 года
aaaaa
12 / / 25.09.2006
что никто не знает?
или не понимаете вопрос?
спрашивайте. отвечу.
надо срочно. прогу уже сегодня выкладывать, а обнавление не работает.
20K
26 сентября 2006 года
aaaaa
12 / / 25.09.2006
глухой форум. никого не дождешься.
скажите хотя бы где есть норм форум по C++ Builder?
309
27 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
Да не ори ты так :eek: - а то БАНаном рот заткнут ;)
Чтобы при изменении набора данных ADOQuery, автоматически менялось содержимое базы данных, объект должен иметь свойство UpdateType (вроде бы так пишется), равное "Optimistic"

Далее.... Задержки записи в БД вызваны кэшированием информации в компонентах программы, точнее - в соединении. Два компонента могут создавать разные подключения к одной БД, и у каждого будет свой кэш :(.
Если имеется несколько объектов интерфейса с БД, нужно использовать компонент ADOConnection, организующий соединение с БД. ConnectionString формируется в нём, а в компонентах доступа к данным используется свойство Connection (указатель на TConnection) - на первой форме связь между компонентами создаётся в дизайнере формы, а во второй форме это нужно делать вручную присваиванием адреса.
После этого, оба компонента будут иметь общий кэш.
20K
27 сентября 2006 года
aaaaa
12 / / 25.09.2006
[QUOTE=el scorpio]Да не ори ты так :eek: - а то БАНаном рот заткнут ;)
Чтобы при изменении набора данных ADOQuery, автоматически менялось содержимое базы данных, объект должен иметь свойство UpdateType (вроде бы так пишется), равное "Optimistic"

Далее.... Задержки записи в БД вызваны кэшированием информации в компонентах программы, точнее - в соединении. Два компонента могут создавать разные подключения к одной БД, и у каждого будет свой кэш :(.
Если имеется несколько объектов интерфейса с БД, нужно использовать компонент ADOConnection, организующий соединение с БД. ConnectionString формируется в нём, а в компонентах доступа к данным используется свойство Connection (указатель на TConnection) - на первой форме связь между компонентами создаётся в дизайнере формы, а во второй форме это нужно делать вручную присваиванием адреса.
После этого, оба компонента будут иметь общий кэш.[/QUOTE]
огромное спасибо тебе. а то замучался искать в чем ошибка.
20K
27 сентября 2006 года
aaaaa
12 / / 25.09.2006
[QUOTE=aaaaa]огромное спасибо тебе. а то замучался искать в чем ошибка.[/QUOTE]
блин. опять не получается. теперь ошибка.
Надо создать на 2й форме указатель
"Form2" TADOConnection *conn;
и на первой форме сделать так:
"Form1_ButtonClick" Form2->conn=ADOConnection1;
пишет ошибку что не правильно указан Connection или ConnectionString.
20K
28 сентября 2006 года
aaaaa
12 / / 25.09.2006
разобрался.
я просто забыл во 2ю форму добавить заголовочный файл 1й.
теперь все работает. всем спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог