Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сохранение изменённых данных в БД


passs ©   (2005-07-18 11:06:00) 

В справке написано, что метод Post - модификация изменённых данных. Но если: внести данные, затем прменить Post, затем завршить работу программы (без закрытия БД), то изменнённая запись не сохранятеся.
ПиСи: зато во время работы программы после функции Post изменения есть :-\ куда они пропали?


dolmat   (2005-08-01 13:53:00) [1]

В BDE Config>init> Local share переставь на false
При добавлении правильнее было бы использовать Append
Всякие Edit стоит заменить на соответствующие полям DBedit тогда получится програмный код оч.короткий
if BitBtn1.Caption='Добавить' then
begin
MainForm.Table1.Append;
formedit.showmodal;
MainForm.Table1.Post;
end
else
begin
MainForm.Table1.edit;
formedit.showmodal;
MainForm.Table1.Post;
end;

PS что-то программа похожа на коммунальную и по своей сути на мой взгляд немного неправильно организована т.е. необходимо разделить как минимум на три таблицы: таблицу плательщиков и таблицу услуг плательщикам, таблицу цен все это правильно связать.
Я тоже с подобной начинал.


NickMan   (2005-08-01 13:47:00) [2]

У меня в похожей программе (Парадокс)

цикл
Table1.Append;
Table1.FieldByName('F1').AsString:=var1;
Table1.FieldByName('F2').AsString:=var2;
.
.
Table1.Post;
конец цикла

была такая ситуация: в дбгриде показывает записи, типа все   нормально, а если подключить этот файл к другой программе, там уже в дбгриде ничего не видно. И проверка файла утилитой показывает что у него побитый заголовок. Может кто знает причину?


ArchValentin   (2005-08-01 13:28:00) [3]

Я использую Table, и делаю так:
(даю конкретный пример, неохота сокращать)

if BitBtn1.Caption='Добавить' then
begin
MainForm.Table1.Insert;

MainForm.Table1.FieldByName('Номер договора').AsInteger:=StrToInt(NumDog.text);
MainForm.Table1.FieldByName('Организация').AsString:=Name.Text;
MainForm.Table1.FieldByName('Дата заключения').AsDateTime:=zakluch.Date;
MainForm.Table1.FieldByName('Вступает в силу').AsDateTime:=datevstup.Date;
MainForm.Table1.FieldByName('Дата расторжения').AsDateTime:=rastorzh.Date;
MainForm.Table1.FieldByName('Бюджет').AsString:=budzhet.Text;
MainForm.Table1.FieldByName('Юридический адрес').AsString:=UrAddress.Text;
MainForm.Table1.FieldByName('Фактический адрес').AsString:=FacktAddress.Text;
MainForm.Table1.FieldByName('ИНН').AsString:=inn.Text;
MainForm.Table1.FieldByName('КПП').AsString:=kpp.Text;
MainForm.Table1.FieldByName('Номер телефона').AsInteger:=StrToInt(TelNumber.Text);
MainForm.Table1.FieldByName('Расчётный счёт').AsString:=Rchet.Text;
MainForm.Table1.FieldByName('Банк').AsString:=Bank.Text;
MainForm.Table1.FieldByName('Вид оплаты').AsString:=Vidoplati.Text;
MainForm.Table1.FieldByName('Водоснабжение').AsInteger:=StrToInt(snabzhenie.text);
MainForm.Table1.FieldByName('Тариф').AsFloat:=StrToFloat(tarif1.text);
MainForm.Table1.FieldByName('Водоотведение').AsInteger:=StrToInt(vodootvedenie.Text);
MainForm.Table1.FieldByName('Тариф_').AsFloat:=StrToFloat(Tarif2.Text);
MainForm.Table1.FieldByName('Холодная').AsInteger:=StrToInt(cold.text);
MainForm.Table1.FieldByName('Тариф хол').AsFloat:=StrToFloat(tarifcold.text);
MainForm.Table1.FieldByName('Горячая').AsInteger:=StrToInt(hot.text);
MainForm.Table1.FieldByName('Тариф гор').AsFloat:=StrToFloat(tarifhot.text);
MainForm.Table1.FieldByName('Тип водомера').AsString:=VidVodomer.Text;
MainForm.Table1.FieldByName('Дата поверки').AsString:=datepoverk.text;
MainForm.Table1.FieldByName('Дата истечения').AsString:= dateistech.Text;
MainForm.Table1.FieldByName('Сумма в месяц').AsFloat:=strToFloat(edit3.Text);
MainForm.Table1.FieldByName('Сумма в год').AsFloat:=strToFloat(edit3.Text)*12;
MainForm.Table1.FieldByName('Экология').AsInteger:=StrToInt(ekolog.Text);
MainForm.Table1.FieldByName('Тариф(экол)').AsFloat:=StrToFloat(tarifeko.Text);
MainForm.Table1.FieldByName('Итого(экол)').AsFloat:=StrToFloat(itogoeko.Text);
MainForm.Table1.FieldByName('Итого(вод)').AsFloat:=StrToFloat(edit1.Text);
MainForm.Table1.FieldByName('Итого(кан)').AsFloat:=StrToFloat(edit2.Text);

MainForm.Table1.Post;
end
else
begin
MainForm.Table1.edit;

MainForm.Table1.FieldByName('Номер договора').AsInteger:=StrToInt(NumDog.text);
MainForm.Table1.FieldByName('Организация').AsString:=Name.Text;
MainForm.Table1.FieldByName('Дата заключения').AsDateTime:=zakluch.Date;
MainForm.Table1.FieldByName('Вступает в силу').AsDateTime:=datevstup.Date;
MainForm.Table1.FieldByName('Дата расторжения').AsDateTime:=rastorzh.Date;
MainForm.Table1.FieldByName('Бюджет').AsString:=budzhet.Text;
MainForm.Table1.FieldByName('Юридический адрес').AsString:=UrAddress.Text;
MainForm.Table1.FieldByName('Фактический адрес').AsString:=FacktAddress.Text;
MainForm.Table1.FieldByName('ИНН').AsString:=inn.Text;
MainForm.Table1.FieldByName('КПП').AsString:=kpp.Text;
MainForm.Table1.FieldByName('Номер телефона').AsInteger:=StrToInt(TelNumber.Text);
MainForm.Table1.FieldByName('Расчётный счёт').AsString:=Rchet.Text;
MainForm.Table1.FieldByName('Банк').AsString:=Bank.Text;
MainForm.Table1.FieldByName('Вид оплаты').AsString:=Vidoplati.Text;
MainForm.Table1.FieldByName('Водоснабжение').AsInteger:=StrToInt(snabzhenie.text);
MainForm.Table1.FieldByName('Тариф').AsFloat:=StrToFloat(tarif1.text);
MainForm.Table1.FieldByName('Водоотведение').AsInteger:=StrToInt(vodootvedenie.Text);
MainForm.Table1.FieldByName('Тариф_').AsFloat:=StrToFloat(Tarif2.Text);
MainForm.Table1.FieldByName('Холодная').AsInteger:=StrToInt(cold.text);
MainForm.Table1.FieldByName('Тариф хол').AsFloat:=StrToFloat(tarifcold.text);
MainForm.Table1.FieldByName('Горячая').AsInteger:=StrToInt(hot.text);
MainForm.Table1.FieldByName('Тариф гор').AsFloat:=StrToFloat(tarifhot.text);
MainForm.Table1.FieldByName('Тип водомера').AsString:=VidVodomer.Text;
MainForm.Table1.FieldByName('Дата поверки').AsString:=datepoverk.text;
MainForm.Table1.FieldByName('Дата истечения').AsString:= dateistech.Text;
MainForm.Table1.FieldByName('Сумма в месяц').AsFloat:=strToFloat(edit3.Text);
MainForm.Table1.FieldByName('Сумма в год').AsFloat:=strToFloat(edit3.Text)*12;
MainForm.Table1.FieldByName('Экология').AsInteger:=StrToInt(ekolog.Text);
MainForm.Table1.FieldByName('Тариф(экол)').AsFloat:=StrToFloat(tarifeko.Text);
MainForm.Table1.FieldByName('Итого(экол)').AsFloat:=StrToFloat(itogoeko.Text);
MainForm.Table1.FieldByName('Итого(вод)').AsFloat:=StrToFloat(edit1.Text);
MainForm.Table1.FieldByName('Итого(кан)').AsFloat:=StrToFloat(edit2.Text);

MainForm.Table1.Post;
end;


Пример немножко глупый, но работает


Плохиш   (2005-07-20 11:29:00) [4]


> затем завршить работу программы (без закрытия БД),

А не надо программы через таскменеджер снимать.


Desdechado   (2005-07-20 11:24:00) [5]

ApplyUpdates


stone   (2005-07-20 09:59:00) [6]

БД какая? Компоненты доступа к БД какие?


Goffman   (2005-07-20 08:07:00) [7]

Это зависит от конкретного TDataSet.
Например в DOA TOracleDataSet есть
CachedUpdates и CommitOnPost


Наверх

Титульная страница Поиск, карта сайта Написать письмо