Dezember 07, 2021, 13:02:31

Neuigkeiten:

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


Dsum mit Autowert

Begonnen von ReneB, November 22, 2021, 11:13:04

⏪ vorheriges - nächstes ⏩

ReneB

Hallo Leute,

ich wüsste gern, ob man einen Autowert als Vergleichskriterium in Dsum verwenden kann. Aktuell bekomme ich eine Fehlermeldung, wenn kein Vergleichswert in der Tabelle gefunden wird.

Mein Code lautet: If Me.ID <> "0" And Me.Tonnage > DSum("Tonnage", "AuftraegeVerpackt_tbl", "BNr=" & Me.BNr) Then...
Fehler 3075 fehlender Operator in BNr. Ich denke das es am Autowert liegt. Wenn ein Wert in der Tabelle gefunden wird, läuft der Code ohne Probleme.

Kann mir da jemand weiterhelfen?

Danke
Rene

derArb

Hallo,
hast Du Dir schon mal die Nz-Funktion angeschaut?

MzKlMu

Hallo,
ein Autowert kann ja nicht 0 sein, er kann auch nicht "0" sein und Null (Nix/Leer) auch nicht.
Sobald in einem Datensatz in ein Feld etwas eingeben wird, ist wird der Autowert erzeugt.
Wozu willst Du dann die ID prüfen ?
Was ist denn BNr für ein Datentyp in der Tabelle ?
Bitte mal die Zusammenhänge genauer erläutern.
Gruß
Klaus

PhilS

Zitat von: ReneB am November 22, 2021, 11:13:04Mein Code lautet: If Me.ID <> "0" And Me.Tonnage > DSum("Tonnage", "AuftraegeVerpackt_tbl", "BNr=" & Me.BNr) Then...
Fehler 3075 fehlender Operator in BNr. Ich denke das es am Autowert liegt.
Das liegt daran, dass Me.BNr leer (Null) ist und somit ein Syntaxfehler im Kriterium entsteht.

Abhilfe könnte die NZ-Funktion schaffe, wie von derArb angemerkt.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ReneB

Hallo Leute,

Die BNr ist vom Typ Autowert und wird beim speichern des Datensatzes erzeugt. Bevor gespeichert wird, soll in einer bestimmten Transaktion geprüft werden, ob unter dieser Nummer bereits ein Datensatz mit einer Tonnage X existiert.

Das Problem ist, daß die BNr noch leer ist, wenn ich prüfe. Ich habe meine Datenbank so umgebaut, daß automatisch eine 0 in das Feld geschrieben wird, wenn ich einen neuen Datensatz anlege. Jetzt gibt es keine Fehlermeldung mehr. Die NZ Funktion hatte ich ausprobiert, hatte aber nix geholfen.

Hoffe das Problem so gelöst zu haben.

Danke Euch für eure Unterstützung.

Schöne Grüsse

Rene

DF6GL

November 22, 2021, 15:04:30 #5 Letzte Bearbeitung: November 22, 2021, 15:11:38 von DF6GL
Hallo,

ZitatBevor gespeichert wird, soll in einer bestimmten Transaktion geprüft werden, ob unter dieser Nummer bereits ein Datensatz mit einer Tonnage X existiert.


Diese Prüfung ist an sich unsinnig.

Der neue Autowert ist vor dem Speichern in der DB noch nicht existent und kann demzufolge auch nie gefunden werden.

Zudem ist ein Autowert in einer Tabelle einzigartig und kann darin nicht mehrmals vorkommen.

ZitatIch habe meine Datenbank so umgebaut, daß automatisch eine 0 in das Feld geschrieben wird,

Was wurde hierbei umgebaut ? Einem Autowertfeld kann man nicht einfach so eine Zahl (0) zuweisen.



Es böte sich das Form_BeforeUpdate-Ereignis an, um dabei die Summe der vorhandenen Tonnagen zu berechnen und mit der aktuell angebenen Tonnage zu vergleichen.

Gegenenfalls bricht man das Ereignis mit Cancel = True ab.

MzKlMu

Hallo,
ZitatDie BNr ist vom Typ Autowert
ziemlich verwirrend alles, was ist dann die ID die auf 0 geprüft wird ?
Gruß
Klaus

ReneB

Hallo Leute,

leider ist es etwas schwierig grundsätzlich zu erklären, welche Transaktionen über diese Datenbank ausgeführt werden. Ich wollte es auch nicht zu kompliziert machen und nur eine Lösung für mein aktuelles Problem.
Grundsätzlich ist es aber so, daß es eine Eingabmaske gibt, in welcher Produktionsmengen angelegt und gespeichert werden. Beim Speichern wird die BNr (Autowert angelegt).
Über diese Eingabemaske werden im Nachgang die gebuchten Produktionsmengen bestimmten Aufträgen zugeordnet und jetzt ist es wichtig zu prüfen, ob ausreichend Tonnage vorhanden ist. Da diese Prüfung an den Speichern-Button gebunden ist, prüft das System allerdings zweimal. Einmal bei der ersten Buchung (hier hatte ich das Problem mit der noch fehlenden BNr(Autowert) und ein zweites Mal bei der Zuordnung (hier gab es nie ein Problem, da die BNr vorhanden und somit ein Vergleichswert existent ist).
Für einen Aussenstehenden ist das sicher nicht zu verstehen und wahrscheinlich könnte man den Aufbau der Datenbank auch anders gestalten, aber soweit reicht mein Wissen leider nicht und deshalb bin ich froh, wenn ich die anfallenden Probleme irgendwie lösen kann, wenn auch nicht optimal. Aktuell ist das Problem gelöst und die DB macht exakt das was sie soll.

Den Vorschlag mit dem Before update Ereignis probier ich aus. Das hatte ich nicht auf dem Schirm, klingt aber gut.

Ich danke Euch für Eure Anmerkungen und Vorschläge.

Schöne Grüsse

Rene