Avatar billede terib Nybegynder
15. december 2004 - 13:02 Der er 6 kommentarer og
1 løsning

Formular der skriver til 4 tabeller

Hej
Er det muligt at lave en formular der skriver til fire tabeller med hver sit navn, men med samme indhold i tabellen.
Hvorfor ? Har kædet fire tabeller sammen i Access fra fire forskellige databaser, og så ville det være en let måde at ensarte data i disse tabeller !
Mvh
Avatar billede mugs Novice
15. december 2004 - 13:06 #1
Hvorfor skal du bruge 4 tabeller? Når de er ens, må du kunne nøjes med een!
Avatar billede terib Nybegynder
15. december 2004 - 13:41 #2
Det skal jeg fordi de stammer fra fire forskellige programmer og skal også kunne bruges af de fire programmer senere....jeg kan desværre ikke nøjes med en :-) Jeg kunne lave det som en knap der flyttede data fra en tabel til en anden, men jeg synes det andet kunne være smartere at bruge, da der også er andre dele i programmerne der med fordel kunne "ensrettes"
Mvh
Avatar billede pecl Nybegynder
15. december 2004 - 15:05 #3
Hvad med at bruge 4 opdaterings forespørgler - een til hver tabel ?
Avatar billede kjulius Novice
26. december 2004 - 00:51 #4
Forudsat at feltnavnene er de samme i de fire tabeller vil nedenstående sikkert kunne hjælpe:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim rs3 As DAO.Recordset
    If Me.NewRecord Then
        Set rs1 = CurrentDb.OpenRecordset("kopi1")
        Set rs2 = CurrentDb.OpenRecordset("kopi2")
        Set rs3 = CurrentDb.OpenRecordset("kopi3")
        Me.RecordsetClone.MoveLast
        rs1.AddNew
        rs2.AddNew
        rs3.AddNew
    Else
        Me.RecordsetClone.Bookmark = Me.Bookmark
        Set rs1 = CurrentDb.OpenRecordset("SELECT * FROM kopi1 WHERE ID=" & Me.RecordsetClone.Fields("ID"), dbOpenDynaset)
        Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM kopi2 WHERE ID=" & Me.RecordsetClone.Fields("ID"), dbOpenDynaset)
        Set rs3 = CurrentDb.OpenRecordset("SELECT * FROM kopi3 WHERE ID=" & Me.RecordsetClone.Fields("ID"), dbOpenDynaset)
        rs1.MoveFirst
        rs2.MoveFirst
        rs3.MoveFirst
        rs1.Edit
        rs2.Edit
        rs3.Edit
    End If
    Stop
    For Each Field In Me.RecordsetClone.Fields
        If (rs1.Fields(Field.Name).Attributes And dbUpdatableField) = dbUpdatableField And _
                (rs1.Fields(Field.Name).Attributes And dbAutoIncrField) <> dbAutoIncrField Then
            rs1.Fields(Field.Name).Value = Me.RecordsetClone.Fields(Field.Name).Value
        End If
        If (rs2.Fields(Field.Name).Attributes And dbUpdatableField) = dbUpdatableField And _
                (rs2.Fields(Field.Name).Attributes And dbAutoIncrField) <> dbAutoIncrField Then
            rs2.Fields(Field.Name).Value = Me.RecordsetClone.Fields(Field.Name).Value
        End If
        If (rs3.Fields(Field.Name).Attributes And dbUpdatableField) = dbUpdatableField And _
                (rs3.Fields(Field.Name).Attributes And dbAutoIncrField) <> dbAutoIncrField Then
            rs3.Fields(Field.Name).Value = Me.RecordsetClone.Fields(Field.Name).Value
        End If
    Next
    rs1.Update
    rs2.Update
    rs3.Update
End Sub


Vær opmærksom på, at det i nyere Access versioner (der bruger ADODB som standard) kræver, at du inkluderer DAO under referencer.
Avatar billede kjulius Novice
26. december 2004 - 00:54 #5
Oops, du skal naturligvis fjerne stop instruktionen
Avatar billede terib Nybegynder
13. januar 2005 - 07:40 #6
Virker - undskyld den lange svartid.
Avatar billede kjulius Novice
14. januar 2005 - 00:32 #7
Helt i orden :-)
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