none
Selektion aus Endlos-Formular in neue tabelle schreiben

    Frage

  • Hallo zusammen

    Ich versuche derzeit, den Dateninhalt eines Formular (selektiert) in eine Tabelle zu schreiben.

    Frage:

    Wie erstelle ich eine temporäre Arbeitstabelle aus einer aktuellen Formularauswahl.

    Habe mit me.recordsource versucht, aber dann kommen alle Datensätze und nicht nur die Auswahl.

    Ziel: selektierte Datensätze in eine neue Tabelle Test schreiben.

    Hier mein Versuch:

    Dim Db As Database, rsA As DAO.Recordset, rsB As DAO.Recordset
    Dim qdf As DAO.QueryDef
    Set dbs = Application.CurrentDb
    DoCmd.DeleteObject acQuery, "meineWahl"

    With dbs
        Set qdf = .CreateQueryDef("meineWahl", Forms!fArtikelMutation.Form.RecordsetClone())
    End With

      Set Db = CurrentDb
      Set rsA = Db.OpenRecordset("meineWahl")
      Set rsB = Db.OpenRecordset("Test")

    Wäre super froh über einen Hinweis; hänge einwenig fest.....

    Besten Dank und Gruess

    René



    • Bearbeitet René Stutz Mittwoch, 12. September 2012 10:57
    Mittwoch, 12. September 2012 09:07

Antworten

  • hallo zusammen

    Manchmal steht man(n) auf dem Schlauch. Lösung gefunden !!!

    Private Sub Command48_Click()
    Dim Db As Database, rsA As DAO.Recordset, rsB As DAO.Recordset

    Set Db = CurrentDb
    Set rsA = Forms!fArtikelMutation.RecordsetClone
    Set rsB = Db.OpenRecordset("Test", dbOpenDynaset)
    Set Db = CurrentDb
    rsA.MoveFirst
    MsgBox rsA!ArtNr

    Do Until rsA.EOF
      rsB.AddNew
      rsB!Wahl = True
      rsB!ArtNr = rsA!ArtNr
      rsB.Update
      rsA.MoveNext
    Loop
    End Sub

    Merci

    René

    • Als Antwort markiert René Stutz Mittwoch, 12. September 2012 13:21
    Mittwoch, 12. September 2012 13:21

Alle Antworten

  • hallo zusammen

    Manchmal steht man(n) auf dem Schlauch. Lösung gefunden !!!

    Private Sub Command48_Click()
    Dim Db As Database, rsA As DAO.Recordset, rsB As DAO.Recordset

    Set Db = CurrentDb
    Set rsA = Forms!fArtikelMutation.RecordsetClone
    Set rsB = Db.OpenRecordset("Test", dbOpenDynaset)
    Set Db = CurrentDb
    rsA.MoveFirst
    MsgBox rsA!ArtNr

    Do Until rsA.EOF
      rsB.AddNew
      rsB!Wahl = True
      rsB!ArtNr = rsA!ArtNr
      rsB.Update
      rsA.MoveNext
    Loop
    End Sub

    Merci

    René

    • Als Antwort markiert René Stutz Mittwoch, 12. September 2012 13:21
    Mittwoch, 12. September 2012 13:21
  • Hallo,
     
    René Stutz wrote:
     
    > Private Sub Command48_Click()
    > Dim Db As Database, rsA As DAO.Recordset, rsB As DAO.Recordset
    >
    > Set Db = CurrentDb
    > Set rsA = Forms!fArtikelMutation.RecordsetClone
    > Set rsB = Db.OpenRecordset("Test", dbOpenDynaset)
    > Set Db = CurrentDb
    > rsA.MoveFirst
    > MsgBox rsA!ArtNr
    >
    > Do Until rsA.EOF
    >   rsB.AddNew
    >   rsB!Wahl = True
    >   rsB!ArtNr = rsA!ArtNr
    >   rsB.Update
    >   rsA.MoveNext
    > Loop
    > End Sub
     
    Oder kuerzer:
     
    CurrentDb.Execute "INSERT INTO Test ( Wahl, ArtNr ) " & _
     " SELECT -1, ArtNr " & _
     " FROM ("& Forms!fArticleMutation.RecordSource &")", dbFailOnError
     
    Sollte die RecordSource nicht aus einem einfachen Tabellen- oder
    Abfragenamen, sondern SQL-Statement bestehen, das mit
    Semikolon schliesst, musst du dieses erst entfernen. Dann wird's wegen des
    Gefummels ein 3-Zeiler:
     
    Dim strSQL As String
     
    strSQL = Left(Trim(Forms!fArticleMutation.RecordSource, _
     Len(Trim(Forms!fArticleMutation.RecordSource)-1)
     
    CurrentDb.Execute "INSERT INTO Test ( Wahl, ArtNr ) " & _
     " SELECT -1, ArtNr " & _
     " FROM ("& strSQL & ")", dbFailOnError
     
    Gruss - Peter
     
    --
     
    Samstag, 15. September 2012 06:47
    Moderator