Главная страница
    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.45 MB
Время: 0.007 c
1-77955
Diatel
2003-07-11 02:39
2003.07.24
Выделение в МЕМО


1-77965
FlyingHome
2003-07-11 10:54
2003.07.24
Работа с Excel


14-78148
Незнайка
2003-07-09 13:24
2003.07.24
Windows Server 2003 и Windows XP


1-77994
Aleksandr
2003-07-11 15:40
2003.07.24
Как корректно обратиться к OleVariant-массиву байтов?


1-77888
KPP
2003-07-14 09:55
2003.07.24
Как наиболее быстро сортировать файлы папки по имени, дате, и т.д





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский