Textfelder haben in Access die Eigenschaft "Leere Zeichenfolge"
(ja/nein). Diese setze ich immer auf "Nein", da sonst für leere Felder
ein Vergleich auf NULL und "" durchgeführt werden muss.
Allerdings mache ich das bei jedem Feld manuell, kann ich den Wert
"Nein" Wert nicht irgendwo als Standard definieren? Verwende Access 2000
bis 2003.
Viele Grüße,
Stefan
Stefan Dase schrieb folgendes:
IMO Nein.
Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de
3. SQL Server-Entwickler-Konferenz - Nürnberg im Mai
http://www.donkarl.com/?SEK
Schreib dir doch aber einfach eine Tool-Funktion, welche durch alle Tabellen
und deren Felder geht und dort die entsprechende Eigenschaft
fld.AllowZeroLength = False setzt.
danke für eure Antwort.
> Schreib dir doch aber einfach eine Tool-Funktion, welche durch alle Tabellen
> und deren Felder geht und dort die entsprechende Eigenschaft
> fld.AllowZeroLength = False setzt.
Das werde ich dann wohl so machen.
Viele Grüße aus Bremen,
Stefan
danke für eure Antwort.
> Schreib dir doch aber einfach eine Tool-Funktion, welche durch alle Tabellen
> und deren Felder geht und dort die entsprechende Eigenschaft
> fld.AllowZeroLength = False setzt.
Das werde ich dann wohl so machen.
Naja, da würde ich eher zur Vorsicht raten.
Es ist zwar auch bei mir so, dass ich tausendfach diese verdammte
Voreinstellung manuell geändert habe ab AX (vorher war sie auf False).
Manchmal braucht man allerdings auch den Wert auf True, z.B. wenn
man Daten mit anderen Systemen als Access/JET austauscht oder
verwaltet, die Leerstrings mitbringen.
Wer's dennoch machen will, findet in der KB quasi fertigen Code dafür,
witzigerweise für die umgekehrte Variante in A00:
ACC2000: How to Set AllowZeroLength Property to Yes in All Tables
http://support.microsoft.com/kb/210278/en-us
Den hier http://support.microsoft.com/kb/837147/en-us
finde ich auch recht "lustig".
--
cu
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
>> Schreib dir doch aber einfach eine Tool-Funktion, welche durch alle
>> Tabellen und deren Felder geht und dort die entsprechende Eigenschaft
>> fld.AllowZeroLength = False setzt.
>
> Naja, da würde ich eher zur Vorsicht raten.
> Es ist zwar auch bei mir so, dass ich tausendfach diese verdammte
> Voreinstellung manuell geändert habe ab AX (vorher war sie auf False).
> Manchmal braucht man allerdings auch den Wert auf True, z.B. wenn
> man Daten mit anderen Systemen als Access/JET austauscht oder
> verwaltet, die Leerstrings mitbringen.
Danke für den Hinweis. Allerdings haben wir kein System im Einsatz, dass
leere Zeichenfolgen benötigt, in Oracle z.B. ist "" identisch mit NULL.
In Access 2003 habe ich das immer manuell geändert, da die Abfrage auf
leere Feldern mit Leerstrings immer zwei Kriterien (NULL oder "") benötigt.
Interessanterweise hatte ich bei einem Import aus Excel heraus in einer
Textspalte mit der Eigenschaft "Leere Zeichenfolge := Nein" doch
wirklich "" als Wert. Hier scheint der Importassistent nicht sauber zu
arbeiten, denn manuell lies sich "Leere Zeichenfolge := Ja" einstellen,
anschließend aber nicht wieder auf "Leere Zeichenfolge := Nein"
zurücksetzen!
Viele Grüße nach Wien,
Stefan
Stefan Dase wrote:
>>> Schreib dir doch aber einfach eine Tool-Funktion, welche durch alle
>>> Tabellen und deren Felder geht und dort die entsprechende
>>> Eigenschaft fld.AllowZeroLength = False setzt.
>>
>> Naja, da würde ich eher zur Vorsicht raten.
>> Es ist zwar auch bei mir so, dass ich tausendfach diese verdammte
>> Voreinstellung manuell geändert habe ab AX (vorher war sie auf
>> False). Manchmal braucht man allerdings auch den Wert auf True, z.B.
>> wenn man Daten mit anderen Systemen als Access/JET austauscht oder
>> verwaltet, die Leerstrings mitbringen.
>
> Danke für den Hinweis. Allerdings haben wir kein System im Einsatz,
> dass leere Zeichenfolgen benötigt, in Oracle z.B. ist "" identisch
> mit NULL.
?
Ich hatte die zahlenmäßig häufigsten "Anwendungsfälle" bisher mit
Daten, die aus (per ODBC eingebundenen) Oracle-Tabellen
übernommen wurden. Kommt vielleicht auf die Felddefinition in
Oracle an.
> In Access 2003 habe ich das immer manuell geändert, da die Abfrage auf
> leere Feldern mit Leerstrings immer zwei Kriterien (NULL oder "")
> benötigt.
> Interessanterweise hatte ich bei einem Import aus Excel heraus in
> einer Textspalte mit der Eigenschaft "Leere Zeichenfolge := Nein" doch
> wirklich "" als Wert.
Joo, bei Importen aller Art bin ich traditionell vorsichtig mit dem
Ändern der AllowZeroLength-Eigenschaft. Da erlebt man öfter mal
Überraschungen. Daher die Warnung, jede Art von Datenaustausch
zu prüfen, wenn man das in der kompletten Anwendung ändern will.
> Hier scheint der Importassistent nicht sauber zu
> arbeiten, denn manuell lies sich "Leere Zeichenfolge := Ja"
> einstellen, anschließend aber nicht wieder auf "Leere Zeichenfolge :=
> Nein" zurücksetzen!
>
> Viele Grüße nach Wien,
--
Gruß retour an die Weser
>> (...) in Oracle z.B. ist "" identisch mit NULL.
>
> ?
> Ich hatte die zahlenmäßig häufigsten "Anwendungsfälle" bisher mit
> Daten, die aus (per ODBC eingebundenen) Oracle-Tabellen
> übernommen wurden. Kommt vielleicht auf die Felddefinition in
> Oracle an.
Wir arbeiten erst seit der 10g mit Oracle, aber sowohl dort als auch in
der 11g gibt es kein Property, um leere Zeichenketten zu speichern. In
PL/SQL schlägt der Vergleich "XYZ = ''" immer fehl, da "" wie schon
geschrieben in Oracle immer NULL ist, d.h. statt dessen muss man auf
"XYZ IS NULL" prüfen.
Zitat aus der Dokumentation: "Oracle Database treats a character value
with a length of zero as null."
Wenn du in Access stattdessen einen Leerstring erhälst, vermute ich eine
Umwandlung über die ODBC-Schnittstelle. Werde das bei nächster
Gelegenheit mal beobachten; bisher bin ich darüber nicht gestolpert.
Viele sonnige Grüße,
Stefan