![]() |
Datenbank: Turbodb • Version: 5.1 • Zugriff über: kein SQL, normal über Dataset s.u.
Was tun, wenn Datenfeld leer ist ?
Liebe Delphigemeinde
eine vorhandene Datenbank (> 50000 DS) mit folgenden Feldern: Typ: string Bezeichnung: string Nr: integer soll durch einen Import von einer anderen Tabelle um weitere 50000 DS erweitert werden. Das hat auch einwandfrei funktioniert. Später muss im Programm über eine Schleife eine Nr eingespeichert werden. Leider wird beim Import das Feld Typ nicht angesprochen und bleibt somit leer. Bei der späteren Schleife erhalte ich dann ab den neuen, eingefügten DS folgende Fehlermeldung: "Variante des Typs(Null) konnte nicht in Typ String konvertiert werden" Es liegt sozusagen an den leeren Datenfeldern in diesen Datensätzen. Wie kann ich jetzt nachträglich diese Datensätze z.B. mit einem leeren String auffüllen, damit dann bei der Schleife keine Fehlermeldung kommt. Wäre wirklich sehr, sehr dankbar für einen Hinweis. Schönen Gruß LingNeu
Delphi-Quellcode:
while not TdbaDaten.Eof do
begin TdbaDaten.Edit ; if TdbaDaten['Typ'] <> ''then begin // keine Änderung im Feld Nr end else begin TdbaDaten['Nr'] := 20042007; //Feld ändern TdbaDaten['Typ'] := 'Neu'; end; TdbaDaten.Post ; //DS speichern TdbaDaten.Next; //springe weiter end; |
Re: Was tun, wenn Datenfeld leer ist ?
Ich kenne TurboDB nicht, aber versuch mal:
Delphi-Quellcode:
if not TdbaDaten['Typ'].isNull
|
Re: Was tun, wenn Datenfeld leer ist ?
@mkinzler,
danke für die Hilfe ... leider krieg ich : "Leider ungültige Variant-Operation" ciao LingNeu |
Re: Was tun, wenn Datenfeld leer ist ?
Zeig mal den (neuen) Code
|
Re: Was tun, wenn Datenfeld leer ist ?
Zitat:
Delphi-Quellcode:
if not VarIsNull(TdbaDaten['Typ']) then
... |
Re: Was tun, wenn Datenfeld leer ist ?
@raiguen
vielen Dank für den Tipp. Hat jetzt geklappt. In Zukunft weiß ich Bescheid und werde evtl. die externen Daten schon vorher etwas besser aufbereiten. Da hab ich mal wieder mein geliebt/gehasstes Access für solche Fälle entdeckt. Damit kann man ganz gut die ollen DOS-Daten gut aufbereiten. Merci nochmals an Euch für die Hilfe ciao LingNeu |
Re: Was tun, wenn Datenfeld leer ist ?
@raiguen,
Super! Danke auch von mir für die Antwort. Hat mir sehr weitergeholfen. Dennoch wüsste ich gerne, warum das so ist?! Warum kann denn nicht aus einem Datenfeld einen leeren String oder was auch immer auslesen? Würde mich echt mal interessieren. Gruß und tausend Dank! Bluemagicon |
Re: Was tun, wenn Datenfeld leer ist ?
Es gibt min. 3 Varianten, um festzustellen, ob ein Feld NULL enthält
Delphi-Quellcode:
Wenn man einen String aus einem Feld auslesen möchte, bei dem die Möglichkeit besteht,
// #1
if VarType(TdbaDaten['Typ']) = varNull then // #2 if VarIsNull(TdbaDaten['Typ']) then // #3 - diese Variante würde ich bevorzugen if TdbaDaten.FieldByName('Typ').IsNull then dass das Feld auch NULL sein kann bietet sich folgendes an:
Delphi-Quellcode:
Damit wird die Exception "Ungültige Variantumwandlung" vermieden.
var
typ : string; begin typ := TdbaDaten.FieldByName('Typ').AsString; // Variable "typ" enthält nun einen leeren String, wenn // a.) das Feld einen leeren String enthalten hat oder // b.) das Feld NULL enthalten hat |
Re: Was tun, wenn Datenfeld leer ist ?
Hallo,
das mit dem Öeerstring setzen würde auch über ne Query gehen Update Table set field='' where field is null Ist einfacher zu tippen . Heiko |
Re: Was tun, wenn Datenfeld leer ist ?
Habs jetzt mit fieldbyname gemacht. Ist denke ich mal die beste, einfachste und kürzeste Lösung. Vielen dank nochmal.
Gruß..Bluemagicon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz