Letzten Wert ausgeben

Hallo!
Folgendes Problem:
Ich habe eine Abfrage erstellt. Nun kann es sein, dass in einem Feld nichts steht. Wenn dies der Fall ist, so soll der Wert des gleichen Feldes aus dem letzten Datensatz eingefügt (angezeigt) werden.

Nach dem Motto:
=wenn([Feld1]="";letzter Wert([Feld1]);[Feld1]) oder
=wenn([Feld1] ist null;letzter Wert([Feld1]);[Feld1])

Leider hat dies nicht funktioniert. Wer kann weiterhelfen?
Vielen Dank im voraus!

Jörg

=wenn(Istnull([Feld1]);„nix“;[Feld1])

bzw., wenn du zum Gürtel noch einen Hosenträger brauchst:

=wenn(NZ([Feld1];"")="";„nix“;[Feld1])

aber was ist „letzter Wert“? Ggf kannst du die DomMax-Funktion verwenden:

=wenn(NZ([Feld1];"")="";DomMax(„Feld1“;„meineTabelle“);[Feld1])

Reinhard

Hallo Reinhard!
Vielen Dank erst einmal für Deine Antwort!
Leider ist dies nicht die Lösung. Ich habe mich wohl falsch ausgedrückt! ***sorry***
Es soll nicht der letzte Wert ausgegeben werden, sondern der VORHERIGE.
Hast Du auch hierfür eine Lösung?

Jörg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Dazu gibt es wohl keine fertige Lösung. Du müsstest dir eine Funktion schreiben, die den vorherigen Wert liefert. Wie die genau aussehen muss, hängt davon ab, wie der jeweils vorherige Wert bzw. Datensatz gekennzeichnet ist, z.B. etwa so:

public function VorherigerWert(ID as Long)
Dim db as databasee, rs as recordset
Set db = currentdb
set rs = db.openrecordset("MeineTabelle",dbopensnapshot)
if not rs.eof then
 rs.findfirst "ID = " & ID
 if not rs.nomatch then
 rs.moveprevious
 VorherigerWert = RS!MeinFeld
 end if
end if
rs.close
end function

Reinhard

Hallo Reinhard!
Vielen Dank für die Antwort.
Allerdings habe ich noch zweit Fragen:
a) Ist es möglich, in einer Abfrage eine Tastenkombination durchzuführen? Und wenn ja, wie?
b) Wie kann ich Deine Funktion in der Abfrage einbinden?

Nochmals vielen Dank und ein schönes Wochenende!
Jörg

Hallo Reinhard!
Vielen Dank für die Antwort.
Allerdings habe ich noch zweit Fragen:
a) Ist es möglich, in einer Abfrage eine Tastenkombination
durchzuführen? Und wenn ja, wie?

Nein, das geht nicht - dafür gibt es Formulare!

b) Wie kann ich Deine Funktion in der Abfrage einbinden?

Indem du ein berechnetes Feld in der Abfrage anlegst, also unter „Feld“ im Abfrageentwurf schreibst:

MeinFeld: VorherigerWert([ID])

Für „ID“ solltest du den Primärschlüssel deiner Tabelle einsetzen!

Reinhard

dass man die in Access ja eingebaute Funktion der Übernahme eines Werts aus dem letzten Datensatz nicht im Code ansprechen kann. Wieso geht im Code nicht, das mit den Fingern geht: Strg # ???
Werd ich nie verstehn. Allerdings wenn Du als Access-Guru es nicht weißt, wer dann?
Gruß, Richard

Nun ja…
die Bedieneroberfläche leistet so manches, das programmtechnisch nicht oder nur schwer zugänglich ist. Einiges davon kann man z.B. über Sendkeys oder Docmd.RunCommand emulieren - aber eine saubere programmtechnische Lösung ist das natürlich nicht. Im Code sollte man sich besser nicht auf die Oberfläche beziehen, sondern echte Datenbankobjekte verwenden. (Was aufgrund der kruden Objektstruktur von Access leider nicht immer geht - aber das ist ein anderes Thema…)

Reinhard

Indem du ein berechnetes Feld in der Abfrage anlegst, also
unter „Feld“ im Abfrageentwurf schreibst:

MeinFeld: VorherigerWert([ID])

Für „ID“ solltest du den Primärschlüssel deiner Tabelle
einsetzen!

Ich glaub, ich muss noch einmal stören **sorry**
Die Funktion habe ich soweit geschrieben.
Wenn ich Deine Funktion folgend ändere, passiert nichts:

rs.findfirst " **nr** = " & ID



"Meine Tabelle"

und

MeinFeld

habe ich natürlich auch geändert.

Der Wert soll aus einem Textfeld übernommen werden. Liegt hier evtl. das Problem?
[nr] hat den Primärschlüssel und das Feld
[Station] (Text) soll den Wert des vorherigen Feldes übernehmen. Dort gibt es dann auch immer eine Fehlermeldung.

[email protected] :smile:

Sollte eigentlich schon gehen…

„Nr“ ist hoffentlich ein ganzzahliges Feld (Autowert oder Long)?
„Station“ ist in der Tabelle vorhanden?

Welche Fehlermeldung erhältst du?

Debugge doch mal die Funktion - setze einen Haltepunkt, schau dir die Variableninhalte an… (Das geht schlecht per Ferndiagnose ;=)

Reinhard