Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Xoar am November 12, 2015, 20:07:01

Titel: dynamischer Datensatzbereich
Beitrag von: Xoar am November 12, 2015, 20:07:01
Hallo,

evt habt ihr ja eine pragmatischere Lösung für Problem.

Folgendes:
Ich habe Datensätze im Endlosformular, diese kann ich über eine Schaltfläche drucken.
Jetzt hab ich es über ne Abfrage so geregelt, dass nur die Datensätze angezeigt werden die nach dem letzten "drucken" erstellt wurden.

Dabei wird die höchste ID(Autowert) beim Zeitpunkt des druckens über eine Aktualisierungsabfrage bei allen Datensätze in ein Feld namens "lastID" eingetragen.
(ermitteln tue ich den Wert, indem ich den letzten DS anwähle und die ID in LastID kopiere)

Alle DS zwischen lastID und ID werden nun angezeigt und bei Bedarf ausgedruckt.

Diese Methode ist allerdings fehleranfällig.

Da gibt es doch bestimmt ne effektivere Lösung, oder auch viele...


Um es zusammen zu fassen:
Es sollen immer die Datensätze angezeigt werden die NACH dem betätigen der Schaltfläche "drucken" erstellt werden. Beim nächsten "drucken" werden halt wieder alle neuen Datensätze angezeigt.

Grüße
Titel: Re: dynamischer Datensatzbereich
Beitrag von: MzKlMu am November 12, 2015, 20:13:07
Hallo,
die lastID in alle Datensätze einzutragen ist doch überflüssig. Speichere in einer extra Tabelle den höchsten Autowert des letzten Druckvorgangs.

Vor dem nächsten Druck diesen Wert auslesen (es steht ja nur ein Wert in der Tabelle) und die Datensätze drucken, deren Autowert höher ist als der zuletzt gespeicherte.
Titel: Re: dynamischer Datensatzbereich
Beitrag von: Xoar am November 13, 2015, 17:15:10
ja das stimmt, gute Idee
Titel: Re: dynamischer Datensatzbereich
Beitrag von: Xoar am November 13, 2015, 19:42:48
mhh kleines Problem....

und zwar sind die beiden Tabellen ja nicht verknüpft, das bedeutet ich kann keine neuen Datensätze im Formular mehr anfügen (Datensatzherkunft ist ja die dynamische Abfrage). Ich find auch keine logische Verknüpfung die passt.

Hab bissel nachgelesen, es soll wohl so ne "Non-Equi-Join" Verknüpfung geben, aber die bekomm ich nicht hin. :/

Das ist der SQL Code
SELECT tblbuch.ID, tblbuch.Datum, tblbuch.Uhrzeit, tblbuch.Eintragung, tblbuch.Verfasser, tblbuch.gesperrt
FROM tblbuch, tblDruckID
WHERE (((tblbuch.ID)>[tblDruckID]![DruckID]))
ORDER BY tblbuch.ID;


Die Access Verknüpfungen passen ja nicht, da ja ich ja keine übereinstimmenden Datensätze für beide Tabellen habe.

zufällig eine Idee?  :o
Titel: Re: dynamischer Datensatzbereich
Beitrag von: MzKlMu am November 13, 2015, 19:53:42
Hallo,
die Tabellen dürfen nicht verknüpft sein, warum auch ? Das habe ich auch nicht geschrieben.
Du speicherst mit einer Aktualisierungsabfrage die letzte gedruckte ID.
In der Where Klausel der Haupttabelle beziehst Du Dich auf diesen Wert.

SELECT id,
       datum,
       uhrzeit,
       eintragung,
       verfasser,
       gesperrt
FROM   tblbuch
WHERE  id > Dlookup("druckid", "tbldruckid")
ORDER  BY id


In der Tabelle tbldruckid darf immer nur ein Datensatz stehen, nämlich die zuletzt gedruckte ID.
Titel: Re: dynamischer Datensatzbereich
Beitrag von: Xoar am November 13, 2015, 20:12:26
ja so klappt es tatsächlich, DANKE

Durch dlookup kann ich mich auf die andere Tabelle beziehen, da war mein Fehler, ich wollte das Tabellenfeld DIREKT auswerten.

Gut zu wissen  ;)