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

Вниз

запрос в Query   Найти похожие ветки 

 
rosl   (2003-07-03 04:51) [0]

Уважаемые МАСТЕРА!!!
помогите со вставкой данных.
подключил *.dbf с помощью Query,
поля name, mes1, mes_it, fin_n, zach_n, fin_p, zach_p
но в grid нужны ещё суммы строк fin_n, zach_n и fin_p, zach_p и отклонение mes_it - (fin_n + zach_n)
поэтому запрос в Query выглядит так:

select name, mes1, mes_it, fin_n, zach_n, fin_n + zach_n, fin_p, zach_p, fin_p + zach_p, mes_it - (fin_n + zach_n)
from baza\main1.dbf

к Query подключил UpdateSQL, но при добавлении новой строчки выдаётся ошибка:
"invalid floating point operation"
вставляю данные так:
Query.Insert;
Query.FieldByName("name").AsString:=form3.DBLookupComboBox1.KeyValue;
Query.FieldByName("mes1").AsString:=form3.DBLookupComboboxEh1.KeyValue;
Query.FieldByName("mes_it").AsString:=form3.Edit1.Text;
Query.FieldByName("fin_p").AsString:=form3.Edit2.Text;
Query.FieldByName("zach_p").AsString:=form3.Edit3.Text;
Query.FieldByName("fin_n").AsString:=form3.Edit4.Text;
Query.FieldByName("zach_n").AsString:=form3.Edit5.Text;
Query.Post;
Query.ApplyUpdates;


 
ЮЮ ©   (2003-07-03 05:53) [1]

>при добавлении новой строчки выдаётся ошибка:
"invalid floating point operation"

В каком операторе?
Одно из опасных мест:

>Query.FieldByName("fin_p").AsString:=form3.Edit2.Text;

Для такого кода надо быть совершенно точно быть уверенным, что в form3.Edit2.Text находится информация, которая безошибочно будет преобразована к типу поля. Безпаснее было бы, например, так

Query.FieldByName("fin_p").AsFloat := EditTextToFloat(form3.Edit2);

function EditTextToFloat(Edit: TEdit): double;
begin
// а здесь можно проанализировать Edit.Text,
// при необходимости возбудить исключение, установить фокус на
// ошибочный символ в Edit.Text и т.д.
// простейший вариант:
try
Result := StrToFloat(Edit.Text);
except
Edit.SetFocus;
raise
end;
end;





 
ЮЮ ©   (2003-07-03 06:01) [2]

Во-вторых, вычисляемые в запросе поля для новых и исправленных записей никто не пересчитает до переоткрытия запроса, так что их тоже надо 1)пересчитать, исключив из Updtate и Insert предложений UpdateSQL-я 2) или сделать эти поля Calculated и рассчитывать на клиенте



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
3-77724
Devourer
2003-06-30 16:36
2003.07.24
Директория алиаса


1-77823
Bless
2003-07-09 15:59
2003.07.24
Редактор свойств


1-77825
$Hic0
2003-07-11 20:37
2003.07.24
TShape


3-77772
Лора
2003-07-02 09:15
2003.07.24
Запрос в Access


14-78069
McSimm2
2003-07-07 16:28
2003.07.24
Сертификация по Delphi в Инете