Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

ADO Formular aktualisieren (Requery)

Begonnen von datekk, Februar 17, 2017, 08:04:39

⏪ vorheriges - nächstes ⏩

datekk

Hallo  :D

ich habe ein Endlosformular an einen ADO Recordset angebunden. Das Formular wird beim öffnen korrekt dargestellt. Allerdings wars das auch schon. Sobald Daten aktualisiert werden sollen (z.B. me.requery), fliegen die Daten aus dem Formular. Die Recordset Anbindung in die Current Ebene zu setzen funktioniert gleich gar nicht.

Nach einem Requery sind alle Daten weg und in der ersten Zeile steht in jeder Spalte nur '#NAME?'.

Wie kann ich die Daten also aktualisieren, also z.B. ein Requery durchführen oder Filtern?

Oder wäre es besser, den Ado RS vorher in ein DAO oder normalen RS zu überführen?

Danke.
LG
datekk.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

PhilS

Zitat von: datekk am Februar 17, 2017, 08:04:39ich habe ein Endlosformular an einen ADO Recordset angebunden.
[...]
Nach einem Requery sind alle Daten weg und in der ersten Zeile steht in jeder Spalte nur '#NAME?'.

Wie kann ich die Daten also aktualisieren, also z.B. ein Requery durchführen oder Filtern?
Die Frage lässt sich mit den bisherigen Informationen nicht beantworten.
Wie wird das ADO.Recordset erstellt?
Wie wird es an das Formular gebunden?

Zitat von: datekk am Februar 17, 2017, 08:04:39Oder wäre es besser, den Ado RS vorher in ein DAO oder normalen RS zu überführen?
Nein, ich sehe nicht, was das bringen sollte.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

datekk

ZitatWie wird das ADO.Recordset erstellt?

Durch eine Funktion, die ein ADODB Recordset zurück gibt.

Die Funktion (ADODBRecordset) hat als Grundlage eine Abfrage in der Variablen SQL. Diese wird in ein normales Recordset-Element übernommen.

Set rcs = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)

Dann wird ein ADODB Recordset aufgebaut. Die Felder des 'normalen' Recordset werden in den ADODB Recordset übernommen und zwei weitere Felder werden angefügt., Dann wird das ganze mit Daten gefüllt.

Die Funktion läuft in einem eigenen Modul.

Im Formular im Bereich Open wird der Recordset geholt mit

Dim sql As String
sql = "SELECT * From Kundenliste;"
Set Me.Recordset = ADODBRecordset(sql)

Hintergrund sind die beiden Felder die ich nur im Speicher zufügen und im Formular anzeigen möchte. Das klappt auch alles, bis auf die Aktualisierung (requery).
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

PhilS

Zitat von: datekk am Februar 17, 2017, 11:06:36Dann wird ein ADODB Recordset aufgebaut. Die Felder des 'normalen' Recordset werden in den ADODB Recordset übernommen und zwei weitere Felder werden angefügt., Dann wird das ganze mit Daten gefüllt.
Ähem, OK.
Wenn das Recordset aktualisiert werden soll, dann müsste ja dieser Prozess auch wieder durchlaufen werden. Dies durch einen einfachen Aufruf von Requery auszulösen ist etwas viel erwartet. Du müsstest hier also selbst die Aktualisierung ausprogrammieren, indem du genau diese Prozess wieder anstößt.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

datekk

Und wie? Und wo?

Einen erneuten Anstoß würde ja "Set Me.Recordset = ADODBRecordset(sql)" wieder auslösen. Aber wo muss ich das dann nochmal erledigen?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

PhilS

Zitat von: datekk am Februar 17, 2017, 15:02:29Einen erneuten Anstoß würde ja "Set Me.Recordset = ADODBRecordset(sql)" wieder auslösen. Aber wo muss ich das dann nochmal erledigen?
Ja, genau. Die Prozedur zum Laden der Daten musst du überall dort aufrufen, wo du vorher das Me.Requery schreiben wolltest.
Wenn du auch die Standard-Aktualisierung über die Tastatur ([CTRL]+[F9]) behandeln willst, muss du die Tastaturereignisse des Formulars entsprechend abfangen und behandeln.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

datekk

Ich danke Dir PhilS. Genau das ist die Lösung gewesen. Damit geht ja dann auch das Filtern. Ich habe die Variable 'sql' auf Modulebene gesetzt. Dann klappt das neu laden und Filtern super.

:)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps