Office: (Office 2003) DAO-Recordset einem Formular zuweisen

Helfe beim Thema DAO-Recordset einem Formular zuweisen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich erstelle aus Parameterabfragen ein Recordset. Das würde ich gerne einem Endlos-Formular zuweisen. Mein Versuch (allgemeines... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Marsu65, 1. September 2010.

  1. DAO-Recordset einem Formular zuweisen


    Hallo zusammen,

    ich erstelle aus Parameterabfragen ein Recordset. Das würde ich gerne einem Endlos-Formular zuweisen. Mein Versuch (allgemeines Modul):
    Code:
    blieb leider erfolglos. Der Code läuft ohne Murren durch, im Formular jedoch passiert nichts.

    :)
     
  2. Hallo!

    Wenn du die Datensätze im Formular sehen willst, solltest du das Recordset nicht schließen. *wink.gif*

    mfg
    Josef
     
    Josef P., 3. September 2010
    #2
  3. Hallo Marsu,

    Code:
    vs.

    Code:
    Oder habe ich das falsch interpretiert? *eek.gif*
     
  4. DAO-Recordset einem Formular zuweisen

    Hallo,

    Du solltest Deinen Code in das Modul des Formulars verschieben. Dadurch erreichst Du, dass die Recordset-Variable beim Schließen des Formulars ebenfalls terminiert wird. Zur Sicherheit könntest Du aber auch noch Code in das Unload-Ereignis des Unterfomulars einfügen, der das recordset schließt und die Variable freigibt.

    CU
     
    Thomas Möller, 3. September 2010
    #4
  5. Danke, sehr einleuchtend *biggrin.gif*
    Heißt das, dass die Recordsetinstanz die ganze Zeit erhalten bleiben muss? Ich hatte mir das so vorgestellt, dass quasi eine Kopie im Formular erstellt wird, die dauerhaft überlebensfähig ist. [EDIT]auch wenn das Ursprungsrecordset geschlossen wird [/EDIT]

    @maxel es geht schon wirklich um das RECORDSET, nicht um die Datenherkunft (Recordsource) *wink.gif*
     
  6. Hallo Thomas,
    das ganze ist noch ein Test. In der Endanwendung sollen so 7 UFOs variable aus dem HF gefüllt werden. Verschieben kann ich das somit in das HF, aber nicht in die UFOs.
     
  7. Hallo Marsu,

    ich habe gerade noch etwas experimentiert. Folgender Code funktioniert:
    Code:
    Damit erreichst Du, dass die Recordset-Variable zurückgesetzt wird. Eine Kopie Deines Recordsets lebt im Formular weiter und wird automatisch vernichtet, wenn das Formular geschlossen wird.

    HTH
     
    Thomas Möller, 3. September 2010
    #7
  8. DAO-Recordset einem Formular zuweisen

    Erst mal perfekt! War ich zu ordentlich beim Aufräumen (passiert selten *biggrin.gif*)

    Werde mal beobachten, ob die DB wegen des fehlenden close wächst.
    Das ganze soll mal einer Formularaktualisierung dienen. Daten für UFO holen, mit aktuellem Recordset vergleichen und nur wenn die RS nicht identisch sind soll das Formular aktualisiert werden.

    Thomas, danke dir und allen Beteiligten.
     
  9. Leider, trat wie befürchtet der unerwünschte Nebeneffekt auf, dass sich die DB aufbläht.

    Bei meinen Testdaten um 2MB pro 100 Durchläufe. Mache ich das 8 Stunden lang alle 5 Sekunden mit 7 UFOs ist die DB schnell am Ende.

    Weitere Vorschläge sind also erwünscht.
     
  10. Wechselst du das Recordset öfter während das Formular geöffnet ist?
    Dann solltest du das RS vom Formular schließen, bevor du das andere anhängst.

    mfg
    Josef
     
  11. Form ist als UFO geöffnet. Recordset des Ufos soll dann gewechselt werden, wenn sich der Datenbestand bzw. die Kriterien der Parameterabfragen geändert haben, m.a.W. wenn das frisch abgefragte Recordset bestehendes RS

    Bisher keine Lösung in Sicht.
    Auch das Schließen des Formular-Rekordsets hilft nicht.
     
  12. Kannst du eine kleine Beispiel-mdb erstellen, mit der das Problem nachstellbar ist?
    Ich hänge auch oft Recordsets (allerdings ADODB-Rs) an ein Formular und konnte damit bisher noch keine besonderen Probleme feststellen.
    Allerdings läuft das bei mir in keiner Schleife ab. *wink.gif*

    mfg
    Josef
     
  13. DAO-Recordset einem Formular zuweisen

    Mach ich gerne, dauert nur etwas, da ich Daten reduzieren und anonymisieren muss.
    Bei mir im Normalfall auch nicht. Die Schleife hatte ich nur zum Testen bzgl. des Aufblähens. *wink.gif*

    So stell ich mir das für die Anwendung vor: Recordset wird durch Parameterabfrage gefüllt (Recordset A), Form mit dem Recordset gefüllt. Per Form Timer wird die Abfrage wiederholt (Recordset B) und wenn RS A RS B dann Form mit RS B füllen usw.

    Hintergrund:
    Bisher hab ich das Form aus einem Array (viel VBA) gefüllt, da es anfangs performanter war. Nun hab ich die Tabellenstruktur etwas verändert, an den Indizes geschraubt und eine (Gesamt-)Abfrage erstellt, die mir alle erforderlichen Daten auf einmal liefert, mit dem Erfolg, dass die Datenbereitstellung gut 20% schneller läuft.

    Bei der Arrayversion war das mit dem Vergleich alter/neuer Datenbestand jedoch recht simpel. Das alte Vergleichsarray (Modulvariable) wurde bei Datenänderung einfach mit dem Neuen überschrieben.
     
  14. Hallo Marsu,

    ich denke, das könnte einfacher gehen:
    - Aus der Parameterabfrage erzeugst Du per ADO-SQL-Liste einen String.
    - Aus dem String erzeugst Du einen MD5-Hash und speicherst diesen zwischen.
    - Der Timer wiederholt diese Schritte.
    - Wenn der neue MD5-Hash sich vom vorhandenen unterscheidet (=> es gab eine Änderung), wird das Recordset neu erzeugt unter Verwendung der vorhandenen Objektreferenz und dem (Unter-)Formular zugewiesen.

    So hättest Du nur jeweils ein Recordset auf ein Formular und keine Gefahr des Speicherüberlaufs.

    //Edit: Wieso kommt ein direktes Neuabrufen der Datenherkunft nicht in Frage?
     
  15. So, keine Zeit und Mühen gescheut, im Anhang ist die Spielwiese *wink.gif*

    Aber keine Eile, ich steh diesbezügl. nicht unter Zeitdruck. Und ob es in dieser Form in die Anwendung kommt ist eh noch fraglich. Interessant ist es aber auf jeden Fall.

    Zwei Fragen sind für mich von Interesse:
    1. wie verhindert man das Aufblähen der DB durch das wiederholte Zuweisen des RS ans Formular
    2. wie kann ich die Daten des RS "zwischenspeichern" um sie bei einem erneuten Abruf vergleichen zu können. (ebenfalls ohne Aufblähen der DB)

    [Edit] Ich hab inzwischen versucht
    1. das rs direkt an das Form zu schicken, so dass rst.close überflüssig wurde
    2. Das Form-RS vor dem Neubefüllen zu zerstören (s. Modul in der DB)
    Beides hat keinen keinen Einfluss auf das DB-Wachstum
    [/Edit]
     
Thema:

DAO-Recordset einem Formular zuweisen

Die Seite wird geladen...
  1. DAO-Recordset einem Formular zuweisen - Similar Threads - DAO Recordset Formular

  2. DAO Recordset schreibgeschützt

    in Microsoft Access Hilfe
    DAO Recordset schreibgeschützt: Hallo Ich habe eine Abfrage erstellt, die soweit funktioniert. Nun greife ich in VBA darauf zu, nur wenn ich diese editieren will, kommt ein Fehler dass sie schreibgeschützt ist. Code: Set rs =...
  3. Access accdb mit Passwort per DAO öffnen

    in Microsoft Excel Hilfe
    Access accdb mit Passwort per DAO öffnen: Hallo, ich habe eine MS-Access DB (.accdb) auf die ich mit einem Excel Frontend zugreife. Die DB hat KEIN Passwort. ' Für DAO: Verweis auf "Extras - Verweise - Microsoft Office 14 Access database...
  4. ADO-Alternative für einfachen DAO-Aufruf einer SP im SQL-Server

    in Microsoft Access Hilfe
    ADO-Alternative für einfachen DAO-Aufruf einer SP im SQL-Server: Ich habe eine einfache Routine um beliebige Stored Procedures via VBA & DAO von einem SQL-Server aufzurufen. Das schöne daran ist, dass man beliebig viele Parameter hintereinander klemmen kann und...
  5. DAO Verweis mit 64bit Office

    in Microsoft Access Hilfe
    DAO Verweis mit 64bit Office: Hallo Zusammen, mein Ziel war es eine Abfrage durchzulaufen und aus dieser einige Werte in Strings zu speichern. Beim versuch folgendes auszuführen bekam ich eine Fehlermeldung: Code: Dim db As...
  6. Tabellen verknüpfen mit DAO

    in Microsoft Access Hilfe
    Tabellen verknüpfen mit DAO: Hallo, ich erstelle gerade mein erstes DB-System mit FE & BE. Derzeit hänge ich an einem Problem fest, dass ich den Pfad der verknüpften Tabellen ändern will. Leider klappt das nicht so, wie ich...
  7. DAO Recordset Datensatz löschen

    in Microsoft Access Hilfe
    DAO Recordset Datensatz löschen: Hallo nach langer Zeit melde ich mich mal wieder, (mein Computer hat sich für immer verabschiedet Hat etwas gedauert bis ein neuer wieder da ist) So nun zu meinem Problem. Ich will einen Datensatz...
  8. Access VBA/DAO-Code kann abstürzen oder fehlerhafte Daten für Dezimal-Spalten melden

    in Microsoft Access Tutorials
    Access VBA/DAO-Code kann abstürzen oder fehlerhafte Daten für Dezimal-Spalten melden: Access VBA/DAO-Code kann abstürzen oder fehlerhafte Daten für Dezimal-Spalten melden Access für Microsoft 365 Mehr... Weniger...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden