[gelöst] Datentyp Variant, Auf NULL Prüfen

22. Januar 2008 09:34

Hallo,

ich arbeite mit einem ADORecSet.

Der Rückgabewert von
ADORecSet.Fields.Item( 'Feldname' ).Value
ist vom Datentyp Variant.

1. Kann ich irgentwie die Datentyp festlegen ?
so ala ADORecSet.Fields.Item( 'Feldname' ).Value.asIntgeger ?

2. Wie kann ich auf NULL Prüfen ?


gruss
Jörg
Zuletzt geändert von Jörg Nissen am 22. Januar 2008 17:06, insgesamt 1-mal geändert.

Re: Datentyp Variant, Auf NULL Prüfen

22. Januar 2008 09:41

Jörg Nissen hat geschrieben:2. Wie kann ich auf NULL Prüfen ?


Ich weiß zwar nicht einmal, was ADORecSet überhaupt ist, aber NAV-Felder werden (zumindest in SQL) nie als NULLs angelegt, sondern enthalten im leeren Zustand entweder einen Leerstring oder eine 0 (als Zahl).

22. Januar 2008 09:46

ich habe mir mal eine Funktion innerhalb eines Berichtes gebastelt, die diese Dinge abfragt. Ob es auch anders geht habe ich noch nicht herausgefuden.
Code:
F_NULL(VV_Feld : Integer) VV_Value : Text[120]

V_Feld_Name := '';
VV_Variant := ADO_Fields.Item(VV_Feld).Value;

IF VV_Variant.ISTEXT THEN BEGIN
   IF EVALUATE(VV_Text,FORMAT(ADO_Fields.Item(VV_Feld).Value)) THEN
      IF VV_Text <> '' THEN BEGIN
         VV_Value := FORMAT(ADO_Fields.Item(VV_Feld).Value);
         V_Feld_Name := FORMAT(ADO_Fields.Item(VV_Feld).Name);
      END;
END;

IF VV_Variant.ISDATE THEN BEGIN
   IF EVALUATE(VV_Date,FORMAT(ADO_Fields.Item(VV_Feld).Value)) THEN
      IF VV_Date <> 0D THEN BEGIN
         VV_Value := FORMAT(ADO_Fields.Item(VV_Feld).Value);
         V_Feld_Name := FORMAT(ADO_Fields.Item(VV_Feld).Name);
      END;
END;

IF VV_Variant.ISINTEGER THEN BEGIN
   IF EVALUATE(VV_Integer,FORMAT(ADO_Fields.Item(VV_Feld).Value)) THEN
      IF VV_Integer <> 0 THEN BEGIN
         VV_Value := FORMAT(ADO_Fields.Item(VV_Feld).Value);
         V_Feld_Name := FORMAT(ADO_Fields.Item(VV_Feld).Name);
      END;
END;

IF VV_Variant.ISTIME THEN BEGIN
   IF EVALUATE(VV_Time,FORMAT(ADO_Fields.Item(VV_Feld).Value)) THEN
      IF VV_Time <> 0T THEN BEGIN
         VV_Value := FORMAT(ADO_Fields.Item(VV_Feld).Value);
         V_Feld_Name := FORMAT(ADO_Fields.Item(VV_Feld).Name);
      END;
END;


CASE VV_Feld OF
   2,3: BEGIN
                       IF VV_Variant.ISDATE THEN BEGIN
                          IF EVALUATE(VV_Time,FORMAT(VARIANT2TIME(VV_Variant))) THEN;
                          VV_Value := VV_Value + ' '+FORMAT(VV_Time);
                       END;
                    END;
END;

Re: Datentyp Variant, Auf NULL Prüfen

22. Januar 2008 09:59

Moin Jörg!

Jörg Nissen hat geschrieben:1. Kann ich irgentwie die Datentyp festlegen ?
so ala ADORecSet.Fields.Item( 'Feldname' ).Value.asIntgeger ?

Ich würde das mal mit einer Variablen vom Typ Variant probieren. In etwa so:

Code:
Variant := ADORecSet.Fields.Item('Feldname').Value;
IF Variant.ISINTEGER THEN
  MESSAGE('Bla bla');

Variant-Variablen bieten viele Funktionen womit sich der Variableninhalt genauer klassifizieren lässt.

Gruß, Marc
Zuletzt geändert von Marc Teuber am 22. Januar 2008 17:20, insgesamt 1-mal geändert.

22. Januar 2008 17:05

Hallo,

Danke, hat geholfen

Jörg