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

Вниз

Данные из DBGrid не попадают в базу   Найти похожие ветки 

 
senya   (2003-12-18 15:16) [0]

Есть база FireBird.
Есть в ней табличка Table.
Есть DBGrid на форме.
ВВожу данные в DBGrid,
выполняю Table.Post и Transaction.Commit -
никакого эффекта = база пустая.


 
Amoeba ©   (2003-12-18 15:18) [1]

А DataSource и DataSet есть?


 
senya   (2003-12-18 15:21) [2]

да
Table : TIBTable and DataSource1 : TDataSource


 
Vlad ©   (2003-12-18 15:24) [3]


> Amoeba © (18.12.03 15:18) [1]

Нет, он в голом гриде данные вводит :-)


> senya (18.12.03 15:16)

Неужели база совсем пустая ? :) Как проверял ?
А вобще код бы неплохо увидать, где это ты там делаешь Post и Commit


 
Amoeba ©   (2003-12-18 15:27) [4]


> Vlad © (18.12.03 15:24) [3]
>
> > Amoeba © (18.12.03 15:18) [1]
>
> Нет, он в голом гриде данные вводит :-)

Всякое на свете бывает...
Уже и пошутить нельзя?


 
senya   (2003-12-18 15:32) [5]

код такой
RecNo := DataModule1.TableSpecSale.RecNo;
DataModule1.TableSpecSale.Post;
if DataModule1.TransactionTemp.InTransaction then
DataModule1.TransactionTemp.Commit;
DataModule1.TableSpecSale.Open;
DataModule1.TableSpecSale.Edit;
DataModule1.TableSpecSale.MoveBy(RecNo);


 
Vlad ©   (2003-12-18 15:41) [6]

RecNo := DataModule1.TableSpecSale.RecNo;
DataModule1.TableSpecSale.Post;
if DataModule1.TransactionTemp.InTransaction then
DataModule1.TransactionTemp.Commit;
DataModule1.TableSpecSale.Close;
DataModule1.TableSpecSale.Open;
DataModule1.TableSpecSale.MoveBy(RecNo);
DataModule1.TableSpecSale.Edit;


 
senya   (2003-12-18 15:44) [7]

пробовал и так, не помогает


 
MV   (2003-12-18 15:44) [8]

Извините, конечно, ну, типа, а кроме приведенныънных строк - ничего нет? Ну, там, заполнение полей, выполнение SQL - запросов?


 
Vlad ©   (2003-12-18 15:46) [9]


> senya (18.12.03 15:44) [7]
> пробовал и так, не помогает

Для начала ответь, как ты узнал, что данные не сохраняются в БД ?
Только лишь по тому что они не отображаются в гриде или как ?
Во-вторый, этот код выполняется когда/где/на какое событие


 
Johnmen ©   (2003-12-18 15:47) [10]

>никакого эффекта = база пустая.

"Неужели база совсем пустая ? :) Как проверял ?" (c) Vlad ©


 
MV   (2003-12-18 15:48) [11]

Код - полностью - на стол!


 
senya   (2003-12-18 15:49) [12]

MV
поля заполняю ручками в Gride

Vlad
смотрю через EMS FireBird Manager
весь прикол еще в том, что раньше подобное много раз делал
всегда все получалось, а вот теперича какой-то глюк
и еще : даже когда таблица пустая иногда показывает в гриде ранне бывшие там строки????


 
MV   (2003-12-18 15:53) [13]

А ты манагеру говоришь, чтобы он тоже commit делал? Без этого - никак!


 
senya   (2003-12-18 15:55) [14]

говоришь и refresh делаю


 
MV   (2003-12-18 15:59) [15]

Братушка, покажи весь код, непонятно, о чем разговаривать.
Тут на InterBase не одну собаку съели.


 
senya   (2003-12-18 16:06) [16]

так енто и есть все по сохранению данных
не могу понять че еще нуно?


 
Vlad ©   (2003-12-18 16:06) [17]


> Johnmen © (18.12.03 15:47) [10]

Копирайты с двух сторон - слишком большая честь для меня :-)))


> senya (18.12.03 15:49) [12]

Что-то с транзакциями у тебя не то. И еще подозрение вызывает переменная RecNo. Переименуй от греха подальше.
Кстати, ты так и не ответил, в какой момент исполняется этот код ?


 
MV   (2003-12-18 16:11) [18]

Ну, если код секретный, то набросай пример - с компонентами доступа, с обработчиками и с гридом - и покажи нам.


 
senya   (2003-12-18 16:19) [19]

а че набрасывать, все предельно просто
IBDatabase, IBTransaction, IBTable,DataSource,DBGrid, Button
IBDatabase.Connected = True
IBTransaction = Read Committed
Table.Active = False

OnFormCreate :
Table.Open;
Table.Edit;

OnButtonClick:
тот код, который приводил

вот собсно и все


 
MV   (2003-12-18 16:25) [20]

Working with TTable and TQuery
Although TTable is very convenient for its RAD methods and its abtract data-aware
model, it should never be used with InterBase. TTable is not designed to be used with
client/server applications; it is designed for use on relatively small tables in a local
database, accessed in core memory.
...
In a client/server architecture, you should use TQuery instead.

InterBase 6
Developer’s
Guide, page 33

Короче, не мучайся, а используй TIBQuery с SelectSQL.Text := "select * from MyTable" и с RequestLive := true (вообще разницы не заметишь)
И покажи параметры транзакции...


 
Vlad ©   (2003-12-18 16:27) [21]

DataModule1.TransactionTemp.InTransaction - чему равно в момент исполнения твоего кода ?


 
senya   (2003-12-18 16:30) [22]

TIBQuery это хорошо, вот тока как потом данные из грида записать
в базу?? (Не понимаю)

а параметры транзакции:
read_committed
rec_version
nowait


 
senya   (2003-12-18 16:31) [23]

Vlad © (18.12.03 16:27) [21]
"False"


 
MV   (2003-12-18 16:31) [24]

А TIBDataSet? НЕ хочешь?


 
Johnmen ©   (2003-12-18 16:33) [25]

MV (18.12.03 16:25)

Чтоб не мучиться (RequestLive в TIBQuery ???) и делать по уму, надо TIDataSet.
TIBQuery для других задач...


 
MV   (2003-12-18 16:34) [26]

Насчет DataSet = это сразу 4 (четыре) sql - запроса в одном!
Select SQL, Insert Sql, Delete и Refresh. Все остальное - как обычно. Лучше его - только FIB+ (хотя, конечно, дело вкуса)


 
MV   (2003-12-18 16:34) [27]

Насчет RequestLive- big pardon...


 
senya   (2003-12-18 16:35) [28]

MV (18.12.03 16:31) [24]
как-то и не знаю, всегда вроде и так получалось
думаешь поможет, ведь вроде и так намана написано, тока не работает?!


 
MV   (2003-12-18 16:36) [29]

!!!!!

Попробуй
write
nowait
rec_version
read_committed


 
Vlad ©   (2003-12-18 16:38) [30]


> senya (18.12.03 16:31) [23]
> Vlad © (18.12.03 16:27) [21]
> "False"

Транзакции нет, Commit не выполняется.


 
senya   (2003-12-18 16:40) [31]

Vlad © (18.12.03 16:38) [30]
извини эт я гоню, тама True
транзакция выполняется, сам первым делом проверял


 
MV   (2003-12-18 16:40) [32]

Значит, что-то в параметрах TIBTable!


 
MV   (2003-12-18 16:41) [33]

Ну, добавь строчку

write
в параметры транзакции...


 
senya   (2003-12-18 16:43) [34]

MV (18.12.03 16:41) [33]
попробовал не помогает
такое впечатление, что не видит того, что в грид что-то введено


 
Vlad ©   (2003-12-18 16:44) [35]

А у тебя IBTable.CachedUpdates чему равно ?


 
sad ©   (2003-12-18 16:46) [36]

if not (DataModule1.TransactionTemp.InTransaction) then
DataModule1.TransactionTemp.StartTransaction


 
senya   (2003-12-18 16:48) [37]

Vlad © (18.12.03 16:44) [35]
False


 
Vlad ©   (2003-12-18 16:52) [38]


> senya (18.12.03 16:48) [37]

Попробуй сделать CachedUpdates=true и после Post делай TableSpecSale.ApplyUpdates


 
senya   (2003-12-18 16:54) [39]

Vlad © (18.12.03 16:52) [38]
попробую


 
MV   (2003-12-18 17:06) [40]

Ну, СЕНЯ! Держи пример на мыло. Только в базе укажи реальный путь в Design-time. Вариант и с TIBTable, и с TIBDataSet


 
Гоша   (2003-12-18 17:35) [41]

гдето какая-то ерундовина вкралась.
Я бы на твоем месте просто грохнул форму и юнит, и заново все набросал, благо, текста там немного.


 
TATIANA   (2003-12-19 09:07) [42]

Если работаешь с FireBird и IbExpert возникает очень много проблем , многое не работает , метод POST в том числе , я это уже опробовала , несколько дней мучилась с BLOB- полями , ничего не вышло , все примеры даны для работы с BDE , с такой реализацией базы нужны другие методы . Я обновляю базу с помощью хранимых процедур , создаются они в IBExpert , или с помощью запросов - SQL . К сожалению BLOB - поля не передаются через хранимые процедуры .



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

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

Наверх




Память: 0.56 MB
Время: 0.033 c
3-49386
Patrick
2003-12-22 09:21
2004.01.16
Настройка Oracle.


3-49425
chtr
2003-12-19 08:07
2004.01.16
Использование AS в инструкции JOIN


1-49549
димка
2004-01-01 17:23
2004.01.16
Как открыть файл с помощью какого-то приложения


3-49463
rtooo
2003-12-19 01:12
2004.01.16
Как немного автоматизировать базу


1-49486
Vl_
2004-01-03 20:34
2004.01.16
МАТРИЦЫ