Avatar billede Newbee1 Novice
10. juni 2016 - 19:34 Der er 2 kommentarer og
1 løsning

Opdatere tabel efter aktiv form (flere poster (records) fra en forespørgelse)

Hej

Kan i hjælpe mig med at få dette loop til at virke?
Jeg skal opdatere tabel med de "records" der er i den åbne formular.
Koden virker fint med 1 gang opdatering, men jeg kan ikke få loopet til at virke.

  Option Compare Database
  Private Sub Opdater_Click()

  Dim db As Database
  Dim rec As Recordset
  Dim rs As DAO.Recordset

  Set db = CurrentDb
  Set rec = db.OpenRecordset("Select * from DailyReportSub")
  Set index = Me.RecordsetClone

  Do While Not index.EOF

  rec.AddNew

  rec("Batchnr") = Me.Batch
  rec(Initial") = Me.Initial
  rec("ProduktId") = Me.ProduktId
  rec("VarenrId") = Me.KapselId
  rec("Antal") = Me.Antal


  rec.Update

  Loop

  Set rec = Nothing
  Set db = Nothing
  Set rs = Nothing

  End Sub
Avatar billede bvirk Guru
10. juni 2016 - 23:16 #1
Du kan loope gennem det recordset kopi du henter data fra således:
    Set rec = db.OpenRecordset(.....
    Dim index
    Set index = Me.RecordsetClone
    Do While Not index.EOF
        rec.AddNew
        rec("Batch") = index.Fields("Batch")
        ...
        rec.update
        index.MoveNext
    Loop

Bemærk
1. kilde til poster hvorfra data hentes gennemløbes (movenext)
2. data hentes derfra - ikke fra formens nuværende (i brugerinterfacet) valgte posts felter
Avatar billede Newbee1 Novice
11. juni 2016 - 18:16 #2
Hej Bvirk, tak for dit svar.

Min kode ser nu sådan ud. Den gemmer den samme post flere gange, i stedet for at gemme den næste, dvs hvis der er 2 poster på formular, gemmer den kun den første post men 2 gange. Hvordan får jeg den til at gemme, de forskellige poster i den åbne formular (med fortløbende poster).

Private Sub Opdater_Click()

Dim db As Database
Dim rec As Recordset


Set db = CurrentDb
Set rec = db.OpenRecordset("Select * from DailyReportSub")

Dim index

Set index = Me.RecordsetClone

Do While Not index.EOF

  rec.AddNew

  rec("Batchnr") = Me.Batch
  rec("Initial") = Me.Initial
  rec("ProduktId") = Me.ProduktId
  rec("VarenrId") = Me.KapselId
  rec("Antal") = Me.Antal

  rec.Update

  index.MoveNext

Loop

Set rec = Nothing
Set db = Nothing
Set index = Nothing

End Sub
Avatar billede Newbee1 Novice
11. juni 2016 - 19:12 #3
Hej Bvirk.

Jeg fik den til at virke ved at sætte, DoCmd.GoToRecord , , acNext , ind i mellem
rec.Update og Index.Movenext.


  rec.Update
  DoCmd.GoToRecord , , acNext
  index.MoveNext

Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester