![]() |
|
|
![]()
|
|
| Darked |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
Доброе время суток.
Господа программеры, подскажите пожалуйста в чём упущение. Есть TIBDataBase, TIBQuey, TIBTransaction, TDataSource, TDBGrid, где и планируется отображать результаты работы TIBQuery. База FireBird 2.0. Так вот, пишу такое событие по нажатию кнопки:
И в момент "qibQuery.Active := True;" программа падает с ошибкой:
Таблица, куда производится запись пустая. В чём ошибка? -------------------- Veni, Vidi, Vici !!! |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
а так:
при выполнении qibQuery.Active := True; ты вставляешь позицию повторно, зачем? достаточно qibQuery.ExecSQL; о каком отображении идет речь? для начала хотя бы select * from persons нужно в qibQuery.SQL заталкать. |
|||
|
||||
| Darked |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
DimW, дело в том, что как только проходит qibQuery.ExecSQL, то в DBGrid сразу информация исчезает, DBGrid переходит к своему первоначальному виду, пропадают все столбцы и строки, как будто я его только поместил на форму и ни к чему не подсоединял.
Вот и не начал с TIBQuery эксперементировать.
Ну, в будущем )) -------------------- Veni, Vidi, Vici !!! |
|||
|
||||
| pavelv |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Ругается на первичный ключ, или дублирование записи или может значение какое-то null пытаешься запихнуть где ему таковым быть нельзя(хотя вроде другая ошибка должна быть). А так подытожив слова DimW:
Вообще совет, если ты работаешь с одной таблицей и намерен постоянно добавлять, удалять и редактировать записи в ней используй компонент TibTable, я так понял у тебя InterBase. Компонент простой и удобный, и всякой фигни с дополнительными запросами чудить не нужно. |
|||
|
||||
| Darked |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
Да, зачем мне лишний компонент тянуть (это я про TIBTable), хочу разобраться именно с TIBQuery. Должно же как - то это работать. Собственно вопрос как обновить данные в TDBGrid. Потому что, так то всё работает, записи в базу добавляются, но проблема в отображении на экране изменений.
-------------------- Veni, Vidi, Vici !!! |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
pavelv, в последней строке кода не qibQuery.ExecSQL;, а qibQuery.Active := True;
Darked, ты понимаешь разницу между добавлением данных в БД и их считыванием?! ну так вот когда все таки решишься на этот шаг тогда и получишь данные в гриде. pavelv, теде написал код который делает то что ты хочешь, с учетом моих замечаний. это спорный вопрос, скорее он не лишний, а вспомогательный. |
|||
|
||||
| Darked |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
Согласен, некорректно выражал мысли. Разницу понимаю )) Если делать выборку, то всё работает и обновляется не вопрос, меня интересует вопрос - когда я вставляю в таблицу данные, как мне отобразить эти изменения в таблице? То есть добавил записьи чтобы эти изменения отобразились в DBGrid, поэтому и начал эксперементировать со свойством Active. Догадываюсь что возможно я как - то неправильно транзакцию делаю.... или не делаю её вообще ;( Завершение транзакции я делаю лишь только так TIBTransaction.CommitRetaining; Может тут что не так? -------------------- Veni, Vidi, Vici !!! |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
НИКОГДА НИКОМУ не использовать.
Использовать только TIBDataSet если мне не изменяет память, то когда в запросе написано select ... from ..., то IBX по барабану что вызывать Open, ExecSQL или Active:=True результат один. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| pavelv |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Darked я так понимаю мы тебе что-то другое говорим, поясни фразу:-"меня интересует вопрос - когда я вставляю в таблицу данные, как мне отобразить эти изменения в таблице?". Ты новый данные хочешь как-то выделить на фоне остальных чтоли?
P.S> Deniz что ты так на TibTable наезжаешь? Если не трудно поясни, а то уж сколько его использую и никогда проблем не замечал. |
|||
|
||||
| Darked |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
Есть такое мнение что настоящие программисты не используют T*Table, всё вручную через SQL, то есть применение их есть дурной тон. Да нет, в таблице есть данные, эта таблица отображается в DBGrid. Я добавляю строку и хочу чтобы DBGrid сделал REFRESH, то есть обновил отображаемые данные и показал таблицу с учётом добавленной записи. -------------------- Veni, Vidi, Vici !!! |
|||
|
||||
| Darked |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
Всем большое спасибо!!!!! Код, который pavelv работает, я не обратил внимание на добавку qibQuery.SQL.Add('select * from persons');
Теперь всё работает. -------------------- Veni, Vidi, Vici !!! |
|||
|
||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Читайте www.ibase.ru Например вот здесь Если имя Димы Кузьменко Вам о чем-то говорит, стоит прислушаться. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| Darked |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 26.2.2004 Где: Южный Урал Репутация: нет Всего: нет |
Тема закрыта )
-------------------- Veni, Vidi, Vici !!! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |