Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Не сохранются данные при работе с TIBTable   Найти похожие ветки 

 
sanich ©   (2005-12-20 11:38) [0]

Здраствуйте.
У меня возникла такая проблема:
Есть БД на FireBird. Я к ней подключаюсь через компоненты: TIbDatabase, TIBTable, TIBTransaction, TDataSource ну и TDBGridEh. При наборе строк в TDBGridEh неокторые данные почему-то просто не записываются: при выходе из программы и новом запуске некоторые данные просто пропадают.
Может кто-нибудь знает в чем проблема. Я раньше работал через BDE и теперь вот такие бяки вылезают.


 
Johnmen ©   (2005-12-20 12:09) [1]

Видимо у тебя неявно откатываются транзакции.
Посему - рули ими сам, явно. Чтобы потом не было мучительно и непонятно....:)


 
sanich ©   (2005-12-20 12:15) [2]

Я пытался. Но как отключить автоматическое управление транзакциями?
У меня Delphi6 и такой опции у TIBTransaction нету.


 
Johnmen ©   (2005-12-20 12:20) [3]

Во всех компонентах, где это есть, отключить автокоммит/автороллбэк.
У TIBTransaction есть StartTransaction и т.д.
Обязательно почитай хелп по этим методам!


 
sanich ©   (2005-12-21 16:47) [4]

Ничего не получается - в отдельных записях просто некоторые поля не записываются и все. Ничего не могу понять... :(


 
Курдль ©   (2005-12-21 17:33) [5]


> Johnmen ©   (20.12.05 12:09) [1]
>
> Видимо у тебя неявно откатываются транзакции.
> Посему - рули ими сам, явно.


Я понял! Ты - транзакционный маниак! :)


 
sanich ©   (2005-12-22 11:05) [6]

:) Смешно, ха-ха, а у меня сердце болит
Вообще, заметил, что еще во время работы программы данные в gride есть, а в БД часть этих данных уже нету.
Тоесть, заполняю строки, а потом запускаю проверку на заполнение полей через запрос, и получается, что перед собою данные вижу, часть из них записаны в таблице, а часть нет(причем не записываются как полностью строки так и только отдельные поля). Может как-то можно синхронизировать данные в Gride и таблице БД?


 
Курдль ©   (2005-12-22 11:10) [7]


> Я к ней подключаюсь через компоненты: TIbDatabase, TIBTable,
>  TIBTransaction, TDataSource


Скажу тебе по секрету, что работать с базой через T...Table - моветон.
Брось ты это, - делай сразу нормально!


 
Anatoly Podgoretsky ©   (2005-12-22 11:11) [8]

sanich ©   (22.12.05 11:05) [6]
У тебя наверно используется кеширование.


 
Sergey13 ©   (2005-12-22 11:14) [9]

2[6] sanich ©   (22.12.05 11:05)
>Вообще, заметил
А кроме наблюдений за странным поведением твоей программы, что ты еще выяснил? Ошибка то в ней, в программе. А у тебя одни наблюдения и никакой конкретики.

>а потом запускаю проверку на заполнение полей через запрос
как это реализовано? Что дает проверка? Почему проверку на заполнение сделал после заполнения?


 
sanich ©   (2005-12-22 11:42) [10]


> >а потом запускаю проверку на заполнение полей через запрос
> как это реализовано? Что дает проверка? Почему проверку
> на заполнение сделал после заполнения?

Нет пытался и явно управлять транзакциями, но убедился, что не хватает знаний, раньше работал через БДЕ.


> А кроме наблюдений за странным поведением твоей программы,
>  что ты еще выяснил? Ошибка то в ней, в программе. А у тебя
> одни наблюдения и никакой конкретики.

1. Заполнил таблицу значениями (где-то 40 записей).
2. Нижимаю кнопку, делаю post для DataSource и у меня запускается запрос, который выбирает значения из таблицы. Проверяю длину выбраных полей (они должны быть стандартными) и если поле ен заполнено, то вывожу сообщение, что такая-то запись не полностью заполнена.
3. Вот и полчается, что смотрю на экран - данные есть, а запрос говорит, что их нету. Выключаю программу и запускаю снова - действительно нету :).


 
Курдль ©   (2005-12-22 11:53) [11]


> sanich ©   (22.12.05 11:42) [10]


Кароче. Рекомендации лучших собаководов гласят следующее.

1. Данные получать через T...DataSet с кэшированными обновлениями.
2. Данные посылать в БД с помощью T...DataBase.Apply([T..DataSet1, T..DataSetN]);

Все. Никаких транзакций и геморроев! Делфя все сама сделает!


 
Sergey13 ©   (2005-12-22 12:10) [12]

2[10] sanich ©   (22.12.05 11:42)
> 2. Нижимаю кнопку, делаю post для DataSource и у меня запускается запрос, который выбирает значения из таблицы.
Каких данных? Которые только что запостил? Их там может еще и "не быть" если это делается в разных транзакциях и пишущая незакомичена.

>Проверяю длину выбраных полей (они должны быть стандартными) и если поле ен заполнено, то вывожу сообщение, что такая-то запись не полностью заполнена.
Такие вещи делаются не так. Во первых можно в БД указать, что поле должно быть заполнено. Можно также задать некоторые условия заполненности поля. Наконец есть тригеры, в которых можно не дать записать не то что нужно.
А у тебя идет работа по принципу - сам накакал и сам же об этом сказал самому себе.


 
sanich ©   (2005-12-22 13:04) [13]


> > 2. Нижимаю кнопку, делаю post для DataSource и у меня
> запускается запрос, который выбирает значения из таблицы.
>  
> Каких данных? Которые только что запостил? Их там может
> еще и "не быть" если это делается в разных транзакциях и
> пишущая незакомичена.

Вот в том-то и дело, что часть из них записывается, а часть нет (причем не останних, а произвольным образом).
А вообще действительно, надо отказаться от TIBTable и переходить на DataSet.


 
Sergey13 ©   (2005-12-22 13:08) [14]

2[13] sanich ©   (22.12.05 13:04)
Да ну тебя. Не интересно с тобой. Все только "беды" свои описываешь, а конкретно что и как делаешь не говоришь.


 
sanich ©   (2005-12-22 14:29) [15]


> Да ну тебя. Не интересно с тобой. Все только "беды" свои
> описываешь, а конкретно что и как делаешь не говоришь.


Спасибо!!! :)


 
tech ©   (2006-01-08 02:57) [16]

Не обижайтесь, по Вашим описаниям действительно непонятно, что происходит. Сбросьте мне исходники и базу, я посмотрю.



Страницы: 1 вся ветка

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.043 c
2-1140345028
antoxa2005
2006-02-19 13:30
2006.03.05
Можно ли во время закачки файла по HTTP отслеживать "ход процесса


2-1140315641
49 Cent
2006-02-19 05:20
2006.03.05
Сумма значений в отфильтрованных строках


1-1138708460
Zidane5
2006-01-31 14:54
2006.03.05
Импорт из данных Excel в таблицу DBGrid


15-1139412550
oldman
2006-02-08 18:29
2006.03.05
Вопросик не продельфи, но ...


2-1139812409
Irinka
2006-02-13 09:33
2006.03.05
Простой FTP - клиент