Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];

Вниз

запрос в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.008 c
14-78044
Andryk
2003-07-09 15:24
2003.07.24
Что с отправкой сообщений?


7-78179
dim-
2003-05-14 21:28
2003.07.24
Как отследить из какой программы была послана печать и сколько ко


11-77816
tamerlan311
2002-11-20 13:29
2003.07.24
обновление сайта !


14-78090
race1
2003-07-08 09:03
2003.07.24
WM & ...


1-77880
SeRg_2003
2003-07-11 07:05
2003.07.24
Ole error 800a03ec





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский