Avatar billede frogger Nybegynder
20. november 2001 - 15:10 Der er 15 kommentarer og
2 løsninger

ADO og slette række i access tabel

Jeg er ved at ændre en databasetilgang fra DAO til ADO, men har et problem med at slette rækker i en tabel. Det er ved at drive mig til vanvid!

Koden er som følger:

Private dB As ADODB.Connection
Private Rs As ADODB.Recordset

Public Function deleteFixtures(pallet_ID)
    Set dB = New ADODB.Connection
    dB.Open \"Provider=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & App.Path & \"DataBase.MDB\"

    Set Rs = dB.Execute(\"SELECT * FROM PM_Fixtures WHERE pallet_ID=\" & CStr(pallet_ID) & \";\")

    Do Until Rs.EOF
        Rs.Delete
        Rs.MoveNext
    Loop
   
End Function

Ved rs. delete får jeg en runtime error
\'3251\' - Objektet eller provideren kan ikke udføre denne kommando

Håber at der er nogen der kan hjælpe
/Frogger
Avatar billede terry Ekspert
20. november 2001 - 15:13 #1
I think you should look at th ecommand object!

    \"DELETE * FROM PM_Fixtures WHERE pallet_ID=\" & CStr(pallet_ID) & \";\")
Avatar billede frogger Nybegynder
20. november 2001 - 15:17 #2
Duh! - hvorfor har jeg ikke tænkt på at ændre SQL sætningen...

Hvilket command object, hvor?
Avatar billede jennemaan Nybegynder
20. november 2001 - 15:18 #3
db.execute \"DELETE * FROM PM_Fixtures WHERE pallet_ID=\" & CStr(pallet_ID) & \";\"

/Jennemaan
Avatar billede terry Ekspert
20. november 2001 - 15:18 #4
Dim sql as String
sql = \"SELECT * FROM PM_Fixtures WHERE pallet_ID=\" & CStr(pallet_ID) & \";\")

   
dB.Execute sql

   
Avatar billede terry Ekspert
20. november 2001 - 15:21 #5
Now I am mixing them up! DELETE!!!
Avatar billede frogger Nybegynder
20. november 2001 - 15:35 #6
terry> nej det er slet ikke så let vel ;)

Men hvis vi lige ser bort fra eksemplet, som jeg gav...

Der må da også være en metode til at slette en række fra et recordset

/frogg
Avatar billede terry Ekspert
20. november 2001 - 15:40 #8
Avatar billede frogger Nybegynder
20. november 2001 - 15:40 #9
Hmm...

Avatar billede jennemaan Nybegynder
20. november 2001 - 15:42 #10
du kan godt slette direkte fra et recordset.

Så skal du dog åbne recordsettet med lidt andre parametre:

    Set dB = New ADODB.Connection
    dB.Open \"Provider=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & App.Path & \"DataBase.MDB\"

    With Rs
      Set .ActiveConnection=db
      .CursorType=adUseKeyset
      .LockType=adLockPessimistic
      .Source=\"SELECT * FROM PM_Fixtures WHERE pallet_ID=\" & CStr(pallet_ID) & \";\"
      .Open
    End With
 
    Do Until Rs.EOF
        Rs.Delete
        Rs.MoveNext
    Loop

/Jennemaan
Avatar billede frogger Nybegynder
20. november 2001 - 15:45 #11
Med den nye sql kommer jeg forbi at delete, men derefter skal jeg bruge en ADO metode der svarer til DAO\'s

rs.addItem

Terry> tak for linkene jeg kigger lige på det...
Avatar billede frogger Nybegynder
20. november 2001 - 15:46 #12
Ahem...

rs.addNew
Avatar billede terry Ekspert
20. november 2001 - 15:49 #14
yes rs.addnew

... then add data to fields, then

rs.update
Avatar billede frogger Nybegynder
20. november 2001 - 16:05 #15
Jennemaan> Tak-Takke-Tak Det var præcist hvad jeg manglede!

Terry var nu hurtigst med SQL tingen og links, så jeg deler pointene mellem jer.

Sikken en lettelse!
/Frogger
Avatar billede frogger Nybegynder
20. november 2001 - 16:07 #16
-Og dagens tillæg:
Updates der automatisk når man lukker recordsettet?
Avatar billede jennemaan Nybegynder
20. november 2001 - 16:35 #17
jep, med mindre du bruger Batch hvor du så skal eksekvere en rd.UpdateBatch for ændringerne skrives

/Jennemaan
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