AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Was tun, wenn Datenfeld leer ist ?
Thema durchsuchen
Ansicht
Themen-Optionen

Was tun, wenn Datenfeld leer ist ?

Ein Thema von LingNeu · begonnen am 21. Apr 2007 · letzter Beitrag vom 20. Jun 2007
Antwort Antwort
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#1

Was tun, wenn Datenfeld leer ist ?

  Alt 21. Apr 2007, 10:50
Datenbank: Turbodb • Version: 5.1 • Zugriff über: kein SQL, normal über Dataset s.u.
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;
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 21. Apr 2007, 10:52
Ich kenne TurboDB nicht, aber versuch mal:
if not TdbaDaten['Typ'].isNull
Markus Kinzler
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 21. Apr 2007, 10:59
@mkinzler,

danke für die Hilfe ...
leider krieg ich :
"Leider ungültige Variant-Operation"

ciao
LingNeu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 21. Apr 2007, 11:13
Zeig mal den (neuen) Code
Markus Kinzler
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#5

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 23. Apr 2007, 09:33
Zitat von mkinzler:
Ich kenne TurboDB nicht, aber versuch mal:
if not TdbaDaten['Typ'].isNull
Diese Art der Prüfung geht nicht, dafür aber das hier:
Delphi-Quellcode:
  if not VarIsNull(TdbaDaten['Typ']) then
  ...
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 23. Apr 2007, 10:00
@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
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
bluemagicon

Registriert seit: 19. Jun 2007
4 Beiträge
 
#7

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 19. Jun 2007, 16:55
@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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 19. Jun 2007, 17:09
Es gibt min. 3 Varianten, um festzustellen, ob ein Feld NULL enthält
Delphi-Quellcode:
// #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
Wenn man einen String aus einem Feld auslesen möchte, bei dem die Möglichkeit besteht,
dass das Feld auch NULL sein kann bietet sich folgendes an:
Delphi-Quellcode:
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
Damit wird die Exception "Ungültige Variantumwandlung" vermieden.
Andreas
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 20. Jun 2007, 13:57
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
Heiko
  Mit Zitat antworten Zitat
bluemagicon

Registriert seit: 19. Jun 2007
4 Beiträge
 
#10

Re: Was tun, wenn Datenfeld leer ist ?

  Alt 20. Jun 2007, 15:16
Habs jetzt mit fieldbyname gemacht. Ist denke ich mal die beste, einfachste und kürzeste Lösung. Vielen dank nochmal.
Gruß..Bluemagicon
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz