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

Вниз

сохранение изменённых данных в БД   Найти похожие ветки 

 
passs   (2005-07-18 11:06) [0]

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


 
Goffman ©   (2005-07-20 08:07) [1]

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


 
stone ©   (2005-07-20 09:59) [2]

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


 
Desdechado ©   (2005-07-20 11:24) [3]

ApplyUpdates


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


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

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


 
ArchValentin ©   (2005-08-01 13:28) [5]

Я использую 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;


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


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

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

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

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


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

В 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 что-то программа похожа на коммунальную и по своей сути на мой взгляд немного неправильно организована т.е. необходимо разделить как минимум на три таблицы: таблицу плательщиков и таблицу услуг плательщикам, таблицу цен все это правильно связать.
Я тоже с подобной начинал.



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

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

Наверх




Память: 0.49 MB
Время: 0.03 c
1-1124305184
Tihinen
2005-08-17 22:59
2005.09.11
Виртуалка vs Корявый алгоритм


1-1124262735
Петр
2005-08-17 11:12
2005.09.11
вопросы вместо текста


14-1124356955
Ilya39
2005-08-18 13:22
2005.09.11
компилятор C#


8-1115220389
Gear
2005-05-04 19:26
2005.09.11
Как осуществить запись звука с микрофона средствами DirectSound?


4-1121870239
Profik
2005-07-20 18:37
2005.09.11
Прога в трее