PDA

Vollständige Version anzeigen : Eingabefehler abfangen


Julietta
24.10.2003, 10:04
Hallo, ich bins nochmal...
ich bin gerade am Verzweifeln..
In meinem Programm möchte ich jetzt Fehler abfangen..
denn bisher muss man im Eingabeformular alle Textfelder auch füllen, sonst meckert Access beim Auslesen der Werte in Variablen.
Die Variablen dürfen nicht Null sein.
Jetzt habe ich mehrere Ideen..
1. Mit Nz(Textfeld,0) den Wert auf 0 setzen und dann in einer If-Verzweigung alle Felder darauf prüfen und einen angepassten SQL String dahinterschreiben, bei dem in dem 0 Feld Null übergeben wird.
Das wird aber ganz schön viel Schreibarbeit, bei 5 Feldern, die keine Pflichtfelder sind, also unheimlich viele Verzweigungen
Feld 1 ,2,3,4,5 = 0 oder 1,2,3,4 = 0 und so weiter...
2. Die Variablen als Typ Variant deklarieren, dann ist ja Null anscheinend erlaubt. Aber die Variable verbraucht viel mehr Platz..

Gibt es da nicht eine ganz kurze Lösung???
Ich wäre sooo dankbar für einen Tip
Julia

Bärbel Ritzi
24.10.2003, 10:18
Hallo Julietta,

um welchen Datentyp geht es?

Bei Textfeldern kannst Du bei der Definition der Felder einer Tabelle die Eigenschaft "Leere Zeichenfolge" auf ja setzen.

Bei Zahlenwerten kannst du in der Tabellendefinition oder im Formular einen Standardwert (z.B. 0) vorgeben.

Gruß
Bärbel

Julietta
24.10.2003, 10:36
Hallo...
Ich kann Null in die Tabelle hineinschreiben...
Wenn ich im SQL String einem Tabellenfeld den Wert Null zuweise, dann funktioniert das auch.

Mein Problem ist, dass ich ein Textfeld, das Null enthält, nicht in eine Variable auslesen kann.
Variable = Me!txtHallo
gibt eine Fehlermeldung, wenn Me!txtHallo Null ist.
Ich könnte höchstenst die Variable als Variant deklarieren, aber wie gesagt, die braucht ja viel mehr Platz als die Integer oder String Variable.
Ich könnte natürlich auch in alle Felder in der Tabelle statt Null eine 0 hineinschreiben, aber das ist auch unsauber, oder?
Vielen Dank
Julia

Johnny Loser
24.10.2003, 10:46
Also ob eine Variable des Typs Variant mehr Platz braucht oder nicht wird doch - wenn überhaupt - erst dann interessant, wenn es sich um globale Variablen handelt.

Was hast Du eigentlich mit den in die Variablen gepeicherten Werten vor?

Nouba
24.10.2003, 10:51
Variable = Nz(Me!txtHello, vbNullString) wäre vermutlich auch eine Möglichkeit.

Julietta
24.10.2003, 11:30
Hallo, vielen Dank für Eure Antworten..
@Johnny: Die Variablen liefern in einem SQL String die Werte, die in die Datenbank geschrieben werden.
und Variant braucht 16 Byte, String 10, Integer 2...
ist wirklich nicht soo ein großer Unterschied..

@Nouba: Habe ich dann Null in dem Feld stehen, wenn ich es so mache, oder einen leeren String?
Julia

Bärbel Ritzi
24.10.2003, 11:34
Hallo Julietta,

sorry, bin jetzt erst wieder da, aber Nouba scheint ja auf dem richtigen Weg zu sein.

Gruß
Bärbel

Julietta
24.10.2003, 11:37
Das mit dem Nullstring geht, aber dann habe ich wirklich als Variableninhalt "".
Ist das sehr schlimm, wenn man in einem leeren Tabellenfeld "" statt Null drinstehen hat?
Ich habe da nur an den Platz gedacht..
Julia

Nouba
24.10.2003, 11:45
Wie Johnny schon sagte, ist es schwer, Empfehlungen für irgendetwas zu geben, wenn das Ziel unbekannt ist.

Ich habe nur allgemein aufzeigen wollen, wie in eine Zeichenkettevariable der Wert eines Textfelds eingelesen werden kann. Umgekehrt könntest Du den Variableninhalt auf "" prüfen und ggf. Null dem Tabellenfeld zuweisen.

Wenn Null-Werte zugelassen sind ist Variant der richtige Variablentyp.

OT: In MySQL benötigen Datenfelder, die Nullwerte beinhalten dürfen, sogar etwas mehr an Speicherplatz. Wie sich Access da verhält entzieht sich meiner Kenntnis.

Julietta
24.10.2003, 11:57
Hallo,
dann werde ich das jetzt mit einer Mischform machen, bei Stringwerten mit Nz und sonst mit Variant.
Es ging darum, mit den Variablen, als Teil eines SQL Strings einen Datensatz in der Tabelle zu aktualisieren.
Vielen Dank für Eure Hilfe
Julia