Форум: "Базы";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Внизсохранение изменённых данных в БД Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c