Avatar billede galadrijela Nybegynder
03. februar 2005 - 08:48 Der er 10 kommentarer og
1 løsning

Autonummerering som primær nøgle

Hvis man har autonummerering som primær nøgle i en tabel, hvordan kan man kalde det med SQL…
For eksampel:
Jeg have en chackbox som vil jeg gerne tilføje værdi af primær nøgle fra tabel (og den er autonummerering).

<input type=”chackbox” name=”chkb” value=”<%=rs(”id”)%>”>

Og den værdi vil jeg bruge i DELETE sætningen. Men den give følgerne fejl:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.

Kan det gøres, og hvordan?
Avatar billede fennec Nybegynder
03. februar 2005 - 08:55 #1
Du vil altså kunne slette flere poster af gangen....

for each tempID in request.form("chkb")
  conn.execute("delete from DinTabel where id="& tempID)
next

Også har du en stave/skrive fejl:
<input type="checkbox" name="chkb" value="<%=rs("id")%>">
Avatar billede fennec Nybegynder
03. februar 2005 - 08:57 #2
Jeg kan ikke huske om Access understøtter IN metoden, men den er mere effektiv, da der kun oprettes en forbindelse til databasen:

conn.execute("delete from DinTabel where id in ("& request.form("chkb")
&")")
Avatar billede galadrijela Nybegynder
03. februar 2005 - 09:07 #3
jeg har gjordt det på følerne måde:

If not IsEmpty(Request.Form("chkb")) Then

strList = trim(request.form("chkb")) & ","
arrBrev = split(strList,",")

for i = 0 to ubound(arrBrev) -1
            brev=trim(arrBrev(i))

strSQL = "DELETE * FROM brev Where id= '" & brev & "'"

' SQL sætning eksekveres
Conn.Execute(strSQL)
Next
End If
' Lukker forbindelse til databasen
Conn.Close
Set Conn = Nothing       

men da typen er autonummerering, den give fejl......
Avatar billede fennec Nybegynder
03. februar 2005 - 09:13 #4
Det skal ikke i ', da det er et tal, og du skal ikke have * med (nogle databaser godtager det dog, men det er ikke nødvendigt).

strSQL = "DELETE FROM brev Where id= " & brev
Avatar billede galadrijela Nybegynder
03. februar 2005 - 09:19 #5
i er en variable til at køre gennem mit array som indeholde altså værdier af checkbox. Og jeg har sletet * fra sætningen...men det er ikke fejlen.

Datatyperne stemmer ikke overens i kriterieudtrykket - er fejlen
Avatar billede fennec Nybegynder
03. februar 2005 - 09:31 #6
Det var ' (pling) jeg mente :o)
Dem skal du ikke bruge da ID (i databasen er tal). Det er kun tekst fleterne der skal have ' omkring.

strSQL = "DELETE FROM brev Where id= '" & brev & "'"
skal være:
strSQL = "DELETE FROM brev Where id= " & brev
Avatar billede galadrijela Nybegynder
03. februar 2005 - 09:36 #7
Nå…jeg har læst alt for hurtigt :))

Tusind tak, den virker nu perfekt ….. hvordan uddeler jeg point til dig?
Avatar billede fennec Nybegynder
03. februar 2005 - 09:39 #8
Det var vist også mig der ikke formulerede mig så godt :o)
Nu kan du give point.

.o) <-- One Eyed Jack
Avatar billede galadrijela Nybegynder
03. februar 2005 - 09:41 #9
sådan... og tak en gang til :))
Avatar billede fennec Nybegynder
03. februar 2005 - 09:45 #10
Du kunne også afprøve IN metoden:

Dette:
************
If not IsEmpty(Request.Form("chkb")) Then

strList = trim(request.form("chkb")) & ","
arrBrev = split(strList,",")

for i = 0 to ubound(arrBrev) -1
            brev=trim(arrBrev(i))

strSQL = "DELETE * FROM brev Where id= '" & brev & "'"

' SQL sætning eksekveres
Conn.Execute(strSQL)
Next
End If
*************

Skal så bare være:
If not IsEmpty(Request.Form("chkb")) Then
  strSQL = "DELETE FROM brev Where id IN ("& Request.Form("chkb") &")"
  Conn.Execute(strSQL)
end if

Det giver en mindre kode, der er mere effektiv :o)

Du skal lige vælge mig på listen til venstre og trykke accepter, ellers bliver point ikke tildelt....
Avatar billede galadrijela Nybegynder
03. februar 2005 - 09:48 #11
ja, den giver en mindre kode....så vil jeg nok prøve med det :)

håber du få point nu.... jeg er ikke så vant til det, sorry :))
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