Avatar billede jepper15 Nybegynder
22. maj 2002 - 15:31 Der er 23 kommentarer og
1 løsning

Slet flere Rcords på en gang?

Jeg vil slette x antal records på een gang, men får følgende fejl...

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (comma) in query expression '(id =8, 11)'.

Hvis jeg ikke må bruger komma, er der så en anden måde at gøre det på? Eller skal jeg lave en lykke der splitter med komma?
Avatar billede medions Nybegynder
22. maj 2002 - 15:32 #1
brug AND!

DELETE * FROM tabel WHERE id=2 AND id=3 AND osv...!

//>Rune
Avatar billede terry Ekspert
22. maj 2002 - 15:35 #2
DELETE * FROM tabel WHERE id=2 OR id=3 OR osv...!
Avatar billede jepper15 Nybegynder
22. maj 2002 - 15:36 #3
ja ok, men problemet er at min kode ser sådan her ud...

If Slet <> "" Then
Forbindelse.Execute("Delete From Tagwall WHERE (id =" & Slet & ")")
End if

Strengen "Slet" indeholder værdierne efterfulgt af komma
Avatar billede medions Nybegynder
22. maj 2002 - 15:38 #4
If Slet <> "" Then
Forbindelse.Execute("Delete From Tagwall WHERE (id =" & Left(Slet,1) & ")")
End if

Så prøv med denne!
//>Rune
Avatar billede jepper15 Nybegynder
22. maj 2002 - 15:40 #5
medions>> nope, virker ikke...
Avatar billede medions Nybegynder
22. maj 2002 - 15:41 #6
If Slet <> "" Then
Forbindelse.Execute("Delete From Tagwall WHERE (id =" & Left(Slet,Len(Slet)-1) & ")")
End if

sådan var det..!
//>Rune
Avatar billede medions Nybegynder
22. maj 2002 - 15:42 #7
Left(Slet,Len(Slet)-1) fjerner dit komma i slutningen af variablen!

//>Rune
Avatar billede jepper15 Nybegynder
22. maj 2002 - 15:46 #8
Nu kan jeg slætte en af værdierne. eksp hvis jeg vil slette 1, 2, 3. Så kan jeg nu slette 1. Og så skriver den:

operator) in query expression '(id =2, 3, )'.
Avatar billede medions Nybegynder
22. maj 2002 - 15:48 #9
ja, det er derfor du er nødt til at lave en AND!!

//>Rune
Avatar billede medions Nybegynder
22. maj 2002 - 15:51 #10
-du kan kun slette én record ad gangen... ellers skulle du gøre sådan her:

arrSlet = Split(slet, ",")
For i = Ubound(ArrSlet())
  If Slet <> "" Then
Forbindelse.Execute("Delete From Tagwall WHERE (id =" & ArrSlet(i) & ")")
End if
Next

//>Rune
Avatar billede kimiwan Nybegynder
22. maj 2002 - 16:04 #11
DELETE FROM TagWall WHERE id IN (1,2,3,4)
Avatar billede hlj Nybegynder
22. maj 2002 - 16:27 #12
Prøv evt. at checke http://databases.about.com/library/weekly/aa072201a.htm

Der bruger de between til at delete et område:
  DELETE FROM students WHERE id BETWEEN 240 AND 290
Avatar billede jepper15 Nybegynder
22. maj 2002 - 22:09 #13
LOL guys! Jeg lavede selv en lykke, som virkede.... Men tak any way!
Avatar billede medions Nybegynder
22. maj 2002 - 22:13 #14
kan vi lige prøve at se den lykke?
//>Rune
Avatar billede jepper15 Nybegynder
22. maj 2002 - 22:18 #15
Jep, her er den:

Slet = Request.Querystring("slet_tagwall")
SplitSlet = Split(Slet,",")
  For T = LBound(SplitSlet) to UBound(SplitSlet)
    Forbindelse.Execute("Delete From Tagwall WHERE (id =" & SplitSlet(T) & ")")
Next
Avatar billede medions Nybegynder
22. maj 2002 - 22:20 #16
well, det er jo mit eksempel! -bare med en LBound() funktion!

//>Rune
Avatar billede kimiwan Nybegynder
22. maj 2002 - 22:22 #17
jepper: havde du ikke netop en komma-separeret liste af tal du ville slette?  Så behøver du ikke dele dem op i flere, du kan nøjes med at bruge IN i stedet for at dele den op.

...Eller du prøvede den måske og den virkede ikke?
Avatar billede jepper15 Nybegynder
22. maj 2002 - 22:38 #18
Jeg prøvede ikke noget af det i lavede *LOL*, satte mig ned og lavede min egen For funktion! Tror I måske ikke på, men det gjorde jeg!
Avatar billede kimiwan Nybegynder
22. maj 2002 - 22:43 #19
Jepper: det er nu mere fordi din funktion er lidt tosset at bruge - langt mere ressourcekrævende og uelegant - når nu access har en indbygget funktion til det.
Avatar billede jepper15 Nybegynder
22. maj 2002 - 23:52 #20
Aha... Det er altså: DELETE FROM TagWall WHERE id IN (1,2,3,4) jeg kan bruge?

Vil lige teste den.... husk nu at der stadig er 60 points på spil!
Avatar billede jepper15 Nybegynder
22. maj 2002 - 23:58 #21
Kan jeg så bruger variablen slet inde i IN ()'en? sådan her:
Forbindelse.Execute("DELETE FROM Tagwall WHERE id IN ("& Slet &")")
Det er namlig fordi jeg ikke kan få det til at virke på den måde...
Avatar billede jepper15 Nybegynder
23. maj 2002 - 00:08 #22
Halløj! Der var den jo... Så virker det her...!
Avatar billede kimiwan Nybegynder
23. maj 2002 - 00:18 #23
Så nu vil du gerne ha' et svar eller hvad? Glad for du fik den til at virke :o)
Avatar billede jepper15 Nybegynder
23. maj 2002 - 13:53 #24
Jep! Og et svar jeg fik! Takker 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