Avatar billede Mcoroklo Nybegynder
14. september 2009 - 11:24 Der er 15 kommentarer og
1 løsning

Sletning via SQL-query i Access

Jeg sidder i Access 2003 og skal slette en record via VBA/SQL kode.

Det er et dataark der slettes fra. Jeg ønsker at når jeg vælger en record og trykker på en knap, bliver den valgte record slettet.

Jeg ønsker en løsning med SQL og IKKE standard Access som:    DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord

Jeg ønsker at køre følgende SQL:
DELETE FROM AMINR WHERE ([AMINR].[AMIAMINR] = FELT-FRA-DATAARKET)

Hvordan:
1) Får jeg en felt-værdi fra dataarket?

2) Skriver man SQL op i Access? Jeg fandt noget lignende:
DoCMD.RunSQL = streng;
- Er det måden?
Avatar billede terry Ekspert
14. september 2009 - 11:28 #1
DoCMD.RunSQL = "DELETE FROM AMINR WHERE [AMINR].[AMIAMINR] = " & FELT-FRA-DATAARKET


Thats if the field is numeric. If its text then use.

DoCMD.RunSQL = "DELETE FROM AMINR WHERE [AMINR].[AMIAMINR] = '" & FELT-FRA-DATAARKET & "'"
Avatar billede terry Ekspert
14. september 2009 - 11:29 #2
and you need to replace FELT-FRA-DATAARKET with actual field name.


A me.requery may be necessary after the delete to reflect the change
Avatar billede jensen363 Forsker
14. september 2009 - 11:31 #3
Eksempel :

Public Function Delete()
Dim strSql As String
Dim db As DAO.Database

Set db = CurrentDb()

strSql = "DELETE FROM "
strSql = strSql & "WHERE ([AMINR].[AMIAMINR] = FELT-FRA-DATAARKET);"
        db.Execute strSql
End Function
Avatar billede Mcoroklo Nybegynder
14. september 2009 - 13:10 #4
Thanks for help.

I will implement it friday and afterwards give you points :-)

Thx
Avatar billede Mcoroklo Nybegynder
18. september 2009 - 08:51 #5
Jeg har nu prøvet at implementere det.. Uden held.

Problematikken er opdelt i 2 ting:

1) Jeg får ikke hentet værdien fra den omtalte database. Mit felt-navn hedder AMIAMINR og jeg får ikke værdien ud ved at gøre som beskrevet på ovenstående måde.
Jeg kører følgende af:

strSql = "DELETE FROM AMINR WHERE ([AMINR].[AMIAMINR] = '" & AMIAMINR & "');"

Der kan godt være nogle fejl med håndteringen af AMIAMINR, men i debuggeren kan jeg se der ingen værdi kommer.

2) CurrentDB() metoden giver ikke noeen database - Så db bliver bare null.
Avatar billede terry Ekspert
18. september 2009 - 09:14 #6
"1) Jeg får ikke hentet værdien fra den omtalte database ..."

In a DELETE action you dont read values from the dB!


" & AMIAMINR & "');" "

This should contain a value from the record selected in the form.


Is it possible to see the dB?
ekspertenATsanthell.dk
AT = @
Avatar billede terry Ekspert
18. september 2009 - 09:15 #7
"2) CurrentDB() metoden giver ikke noeen database - Så db bliver bare null. "

In the code I gave there is no need for currentdb()!
Avatar billede Mcoroklo Nybegynder
18. september 2009 - 09:53 #8
Allright, thanks for notice Terry! :-)

Do you have any idea abuot problem number 1? Thanks a lot!
Avatar billede Mcoroklo Nybegynder
18. september 2009 - 09:55 #9
Whoops, sorry I didn't read your comment above.

I'll return in ten.
Avatar billede Mcoroklo Nybegynder
18. september 2009 - 10:20 #10
Allright, you're totally right - the DoCMD.RunSQL works! :-)

My DB looks like this:
http://img40.imageshack.us/img40/4217/imgya.jpg

And I select a row, click a button and need to delete that.

I run the command:
    DoCmd.RunSQL ("DELETE FROM AMINR WHERE ([AMINR].[AMIAMINR] = '" & AMIAMINR & "');")

Which now compile and run withour errors, but it dosn't remove the record.
Avatar billede terry Ekspert
18. september 2009 - 11:35 #11
"Allright, you're totally right - the DoCMD.RunSQL works! :-)"

You say here the at it works.

And then you say it doesnt remove the record!

What works?
Avatar billede Mcoroklo Nybegynder
18. september 2009 - 13:04 #12
It does compile and when I debug it looks like it works. However the record isn't deleted in the database when I look it up (yes I do update the view afterwards) :-)

It does however work when I say :
DoCmd.RunSQL("DELETE FROM AMINR WHERE ([AMINR].[AMIAMINR] = '13513-413812');")

(hardcoding the AMInr)..

The selection in the db gives nothing which means nothing is deleted.
Avatar billede terry Ekspert
18. september 2009 - 14:00 #13
No idea what is wrong.

Is it possible to see the dB?
ekspertenATsanthell.dk
AT = @
Avatar billede Mcoroklo Nybegynder
18. september 2009 - 14:25 #14
After long time struggle, problem was a relationship on the DB i didn't know off (someone else created the db)..

Thanks a bunch Terry! You really spend some time on helping! Really nice of you! :-)
Please post an answer!
Avatar billede terry Ekspert
18. september 2009 - 14:38 #15
OK, så you should be able to set cascade deletes on so that related records get deleted too. Thats if its OK to do so :o)

And a good weekend to you
Avatar billede terry Ekspert
18. september 2009 - 22:16 #16
tak
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