Office: (Office 2010) disconnected Recordset

Helfe beim Thema disconnected Recordset in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; \@Josef Auch wenn du nicht "erkennst" was ich mache hat mir dein letzter Codeschnipsel geholfen. Der wesentliche Unterschied zu meinem Code ist, dass... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von trekking1, 5. Juni 2011.

  1. disconnected Recordset


    \@Josef

    Auch wenn du nicht "erkennst" was ich mache hat mir dein letzter Codeschnipsel geholfen. Der wesentliche Unterschied zu meinem Code ist, dass du das Disconnected Recordset im Formular beim Ereignis LOAD zuweist und ich es aus dem Formular davor über einen Button zugewiesen habe. Deshalb hat es auch nicht funktioniert, wenn ich das Recordset nicht geschlossen habe.

    Nachdem ich es jetzt ins Ereignis LOAD (Des Unterformulars) implementiert habe, funktioniert es tatsächlich und ich kann meine Suchfunktion wieder verwenden.

    Hatte ich eher selten bisher. Richtiger Code nur am falschen Ort.

    Super. Vielen Dank für alle die mir hier weitergeholfen haben. Kann mich hoffentlich mal dafür revanchieren.

    Viele Grüße

    trekking
     
    trekking1, 7. Juni 2011
    #31
  2. Ob der Code bei Load oder erst nach Button-Click erfolgt, spielt bei mir keine Rolle - außer ich klicke nicht auf den Button. *biggrin.gif*

    mfg
    Josef
     
    Josef P., 7. Juni 2011
    #32
  3. \@Ebs17

    Ich weiß zwar nicht, warum du den Thread, auf den bisher niemand geantwortet hat aus dem anderen Forum kopiert hast (War ja hier nicht Gegenstand meines Fragens) aber wenn du mir schon einen Vortrag über die Fähigkeiten von SQL servern halten willst, dann beantworte mir doch die Frage wie es geht.

    Also in dem Sinne von:
    MeinSQL = INSERT INTO LokaleTabelle von TabelleServer

    Connecton.execute MeinSQL

    Würde mich nämlich wirklich interessieren wie das geht wenn du keine verlinkten Tabellen hast in deinem Frontend. Dann kriegst du nämlich als Anwtort dass der Server deine Lokale Tabelle nicht kennt.

    Also kannst du es nur mit recordset gedaddel machen, was m.e. nach selbst bei nur 10.000 DS total unperformant ist.

    Wenn du mir das Problem löst am besten mit einer Beispiel DB würde ich das sehr positiv finden.

    @josef
    Du glücklicher. Bei mir gehts nicht und da ich jetzt weiß wie es geht werde ich auch keine Zeit mehr damit verschwenden herauszufinden warum das andere nicht geht.
    ein kleiner Unterschied an dem es liegen könnte ist noch, dass ich das Formular wieder als Objekt in meinem Suchformular benutze und nicht über Me darauf zugreife. Aber egal. Hauptsache ein Weg funktioniert und ist stabil.
    PS: Button im selben Formular oder in einem anderen?

    Viele Grüße

    trekking
     
    trekking1, 7. Juni 2011
    #33
  4. disconnected Recordset

    \@ Josef

    Ich denke wir reden gerade aneinander vorbei.

    Probiere es mal mit folgendem Testaufbau aus:

    Code:
    Weisst Du rst.Clone zu, gibt das rst2 in der Sub TestADODB_2 einen Return-Wert. Der Clone bleibt am Leben ohne das das Original-Recordset existieren muss.

    Weisst Du nur rst zu, dann gibt es in der Sub TestADODB_2 einen Fehler bei der Ansprache des rst2 ... das was Du sagst, rst1 ist geschlossen und damit steht auch rst2 nicht mehr zur Verfügung.

    Quasi reiner Beweis Deiner Aussage, aber überzeugt den TE vielleicht eher. ^^

    Gruß

    Rainer

    EDIT: Okay, hat sich ja dann offensichtlich eh erledigt. Also Thema durch. ^^
     
    raist10, 7. Juni 2011
    #34
  5. [OT, auch wenn ich nicht Eberhard bin]

    Code:
    Ob das auch mit ADODB funktioniert, weiß ich nicht. Ich nehme aber an, dass es laufen sollte, solange Jet/ACE zum Einsatz kommt.

    Im Prinzip ist das aber eine verknüpfte Tabelle. Sie ist nur nicht im Frontend direkt verknüpft.


    @Rainer:
    Nur zur Sicherheit: Das Problem ohne Clone ist aber nicht set rst1 = nothing sondern rst1.Close.

    mfg
    Josef
     
    Josef P., 7. Juni 2011
    #35
  6. \@ Josef

    Ja klar und genau darauf wollte ich hinaus. *wink.gif*

    Mal davon abgesehen das das ein generelles Problem wäre, denn solange nicht geclosed wird es bei Access als aktives Objekt geführt und belegt Platz im Objekthandling. Bei Zuweisung ohne Clone, darf das Recordset nicht geschlossen werden und kann nach Durchlaufen der Prozedur auch nicht mehr geschlossen werden ... belegt also konstant Objekt-Handling. Aber das ist dann ein anderes Thema was hier nicht zur Diskussion stand. *wink.gif*

    Gruß

    Rainer
     
    raist10, 7. Juni 2011
    #36
  7. \@Josef

    Macht nichts, dass du nicht Eberhardt bist. Hauptsache jemand gibt mir mal auf diese Frage eine Antwort. Im MS-Office Forum wo sie steht, kann es wohl niemand.

    Dein Vorschlag hört sich gut an. Allerdings sagt er mir beim eingeben des ODBC-Connectionstrings jedesmal was von dateiname ist falsch. Kannst du mir mal ein Beispiel geben für den ODBC String an der Stelle.

    Viele Grüße und vielen Dank

    trekking
     
    trekking1, 7. Juni 2011
    #37
  8. disconnected Recordset

    Hallo!

    Das Verhalten ist aber identisch, wenn du einen Clone verwendest. Dann wird zwar das Ursprungs-Recordset in der Prozedur geschlossen, aber der Clone bleibt offen.
    Ansonsten: Explizit schließen kann man immer, wenn man will, da die Referenz in Form.Recordset gespeichert ist.


    Bei MSSQL sieht das z. B. so aus:
    Code:
    Für MySQL könnte es so aussehen (ungetestet):
    Code:
    Im Prinzip ist das aber der Connectionstring, der in den verknüpften Tabellen verwendet wird.

    mfg
    Josef
     
    Josef P., 7. Juni 2011
    #38
  9. \@Josef

    Habe es jetzt mit MySQL als BE und Access als BE versucht. Beides geht nicht. Bei MySLQ bekomme ich die Fehlermeldung, dass die SQL Syntax nicht stimmt und bei Access, dass der ODBC aufruf fehl schlägt.

    HAst du da auf anhieb weiterführende links ob das irgendwie doch geht oder mittlerweile selbst getestet?

    Viele Grüße

    trekking
     
    trekking1, 8. Juni 2011
    #39
  10. \@Josef

    Mit einer ADO Connection geht es nicht. Wenn der ODBC String eingefügt ist, geht es allerdings mit currentDB.execute. Also quasi als PassThrough abfrage. Was an der Stelle aber absolut OK ist.

    Danke für das Aufzeigen der richtigen Richtung. Hilft mir doch sehr.

    Viele Grüße

    trekking
     
    trekking1, 9. Juni 2011
    #40
  11. Hallo!

    Einer Pass-Through-Abfrage gleicht das nicht. Dann müsstest du nämlich die SQL-Syntax von MySQL verwenden.
    Im Prinzip ist das nicht anders als eine Access-Abfrage mit einer verknüpften Tabelle.

    Ich probierte es nun auch mit ADODB aus. Es funktionierte - natürlich nur mit dem Jet- bzw. ACE-Provider (wie in #35 angedeutet).
    Mit einer ADODB-Connection direkt zum MySQL-Server kann es nicht funktionierten, da du damit die SQL-Syntax von MySQL verwenden musst.

    mfg
    Josef
     
    Josef P., 9. Juni 2011
    #41
  12. \@Josef

    Ich schrieb ja auch nur Quasi PassTrhough und meinte damit nicht = sondern von einer ähnlichen Art und weise. (Hätte mir aber denken können, dass dies fehlinterpretiert wird und wieder aufs I-Tüpfelchen ausgelegt *wink.gif* )

    Interessanter Weise ging es bi mir auch nicht mit Jet. Ist aber auch egal. Funktioniert ja mit currentDB und das ohne Probleme. Damit bin ich sofern ich den ANSI SQL Code einhalte recht Server unabhäng und das war das Ziel.

    Was mir allerdings aufgefallen ist beim recherchieren: Es gibt zu dem Thema so gut wie nichts zu finden. Habe nicht ein Beispiel oder eine interessante Seite dazu ergoogeln können. Gibt es eine Möglichkeit dies hier unter Tips oder so ähnlich zu verewigen?

    Grüßle

    trekking
     
    trekking1, 10. Juni 2011
    #42
  13. disconnected Recordset

    Das ist aber ein ziemlich großes I-Tüpfelchen - ist eher ein I-Tüfpelchen, das aus einem i ein o macht. *biggrin.gif*
    PT-Abfrage und Abfrage mit verknüpfter Tabelle ist für mich etwas komplett anderes.

    Na klar ging es bei dir mit Jet. Oder was meist du, welche Engine bei CurrentDb läuft?
    Falls du allerdings darauf auf ein Jet-BE zugreifen wolltest, kann es nicht funktionierten, da dieser Zugriff innerhalb Jet nicht über ODBC möglich ist.
    Das sieht dann so aus:
    Code:
    Was meinst du damit? Die Syntax mit der Verbindungszeichenfolge als Datenquelle hat kaum etwas mit ANSI SQL zu tun. Das ist Jet-SQL.

    Zu welchem Thema?
    Connectionstrings: ConnectionStrings.com - Forgot that connection string? Get it here!
    Allg. über Zugriff auf aktive DBMS: DBMS-unabhängiger Zugriff auf SQL Server und Co. - Access im Unternehmen

    mfg
    Josef
     
    Josef P., 10. Juni 2011
    #43
  14. \@Josef
    wie schon gesagt, ich meinte den Vorgang, dass ich bei beiden den Connection String mitgebe und es von der Art her ähnlich ist.

    Ich meinte die BackenDatenbank und nicht den Vorgang des Datenzugriffs. War wohl von mir missverstanden wie du das gemeint hast. Sorry dafür.

    Wenn ich in dem SQL stament mit der Verknüpften Tabelle kein MySQL konformes SQL statement benutzte dann geht es nicht und es gibt eine Fehlermeldung. Da MySQL zum großteile Ansi SQL konform ist, kommt dieser Ausspruch zustande.(Aber es gibt auch da Ausnahmen, so dass die Aussage Plattform unabhängig nicht ganz gehalten werden kann und immer individuelle Anpassungen notwendig sind)

    Ich meinte auch nicht die Connection strings, sondern dass ich außer deinem Beispiel in keinem meiner Bücher, in keinem Artikel bei Access im Unternehmen und beim googeln ein Beispiel mit einer über ODBC verknüpften Tabelle im SQL statement gesehen habe und außer Dir mir keiner meine Frage im office-loesung forum beantworten konnte.

    Da meine beiden Probleme nun gelöst sind und ich mich wieder produktiv betätigen kann bedanke ich mich nochmal bei dir und hohle mit Nachdruck die fehlende Zeit beim programmieren meiner Anwendung nun nach.

    Viele Grüße

    trekking
     
    trekking1, 10. Juni 2011
    #44
Thema:

disconnected Recordset

Die Seite wird geladen...
  1. disconnected Recordset - Similar Threads - disconnected Recordset

  2. Apostroph in sql Recordset

    in Microsoft Access Hilfe
    Apostroph in sql Recordset: Hallo Gemeinde, einen hätte ich noch: sqlTitel = "SELECT * FROM tbl_Files_Edited WHERE Titel='" & strTitel & "'" Set rs1 = db.OpenRecordset(sqlTitel) Enthält strTitel einen...
  3. Recordset auf einmal nicht mehr aktualisierbar

    in Microsoft Access Hilfe
    Recordset auf einmal nicht mehr aktualisierbar: Hallo, ich bin bei der Weiterentwicklung einer seit Jahren funktionierenden Prozedur, bei der u.a. per SQL Datensätze nach einem bestimmten Feld sortiert aus einer Tabelle in ein Recordset...
  4. Recordset

    in Microsoft Excel Hilfe
    Recordset: Hallo Zusammen, ich möchte gern aus einer Excel-Tabelle Werte über ein Recordset in eine Access Tabelle einlesen. In der Anlage die vereinfachte Struktur der Daten. Im Bsp 1 werden die Daten...
  5. Recordset wird nicht erfasst

    in Microsoft Access Hilfe
    Recordset wird nicht erfasst: Liebe Access-Profis, wieder bin ich am Ende der Weisheit; dieses Mal geht es um einen VBA-Code, der einen Recordset nicht identifiziert. Das Vorhaben: Im Formular 'Aktuelles Schuljahr' steht in...
  6. Recordset-Feldname mit Variable verbinden

    in Microsoft Access Hilfe
    Recordset-Feldname mit Variable verbinden: Hallo, hat jemand einen Tipp für mich, wie ich einen Recordset-Feldnamen mit einer Variablen kombinieren kann. Ein Pivot-Recordset stellt mir Feldnamen zur Verfügung, die etwa so aussehen:...
  7. Recordset Listenfeld füllen

    in Microsoft Access Hilfe
    Recordset Listenfeld füllen: Hallo *Smilie Ich möchte gern mein Listenfeld füllen.. ______________ 1) Bei dieser Methode kommt es (willkürlich) zu einem Absturz: Set Forms("Freigabetool").Controls(liste0).Recordset = rs...
  8. ID aus SQL Recordset ermitteln - Geänderter Treiber?

    in Microsoft Access Hilfe
    ID aus SQL Recordset ermitteln - Geänderter Treiber?: ch habe ein akutes Problem beim Zugriff auf den SQL Server. Seit vielen Jahren nutze ich folgendes Prinzip. Im VBA lege ich einen neuen Datensatz in einem Recordset an. Da der SQL Server die...
  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