Office: (Office 2010) Recordset in Tabelle einfügen

Helfe beim Thema Recordset in Tabelle einfügen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe hier eine Sub mit der ich die Daten aus einem Recorset in eine Tabelle einfügen will. Irgendwie funktioniert das nicht. Bis... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Christian Janik, 12. Mai 2018.

  1. Recordset in Tabelle einfügen


    Hallo zusammen,
    ich habe hier eine Sub mit der ich die Daten aus einem Recorset in eine Tabelle einfügen will. Irgendwie funktioniert das nicht. Bis zur MsgBox habe ich die Daten (VertragDaten) bloß einfügen will er die Daten nicht. Wo ist mein Fehler? *frown.gif*

    Gruß Christian

    Private Sub LeereTabelle(VertragDaten)
    Dim db As dao.Database
    Dim rs As dao.Recordset

    MsgBox VertragDaten

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_vertraege", dbOpenDynaset)

    Do Until VertragDaten.EOF

    rs.AddNew
    rs!vsnr = "123456"
    rs!bez_kr = VertragDaten!bez_kr
    rs!bvtr_nr = VertragDaten!bvtr_nr

    VertragDaten.MoveNext
    rs.Update

    Loop
    End Sub

    :)
     
    Christian Janik, 12. Mai 2018
    #1
  2. trekking1, 13. Mai 2018
    #2
  3. Hallo Christian,

    erstelle ein Formular mit der Tabelle (oder Abfrage?) tbl_vertraege als Datenbasis, und in diesem Formular fügst du die Vertragsdaten ein.

    Gruß
    Josef
     
  4. Recordset in Tabelle einfügen

    EINEN Fehler zu identifizieren fällt schwer. Da stecken mehrere drin, und das ganze Konstrukt ist unlogisch.

    Code:
    Hier würde man ein Recordset vermuten. Zuvor ist aber ein ganz anderes deklariert und initialisiert. Da kommt also etwas vom Himmel gefallen, und es könnte sein, dass der VBA-Interpreter das auch nicht versteht.

    Auch gravierend: Schleife ohne MoveNext, das bedeutet eine Endlosschleife.
     
    ebs17, 13. Mai 2018
    #4
  5. Hallo nochmal und erst einmal vielen dank für die Antworten. Ich komme aber doch nicht weiter, vielleicht auch aus Umvermögen in Sachen Programmierung. Ich versuche mein Problem mal genauer zu beschreiben:
    1. Ich baue eine Verbindung zu einem SQL Server auf und lese dort eine View aus. Das sieht so aus und funktioniert auch:

    Sub verbinde()
    Dim ConnectionString As String
    Dim Server As String
    Dim User As String
    Dim Pwd As String
    Dim DatabaseName As String
    Dim Conn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim a As String
    Dim b As String
    Dim strSQL As String
    Dim Vertragdaten As Recordset

    Server = "########"
    User = "#########"
    Pwd = "##########"
    DatabaseName = "#######"

    ConnectionString = "Provider=SQLNCLI10;Driver=SQL Server Native Client 10.0;" & _
    "Server=" & Server & ";Database=" & DatabaseName

    Set Conn = New ADODB.Connection
    Conn.CursorLocation = adUseClient
    Conn.Mode = adModeShareDenyNone
    Conn.Open ConnectionString, User, Pwd
    strSQL = "SELECT * FROM ###.#####"
    Set rst = CreateObject("ADODB.RecordSet")
    rst.Open strSQL, Conn

    MsgBox rst.GetString

    Conn.Close
    Call LeereTabelle(rst)
    End Sub

    In der MsgBox lasse ich zur Kontrolle anzeigen ob ich die Daten habe. Das passt auch. Jetzt kommt der zweite Schritt.

    2. Jetzt möche ich die Daten aus dem Recordset in eine Accesstabelle einfügen. Das funktioniert noch nicht. Ich habe die Sub jetzt auf das nötigste abgespeckt damit ich besser testen. Meine Problem ist halt wie ich das Recordset bzw. die Inhalte ansprechen muss um sie in die Tabelle einfügen zu können.

    Private Sub LeereTabelle(rst)
    Dim db As dao.Database
    Dim rs As dao.Recordset


    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_LeereTabelle", dbOpenDynaset)

    rs.AddNew
    rs!vsnr = "1648730999"
    rs!bez_kr = "Hier kommt Text hin"

    rs.Update

    End Sub

    Wenn ich die Werte vorgebe trägt er sie ein. Ich bin also schon auf dem richtigen Weg meine ich. Aber es klemmt gerade bei mir *eek.gif*

    Grüße Christian
     
    Christian Janik, 14. Mai 2018
    #5
  6. Code:
    oder nicht?
     
    Beaker s.a., 14. Mai 2018
    #6
  7. In der Prozedur verbinde() sollte eine Schleife rein, die das ADODB Recordset abarbeitet. Aber die Konstruktion insgesamt ist doch sehr holprig ...

    conn wird geschlossen, das rst bleibt offen.
    Die Sub-Prozedur wird aufgerufen, nachdem die Connection geschlossen wurde.

    Wenn Du im Laufe einer Sitzung mehrere ADODB Verbindungen öffnen willst / musst, macht es Sinnn, das Öffnen der Connection vom Öffnen des Recordset zu trennen.

    Code:
    Eine lokale Tabelle aus der Remote befüllen ginge dann so (ohne Fehlerbehandlung und mit zwei exakt gleich strukturierten Tabellen):

    Code:
     
    hcscherzer, 14. Mai 2018
    #7
  8. Recordset in Tabelle einfügen

    Hallo Hans-Christian,
    ich habe es jetzt so und er bringt mir die Meldung:

    [Microsoft][ODBC Driver Manager] Der Datnequellenname wurde nciht gefunden, und es wurde kein Standardtreiber angegeben.

    Was mache ich Falsch? Mein SQL Server Admin sagt aber der Treiber ist der Richtige. *eek.gif*


    Code:
     
    Christian Janik, 14. Mai 2018
    #8
  9. Nouba, 14. Mai 2018
    #9
  10. Hallo zusammen und vielen Dank für die Hilfestellungen bis hier hin. Ich habe jetzt den ersten Teil zum laufen gekriegt. Ist sicherlich noch verbesserungswürdig *wink.gif* aber die Zeit sitzt mir im Nacken. Im zweiten Teil möchte ich jetzt jeden Datensatz um bestimmte Daten ergänzen und da beginnt mein Problem. Er bringt zwar kein Fehler aber er macht auch nichts *frown.gif* Wo habe ich was falsch gemacht?

    Code:
     
    Christian Janik, 16. Mai 2018
    #10
  11. Die gesamte Konstruktion ist unübersichtlich und irritierend.

    Warum muss für rsVertreter eine neue Connection geöffnet werden ???

    Die äußere Schleife ist soweit ok - die Daten werden von rsVwExport nach rsVertraege übertragen.

    Aber in der inneren Schleife wird der aktuelle Datensatz von rsVertraege immer wieder von Daten aus rsVertreter überschrieben ... was soll das?

    Und was soll das rsVertreter.Update am Anfang der inneren Schleife?
    Da hat sich doch überhaupt nichts geändert an den Daten?
     
    hcscherzer, 17. Mai 2018
    #11
  12. Wie wäre es mit debuggen?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 17. Mai 2018
    #12
  13. Recordset in Tabelle einfügen

    Hallo hcscherzer,
    ja ich gebe zu mein Code ist verwirrend und vielleicht nicht ganz optimal aufgebaut. Dies ist zum einen meiner dünnen Erfahrung mit VBA zuzuschulden und zum anderen das kleine Zeitfenster. Ich versuche zu erklären was ich machen will.

    Ich habe zwei SQL Datenbanken einmal HAGEL_PROD und einmal steCommon. Daher die zwei Aufrufe. Aus der Hagel_PROD bekomme ich Vertragsdaten die eine Kennung (6stellige Zahl) des Vertreter beinhaltet. Aus der steCommon bekomme ich jetzt die Verteterdaten. Jetzt ist das Ziel das die Vertragsdaten mit den Vertreterdaten abgeglichen werden und zwar auf Basis der Kennung des Vertreter aus der HAGEL_PROD und in die tbl_vertraege geschrieben wird.
    Beim Debug sagt er mir: Kein aktueller Datensatz (Fehler 3021).

    beste Grüße Christian
     
    Christian Janik, 21. Mai 2018
    #13
  14. OK, das hatte ich übersehen, dass das zwei Datenbanken auf dem selben Server sind. Sorry.

    Das wäre freilich nett, wen Du mitteiltest, in welcher Programmzeile diese Fehlermeldung kommt.

    Die letzten beiden Fragen aus #11 hattest Du ja nicht beantwortet ...

    Und dann widerspricht Deine Schilderung in #13 ja allen Regeln der Normalisierung. Warum speicherst Du lokal die Verträge und die Vertreter nicht auch in zwei Tabellen?
     
    hcscherzer, 21. Mai 2018
    #14
  15. Hallo Hans Christian,
    ja ich habe noch viele nicht optimale Stellen im Programmcode und breche auch einige Regularieren die für ein guten Programierer selbstverständlich sind. Da habe ich noch Luft nach oben *wink.gif* .
    Ich habe aber meinen Code nochmal überdacht und deine Frage aufgeriffen warum ich die Daten nicht in zwei Tabellen vorhalte und Du hast recht das wäre besser. Jetzt habe ich alles umgebaut und es läuft soweit sauber. Die Aktualisierung der Vertreterdatem mache ich jetzt über eine Aktualisierungsabfrage und das geht super.
    Warum ich es vorher nicht so umsetzen wollte hatte den Grund das ich mir gedacht habe alles in einem Schritt zu machen um nur eine Tabelle mit allen Daten zu habe. Jetzt läuft es aber einwandfrei. Debug habe ich auch vorher schon, bin aber irgendwie nicht weiter gekommen. Daher hatte ich hier meine Frage platziert.
    Aber es läuft jetzt. Das einzige was mir aktuell noch Probleme ist der Fehler 3022 bzgl Index, Primärschlüssel oder Beziehung... da muss iuch nochmal ran.

    beste Grüße
    Christian
     
    Christian Janik, 22. Mai 2018
    #15
Thema:

Recordset in Tabelle einfügen

Die Seite wird geladen...
  1. Recordset in Tabelle einfügen - Similar Threads - Recordset Tabelle einfügen

  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 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...
  5. 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:...
  6. Datensätze eines ADO Recordset OHNE Schleife in Tabelle schreiben

    in Microsoft Access Hilfe
    Datensätze eines ADO Recordset OHNE Schleife in Tabelle schreiben: Hallo Zusammen, ich suche eine Möglichkeit, die Datensätze eines ADO-Recordsets (Abfrage vom SQLSERVER) ohne Schleife in eine Access-Tabelle zu schreiben. Wer kann mir helfen? Vielen Dank und...
  7. Tabelle mit Recordset abgleichen

    in Microsoft Access Hilfe
    Tabelle mit Recordset abgleichen: Hallo zusammen, ich stehe vor der Aufgabe Daten aus einer Tabelle mit einem Recordset abzugleichen. Wenn jetzt in der Tabelle Datensätzen enthalten sind die nicht im Recordset vorhanden sind,...
  8. Recordset in Tabelle speichern

    in Microsoft Access Hilfe
    Recordset in Tabelle speichern: Hallo, Ich habe eine Backend-Datenbank und ein Access-Frontend. Ich verbinde mich mit dem Backend mittels ADODB und ziehe mir so die Daten in ungebundene Formulare, Die Felder in einem Bericht...
  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