Avatar billede bluestrike Nybegynder
14. oktober 2003 - 10:39 Der er 7 kommentarer og
1 løsning

Excel til Access. Updatere felter med DAO. Help!

Jeg har fundet følgende kode til at indsætte data i en Access tabel.

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

Set db = DAO.DBEngine.OpenDatabase("C:\Udvikling\ferieData.mdb")
Set rs = db.OpenRecordset("ferieData", dbOpenDynaset)
   
    rs.AddNew
    rs!MandNr = "20"
    rs!startdato = "20-09-2003"
    rs!slutdato = "25-09-2003"
    rs!Type = "1"
    rs!oprettedato = "12-08-2003"
    rs!kommentar = "12345"
    rs.Update

Set db = Nothing
Set rs = Nothing

Det virker fint, men hvis jeg nu ikke vil indsætte en ny linie, men redigere i en eksisterende, hvad så?? Jeg har de overstående kolonner i min tabel + en autonummereret id kolonne... Hjælp! På forhånd tak!

P.S. Da jeg henter de værdier ud jeg vil redigere i, henter jeg også id nummeret ud hvis jeg skal bruge det.
Avatar billede martin_moth Mester
14. oktober 2003 - 11:47 #1
"men hvis jeg nu ikke vil indsætte en ny linie, men redigere i en eksisterende, hvad så??"

Så skal du nok ikke bruge rs.AddNew
Mon ikke der er en rs.Edit eller noget i den stil?
Avatar billede bluestrike Nybegynder
14. oktober 2003 - 11:51 #2
Du har fuldstændig ret.. :-) Der er en edit, det fandt jeg også ud af for et stykke tid siden... ;-) Men for at den editere i den rigtige linie skal man sætte current record korrekt. For at gøre det skal man enten bruge move metoden eller Seek metoden. Jeg har valgt seek, men kan sku ikke rigtig lurer syntaxen som den vil have. Så nu er mit spørgsmål faktisk, om der er nogen der kan forklare mig syntaxen på Seek, altså hvis jeg vil have den skal søge igennem min tabel efter et idnummer på f.eks 2 hvordan skal syntaxen så være.
Avatar billede martin_moth Mester
14. oktober 2003 - 12:25 #3
Avatar billede martin_moth Mester
14. oktober 2003 - 12:30 #4
Fik du i øvrigt løst www.eksperten.dk/spm/413360
(jeg har ikke mere at byde på) :o(
Avatar billede bluestrike Nybegynder
14. oktober 2003 - 13:46 #5
Nej, har ikke fået det til at fungere endnu... nu blev den her opgave lige prioteret højere. Jeg skriver dog svaret ind når jeg finder svaret, for finde det skal jeg nok på en eller anden måde. Kigger lige lidt på dine links.
Avatar billede bluestrike Nybegynder
14. oktober 2003 - 13:50 #6
Ja, jeg har godt set lidt på dokumentationen på MSDN... men tak for dine input. Sidder lige og roder med en ide. Lurer forbi engang imellem for at se om der er nogen der har noget at tilføje. Jeg skal nok poste løsningen når jeg har fået det til at virke.
Avatar billede martin_moth Mester
14. oktober 2003 - 13:53 #7
Er det ikek bare kopy-paste fra det nederste link - der er jo et kodeeksempel?
Avatar billede bluestrike Nybegynder
14. oktober 2003 - 13:59 #8
Så fik jeg det til at fungere... Løsningen er som følger.

Sub EditMDB()

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

Set db = DAO.DBEngine.OpenDatabase("C:\Udvikling\ferieData.mdb")
Set rs = db.OpenRecordset("ferieData", dbOpenTable)
         
    With rs
       
        .Index = "Id"
        .Seek "=", 8
                 
        .Edit
        !MandNr = "33"
        !startdato = "20-09-2003"
        !slutdato = "25-09-2003"
        !Type = "1"
        !oprettedato = "12-08-2003"
        !kommentar = "Er dette ID 8??"
        .Update
    End With

Set db = Nothing
Set rs = Nothing

End Sub

Det eneste man skal huske er at ændre det andet argument i OpenRecordset til dbOpenTable, så bruger man Microsoft Jet Workspace. Så kan man bruger Seek metoden, og ændre Current Record til den record man ønsker at ændre i.
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
Kurser inden for grundlæggende programmering

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