Hallo zusammen,
ich steh mal wieder auf dem Schlauch.
Ich habe ein Endlosformular in das ich über eine Anfügeabfrage (Ausgelöst durch eine Schaltfläche) einen neuen Datensatz einfüge.
Nun möchte ich gerne dass nach dem Aktualisieren der neu angelegte Datensatz gefunden wird.
Das Endlosformular ist übrigens über die Abfrage sortiert.
Der neue Datensatz erscheint also nicht unten sondern irgendwo in der festgelegten Reihenfolge.
Das können schon einige Tausend DS sein.
Damit der User nicht immer wieder die Stelle suchen muss wäre es toll wenn es irgendwie klappen könnte.
so in etwa :
Me.Requery
Me.Refresh
Me.Recordset.FindFirst "Neuer Datensatz"
Ich finde da keine Lösung.
Hallo,
hat die Tabelle einen Autowert als Primärschlüssel?
Ein Datum tut es auch.
Du brauchst auf jeden Fall ein Merkmal über das der zuletzt eingegebene Datensatz zweifelsfrei erkennbar ist.
Zu was brauchst Du das überhaupt ?
Es sind ewig lange Listen in denen überwachungspflichtige Arbeiten Dokumentiert werden.
Genau gesagt Schweißnähte in einem sehr komplexen Rohrsystem.
Es gibt eine logische Zählweise die im Formular zwingend eingehalten werden muss.
Wenn die Schweißnaht (Der Datensatz) beim Prüfen durchgefallen ist und erneuert werden muss, wird dieser Datensatz kopiert und der neue DS wird mit einem Index versehen (Reparatur1)
Nun kann wieder geschweißt, geprüft und dokumentiert werden.
Der Alte Datensatz wird über ein Kriterium ausgeblendet und der neue nimmt dann seinen Platz ein.
Das kann z.B. die Naht 4000 von 8000 sein. Da nervt es natürlich wenn immer wieder zum 1. Datensatz gesprungen wird.
Ich hoffe, ich habe mich verständlich ausgedrückt.
Es gibt in der Tabelle eine ID mit Autowert
Hallo,
dann ist der zuletzt eingetragene Datensatz der mit dem höchsten Autowert.
Im einfachsten Fall sortierst Du per Button nach dem Autowert (absteigend) dann steht automatisch der zuletzt eingegebene Datensatz ganz oben. Das umsortieren kann auch per Doppelklick in eine Feld erfolegn.
Wenn Du für die Prüfungen eine extra Tabelle anlegst, entfällt die Kopiererei ersatzlos.
Eine erneute Prüfung wenn durchgefallen ist dann einfach ein neuer Datensatz.
wenn ich nach der ID-Nr. sortiere sind ja die Datensätze nicht mehr in der gewünschten Reihenfolge.
Die Reihenfolge soll (darf) sich nicht ändern
Der neue Datensatz fügt sich genau da ein wo der alte war (genau gesagt unter dem alten aber der wird ja ausgeblendet.
Gibt es eine Möglichkeit, dass irgendwie die neue ID-Nr eingelesen wird und nach dem Aktualisieren da hin gesprungen wird?
Irgendwie die neue ID einlesen
Me.Requery
Me.Recordset.FindFirst "ID=" & "neue ID"
oder so?
Hallo,
die neue ID lässt sich mit der Funktion DMax("IDName", "Tabellenname")
ermitteln.
Aber wie gesagt, Du solltest über eine weitere Tabelle für die Prüfungen nachdenken. Die Tabelle braucht dann einen FS zur Naht. Die Kopiererei entfällt dann ersatzlos und alles wird viel einfacher. Du hast auf einen Blick alle Prüfungen zu einer Naht.
Ich würde mir das überlegen.
Hallo Bernd,
die Lösung mit DMax() kann nur eine Notlösung sein und muß nicht funktionieren, wenn mehrere User gleichzeitig mit der DB arbeiten.
Hier ein Beispiel, wie so eine Lösung mit DAO aussehen könnte:
https://www.access-programmers.co.uk/forums/threads/how-to-get-last-inserted-id-in-a-table.253284/post-1292884 (https://www.access-programmers.co.uk/forums/threads/how-to-get-last-inserted-id-in-a-table.253284/post-1292884)
Gruß
Ulrich
Hallo Klaus,
die neue Naht muss in die Tabelle kopiert werden um anschließend einen kompletten Bericht mit allen Schweißungen ausdrucken zu können.
Die alte Naht hieß z.B.
Scheibe 1, Rohr 8, Naht 4
Die 1. Reparatur heißt dann
Scheibe 1, Rohr 8, Naht 4, R1
Dann
Scheibe 1, Rohr 8, Naht 4, R2
Es kann auch sein, dass es dann eine zusätzliche Schweißnaht gibt wenn eine Naht zu oft repariert wurde.
Dann wird an dieser Stelle ein sogenanntes "Passstück" eingesetzt.
Dann wird daraus
Scheibe 1, Rohr 8, Naht 4, P1-a
Scheibe 1, Rohr 8, Naht 4, P1-b (P für Passstück, a für die 1. naht des Passstücks und b für die zweite Naht.)
Alles muss im bericht logisch untereinander stehen mit allen Prüfungsergebnissen, Prüfdatum, Prüfverfahren.
Welcher Schweißer? Wurde eine Wärmebehandlung durchgeführt? u.s.w.
Bis zu 6 verschiedene Prüfungen können durchgeführt werden.
Klappt auch alles prima.
Ich habe das mit DMax ausprobiert und es funktioniert gut!
Es sind ohnehin lokale Datenbanken um uns auf den Baustellen nicht von schlechten Internetverbindungen ausbremsen zu lassen.
Das Beispiel mit DAO wird sicher auch funktionieren aber ich weiß nicht so recht wie ich das umsetzen soll.
Das ist für meine begrenzten Kenntnisse zu abstrakt.
Vielen Dank an euch
Hallo Bernd,
Zitat von: Bernd Sowa am November 28, 2024, 09:21:10die neue Naht muss in die Tabelle kopiert werden um anschließend einen kompletten Bericht mit allen Schweißungen ausdrucken zu können.
Da scheint etwas komplett schief zu laufen. Das sollte so nicht notwendig sein und läßt sich wahrscheinlich bei richtigem Datenmodell mit einer passenden Abfrage richtigstellen.
Zitat von: Bernd Sowa am November 28, 2024, 09:21:10Das Beispiel mit DAO wird sicher auch funktionieren aber ich weiß nicht so recht wie ich das umsetzen soll.
Wenn mehr Informationen vorliegen, könnte man dabei ja behilflich sein, aber es wundert mich dann schon, wenn DS gelöscht und kopiert werden, ein einfaches Select aber nicht ausgeführt werden kann.
Gruß
Ulrich
Hallo Bernd,
Zitatbei richtigem Datenmodell
Hinter diesem Hinweis von Ulrich steckt die Aufforderung an dich,
dein Datenmodell hier zu posten.
Die Hilfe wird damit leichter.
gruss ekkehard
Hallo,
je mehr Du erklärst (in #7), je mehr bin ich der Auffassung, dass das Datenmodell falsch ist. Mit der vorgeschlagenen extra Prüftabelle für die Prüfungen wärst Du besser bedient. Auch für die Passtücke sollte eine extra Tabelle angelegt werden.
Außerdem liese sich auch ein Bericht deutlich übersichtlicher gestallten Im Berichtskopf die Naht und im Detailbereich alle zur Naht erfolgetn Prüfungen und ggf. auch die Passstücke. Alles sehr einfach und übersichtlich.
Und die ganze Kopiererei und nachfolgende Positionierung entfällt ersatzlos.