Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

Не сохранются данные при работе с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1140011690
Руслан
2006-02-15 16:54
2006.03.05
Как узнать заголовок музыкального файла?


2-1139851736
Интересующийся
2006-02-13 20:28
2006.03.05
Поиск и запись текста в TStringList


8-1127629243
VVA
2005-09-25 10:20
2006.03.05
MediaPlayer медляк


1-1138875687
OlegNik
2006-02-02 13:21
2006.03.05
Как программно работать с реестром?


15-1139839786
Интересующийся
2006-02-13 17:09
2006.03.05
Borland отказывается от развития





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский