![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сравнение с nil??? ;Как узнать, что в поле вообще несодер. значие [D6, dBase, FoxPro]
Stenkz © (2003-03-03 07:40:00)Сравнение с nil??? У меня есть поле – например остаток по счёту. Как узнать, что в поле вообще не содержится какое-нибудь значение? Просто на это поле ссылается вычисляемое поле и при попытке –вылетает инвалид вариант конвершен…
Opuhshii (2003-03-03 13:29:00) [1]procedure TForm1.MyTableOnCalcFields(Sender:TObject);
begin
with TDataset(Sender) do begin
AutoCalcFields:=False;
{ Insert your Code here}
AutoCalcFields:=True;
end;
end;
Johnmen (2003-03-03 13:12:00) [2]При обращение к значению поля используй явное преобразование типов (TDep.FieldByName("OProc").AsInteger:=0;), и проблем с инвалид вариант конвершен… не будет.
Соловьев (2003-03-03 13:07:00) [3]А нельзя это сделать, типа так:
update table
set OProc=0
where Oproc is NULL
Stenkz (2003-03-03 12:58:00) [4]Есть проблемма - так как данный код стоит в обработчике OnCalcFields и есть ещё поля в которых не содержаться значения, то при переводе в режем edit, происходит зацикливание. Генерируется сообщение о том что запись заблокирована!!! Как это обьехать?
Stenkz (2003-03-03 11:04:00) [5]Нашёл... Вот так работает
If TDep.FieldByName("OProc").Isnull
then
begin
TDep.Edit;
TDep.FieldValues["OProc"]:=0;
TDep.Post;
end;
gek (2003-03-03 09:49:00) [6]
begin
with TDep do
begin
Edit;
If FieldByName("OVozn").Isnull then
FieldByName("OVozn").asInteger:=0;
FieldByName("Skzt").asFloat:=FieldByName("Summ").asFloat * FieldByName("Kurs").asFloat;
.....
post;
end;
end;
Естественно я не знаю типы полей поэттому и поставил Integer и Float
Stenkz (2003-03-03 09:36:00) [7]begin
If TDep.Fields.Fields["OVozn"].Isnull
then TDep.FieldValues["OVozn"]:=0;
TDep.FieldByName("Skzt").Value:=TDep.FieldValues["Summ"]*TDep.FieldValues["Kurs"];
TDep.FieldByName("Vmkzt").Value:=TDep.FieldValues["Summ_VM"]*TDep.FieldValues["Kurs"];
TDep.FieldByName("Tkzt").Value:=TDep.FieldValues["Summ_P"]*TDep.FieldValues["Kurs"];
TDep.FieldByName("OVoznT").Value:=TDep.FieldValues["OVozn"]*TDep.FieldValues["Kurs"];
TDep.FieldByName("OProcT").Value:=TDep.FieldValues["OProc"]*TDep.FieldValues["Kurs"];
end;
gek (2003-03-03 09:07:00) [8]Приведи полный код, тут у тебя ерунда написана
Stenkz (2003-03-03 08:11:00) [9]Вот так пробовал, не работает...
If и ...
TDep.Fields.Fields["OVozn"].Isnull
TDep.Fields.Fields["25"].Isnull
TDep.Fields.Fields["25"].AsFloat.Isnull
(TDep.Fields["25"].AsFloat).Isnull
TDep.Fields["25"].AsFloat.Isnull
(TDep.FieldValues["OProc"]).Isnull
Как правильно?
gek (2003-03-03 07:46:00) [10]for i:= 0 to FieldCount -1 do
if (Fields[i].DataType = ftFloat)then
if (Fields[i]).IsNull then (Fields[i]).AsFloat:=0;
V-A-V (2003-03-03 07:44:00) [11]If Field.IsNull then тра-та-та...