![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сохранение изменённых данных в БД
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