maik87
Goto Top

Problem mit logischen Feldern

Hallo,

ich habe ein Problem mit logischen Feldern:
Ich möchte ein Feld names Loeschen auf 1 setzen, wenn zwei andere Felder 0 sind.

Hier mein Versuch:
Loeschen: Wenn([standart]=0 Und [neu]=0;"1";"0")  

Sind standart und neu 0, dann löschen 1, sont 0.

Hier mein Ergebnis:
Standart Neu Ergebnis Beurteilung
1 1 0 Richtig
1 0 0 Richtig
0 0 #Fehler falsch
0 1 #Fehler falsch

Ich muss dazu sagen:
Standart: das Feld ist berechnet in einem Oracle-View auf den ich die Access-DB verknüpft habe
Neu: Berechnetes Feld in einer übergeordneten Abfrage in Access


Kann mir jemand sagen, wo der BUG ist?

Danke schonmal

Content-ID: 135090

Url: https://administrator.de/contentid/135090

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

Biber
Biber 03.02.2010 um 16:48:58 Uhr
Goto Top
Moin Maik97,

auf die Frage nach dem Bug die ehrliche Antwort: keine Ahnung.
Ich habe schon in deinem letzten Thread nicht wirklich verstanden, welchen Syntaxkriterien dieses Klicki-Assi-Krams folgt.

Wieder zwei Hypothesen:
  • entweder es scheitert daran, dass das Feld [neu] nicht immer numerisch ist (sondern auch mal NULL sein kann) ->dann musst du eh zusätzlich auf NULL prüfen
  • oder aber beide Felder sind definitiv numerisch (0 oder 1)... dann kannst du statt einer "logischen" AND-Prüfung doch einfach auf "Summe-beider-Felder-gleich-0" prüfen.

Also einfach
statt: Wenn([standart]=0 Und [neu]=0;"1";"0")

neu: Wenn([standart] +[neu]=0;"1";"0")

Trotz alledem.... ich finde keine rechten sprachlichen Zugang zu diesem.... generierten.
Ich wäre schon längst auf "SQLCode bearbeiten" gegangen.

Grüße
Biber
Maik87
Maik87 03.02.2010 um 17:21:22 Uhr
Goto Top
Hi Biber,

zunächst danke für deinen Versuch!

Zitat von @Biber:
  • entweder es scheitert daran, dass das Feld [neu] nicht immer numerisch ist (sondern auch mal NULL sein kann) ->dann musst du
eh zusätzlich auf NULL prüfen

Die Felder sind IMMER gefüllt und immer als String, heißt "0" oder "1"
Soll so sein, ist auch getestet, dass es wirklich so ist!

* oder aber beide Felder sind definitiv numerisch (0 oder 1)... dann kannst du statt einer "logischen" AND-Prüfung
doch einfach auf "Summe-beider-Felder-gleich-0" prüfen.

Es ist wirklich ein string den man nicht addieren kann! Leider
Biber
Biber 03.02.2010 um 17:30:08 Uhr
Goto Top
Moin maik87,

ja, aber... du prüfst doch gar nicht auf einen String in den Feldern [standart] und [neu], sondern auf (numerisch) 0.

Sonst müsste es doch lauten:
...Wenn([standart]="0" Und [neu]="0";"1";"0")

??

Grüße
Biber
hybadd
hybadd 04.02.2010 um 20:21:40 Uhr
Goto Top
Meines Wissens wird in Acces der logische Wert "ja" mit -1 dargestellt. Versuche doch mal -1 zuzuweisen.
Biber
Biber 04.02.2010 um 20:53:18 Uhr
Goto Top
Moin hybadd,

Zitat von @hybadd:
Meines Wissens wird in Acces der logische Wert "ja" mit -1 dargestellt. Versuche doch mal -1 zuzuweisen.
Ja, schon...
Aber irgendwie reden wir jetzt schon zu dritt aneinander vorbei... face-wink

Ich versuch noch mal zusammenzufassen (was bei mir angekommen ist)
Zwar hat maik87 ganz oben gepostet:
Loeschen: Wenn([standart]=0 Und [neu]=0;"1";"0")
Sind standart und neu 0, dann löschen 1, sont 0.
---> aber später stellt sich heraus, das [standart] und [neu] zwei CHAR(1)-Felder mit den erlaubten Werten "0" und "1" sind.

Als Ergebnis soll laut dem Klick-Bunti-Assi ebenfalls eine "0" oder "1" geliefert werden (nicht WAHR (intern -1) oder FALSCH (intern 0) )

Daraufhin, wenn also [standart] und [neu] NICHT numerische Werte sind, wie zunächst angenommen, verstieg ich mich zu dem Vorschlag
...Wenn([standart]="0" Und [neu]="0";"1";"0")

...den ich heute sogar so schreiben würde:
...Wenn([standart] & [neu]="00";"1";"0")
Sprich: wenn die Feldinhalte von [standart] und [neu] konkateniert (zusammengeklatscht) sind, kann ich auf 'String ist "00"' prüfen.

Wo ich dir Recht gebe: Wenn er WAHR/FALSCH zurückhaben will, dann sollte er -1/0 nehmen oder aber (noch sicherer) (1=1) für TRUE und (1=2) für FALSE.

@Maik87
Liest du noch mit?

Grüße
Biber
Maik87
Maik87 10.02.2010 um 09:19:13 Uhr
Goto Top
Ja tu ich...
Sry hatte viel zu tun.

Kanns leider grad nicht testen, da ich mal wieder wo anders im Einsatz bin und die Datenbank nicht vorliegen hab. Melde mich wenn ich mehr weiß!


Gruß