Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Feldvergleich (Textfeld) zeigt auch Unterschied wenn beide leer sind

Begonnen von HabNeFrage, September 16, 2016, 11:42:43

⏪ vorheriges - nächstes ⏩

HabNeFrage

Hallo ich will zwei Felder vergleichen. Dabei will ich eine Veränderung zu einem vorherigen Stand ermitteln. Das schien mir leichter, als mit zuschreiben und so die Veränderungen zu ermitteln.
Die Felder sind 1:1 sowohl von Feldnamen, als auch vom Format. Habe die Tabellen nur kopiert und alles unnötige raus geschmissen, und neben die betreffenden Felder ein JA/NEIN Feld gesetzt. Wenn was verändert ist, setze ich das JA/NEIN auf Ja und gut....  :-\

Habe das so versucht:
Wenn([T_Stammdaten].[EQ Typbezeichnung]=[T_Stammdaten_Veraenderungen].[EQ Typbezeichnung];Nein;Ja)

Dann habe ich jedes Feld mit dem anderen verknüpft und über eine Änderungsabfrage gesagt, wenn Du gleich bist ändere den Wert in Nein. Hatte das Feld vorher mit Ja beschrieben.

Egal wie ich es anstelle, sind zwei Felder leer (dann hat sich ja nix geändert und beide sind ja gleich, wenn auch leer)
Es ist aber doch auch möglich das bei der Bearbeitung ein Feld geleert wurde, oder beide. Wenn eins leer ist, ok dann ist es ein Unterschied aber wenn beide geleert wurden...

Josef P.

Hallo!

"Leer" ist vermutlich Null. => Ein Vergleich mit Null ist nie gleich (aber auch nie ungeleich!).
Du könntest z. B. so prüfen: SQL-Code: IIF(A = B OR (A IS NULL and B IS NULL), ...

Beispiel (als VBA-Code zum Ausprobieren)
Dim X As Variant
Dim Y As Variant

X = Null
Y = "a"
' auch probieren:
'Y = Null

If X = Y Then MsgBox "X = Y" ' wird nicht angezeigt werden, wenn mind. eine Variable Null ist
If X <> Y Then MsgBox "X <> Y" ' wird nicht angezeigt werden, wenn mind. eine Variable Null ist
If Nz(X, "") = Nz(Y, "") Then MsgBox "Nz(X, """") = Nz(Y, """")" ' Umgehung mit "Ersatzwert" für Null
If Nz(X, "") <> Nz(Y, "") Then MsgBox "Nz(X, """") <> Nz(Y, """")" ' Umgehung mit "Ersatzwert" für Null
If IsNull(X) And IsNull(Y) Then MsgBox "X = Y, beide Null" ' Explicite Prüfung auf Null


mfg
Josef

HabNeFrage

#2
Ist erledig, habs bereinigen können.
sieht dann so aus:
Wenn([T_Stammdaten].[EQ Typbezeichnung] & [T_Stammdaten_Veraenderungen].[EQ Typbezeichnung] Ist Null;Nein;(Wenn([T_Stammdaten].[EQ Typbezeichnung]=[T_Stammdaten_Veraenderungen].[EQ Typbezeichnung];Nein;Ja)))

Ich kenne den Unterschied von leer und gelöscht... ist toll.
Da die Tabelle vor dem befüllen aber immer geleert wird, sind die Daten ja eh wech.

Boahhhh. Danke trotzdem ! :'(

HabNeFrage

Mensch Josef P,
sehe gerade Du hast Dich auch beteiligt, DANKE.
Es klappt so wie ich es oben geschrieben habe.

Kommt bestimmt noch was...  :D