Главная страница
    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.009 c
14-78112
sss123456
2003-07-07 17:03
2003.07.24
Слишком сложный и неудобный форум


1-77974
Прохожий
2003-07-11 10:47
2003.07.24
ListBox


14-78142
Th
2003-07-08 18:49
2003.07.24
Маленькая находка, может кому-нибудь будет интересно...


14-78076
Е-Моё имя
2003-07-07 17:21
2003.07.24
работа в МоскваСити


1-77856
чайниковский
2003-07-10 10:21
2003.07.24
DirectX





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