Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сравнение с 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 тра-та-та...


Наверх

Титульная страница Поиск, карта сайта Написать письмо