Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
ВнизСравнение с nil??? Как узнать, что в поле вообще несодер. значие Найти похожие ветки
← →
Stenkz (2003-03-03 07:40) [0]Сравнение с nil??? У меня есть поле – например остаток по счёту. Как узнать, что в поле вообще не содержится какое-нибудь значение? Просто на это поле ссылается вычисляемое поле и при попытке –вылетает инвалид вариант конвершен…
← →
V-A-V (2003-03-03 07:44) [1]If Field.IsNull then тра-та-та...
← →
gek (2003-03-03 07:46) [2]for i:= 0 to FieldCount -1 do
if (Fields[i].DataType = ftFloat)then
if (Fields[i]).IsNull then (Fields[i]).AsFloat:=0;
← →
Stenkz (2003-03-03 08:11) [3]Вот так пробовал, не работает...
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 09:07) [4]Приведи полный код, тут у тебя ерунда написана
← →
Stenkz (2003-03-03 09:36) [5]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:49) [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 11:04) [7]Нашёл... Вот так работает
If TDep.FieldByName("OProc").Isnull
then
begin
TDep.Edit;
TDep.FieldValues["OProc"]:=0;
TDep.Post;
end;
← →
Stenkz (2003-03-03 12:58) [8]Есть проблемма - так как данный код стоит в обработчике OnCalcFields и есть ещё поля в которых не содержаться значения, то при переводе в режем edit, происходит зацикливание. Генерируется сообщение о том что запись заблокирована!!! Как это обьехать?
← →
Соловьев (2003-03-03 13:07) [9]А нельзя это сделать, типа так:
update table
set OProc=0
where Oproc is NULL
← →
Johnmen (2003-03-03 13:12) [10]При обращение к значению поля используй явное преобразование типов (TDep.FieldByName("OProc").AsInteger:=0;), и проблем с инвалид вариант конвершен… не будет.
← →
Opuhshii (2003-03-03 13:29) [11]procedure TForm1.MyTableOnCalcFields(Sender:TObject);
begin
with TDataset(Sender) do begin
AutoCalcFields:=False;
{ Insert your Code here}
AutoCalcFields:=True;
end;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c