Avatar billede canedo Nybegynder
07. maj 2002 - 15:41 Der er 29 kommentarer og
2 løsninger

FROM-sætning med variabel

Hvad er der i vejen med denne FROM-sætning?

Query = "SELECT * FROM " & Request.QueryString("tabel") & " WHERE ID=" & Request.QueryString("ID")
Avatar billede skovtrold Nybegynder
07. maj 2002 - 15:43 #1
Prøv med:
Query = "SELECT * FROM '" & Request.QueryString("tabel") & "' WHERE ID='" & Request.QueryString("ID")
Avatar billede canedo Nybegynder
07. maj 2002 - 15:47 #2
skovtrold > Gør jeg det, så får jeg denne fejlmelding:

Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgslen. Forespørgslens delsætning er ikke fuldstændig.

admin/slet.asp, linje 38
Avatar billede tmceu Praktikant
07. maj 2002 - 15:47 #3
skovtrold >> den er da helt hen i skoven :-) Det ville jo eks. blive noget i stil med "SELECT * FROM 'Tabel' WHERE ID = X" - den går ikke i SQL.

Prblemet kunne være at ID er et reserveret ord i flere databaser, så prøv med [ID] - alternativt prøv med "WHERE ID='" & Request.QueryString("ID") & "'" hvis ID er et alfanumerisk felt.
Avatar billede canedo Nybegynder
07. maj 2002 - 15:49 #4
Sådan ser mit script ud:

Dim ID, tabel
tabel = Request.QueryString("tabel")
Query = "SELECT * FROM '" & tabel & "' WHERE ID='" & Request.QueryString("ID")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Query, Connect, 1, 2
Avatar billede ras2000 Nybegynder
07. maj 2002 - 15:49 #5
Umiddelbart er der ikke noget galt med sætningen, jeg har fået den til at virke på min server. Er du sikker på at der ikke er noget galt med de variable der bliver sendt i querystring'en?
Avatar billede canedo Nybegynder
07. maj 2002 - 15:50 #6
kan det have noget med mellemrum mellem FROM og " - altså
FROM '"?
Avatar billede tmceu Praktikant
07. maj 2002 - 15:51 #7
Du kunne jo prøve at lave en

response.write query
response.end

- for at se hvad din query ender op med at være.
Avatar billede canedo Nybegynder
07. maj 2002 - 15:53 #8
sådan ser hele scriptet ud:
<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If





If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM '" & tabel & "' WHERE ID='" & Request.QueryString("ID")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Query, Connect, 1, 2

Dim post
post = Request.QueryString("post")
dokument = Request.QueryString("dokument")
%>
Vil du slette posten <i><%=post%></i> i tabellen <i><%=tabel%></i>?<br>
<a href="slet.asp?slet=2&ID=<%=rs("ID")%>&tabel=<%=tabel%>">JA</a>&nbsp;&nbsp;
<a href="<%=dokument%>.asp">NEJ</a>
<%






If Request.QueryString("slet") = "2" AND id <> "" Then
Query = "SELECT * FROM '" & tabel & "' WHERE ID='" & Request.QueryString("ID")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Query, Connect, 1, 2
rs.Delete
Response.Write "det virker"
End If
End If
%>
Avatar billede skovtrold Nybegynder
07. maj 2002 - 15:55 #9
Hvilken fejl får du?
Avatar billede canedo Nybegynder
07. maj 2002 - 15:56 #10
Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgslen. Forespørgslens delsætning er ikke fuldstændig.

admin/slet.asp, linje 38
Avatar billede ras2000 Nybegynder
07. maj 2002 - 15:57 #11
Personligt ville jeg slette pingerne efter FROM og før WHERE og efter ID=
Derefter ville jeg som tmceu skriver få den til at skrive din sql sætning ud, så er det lidt nemmere at se hvad det er der går galt.
Avatar billede skovtrold Nybegynder
07. maj 2002 - 15:57 #12
Og hvad får du hvis du gør som tmceu siger:
response.write query
response.end
Avatar billede canedo Nybegynder
07. maj 2002 - 15:57 #13
der bliver sendt den rigtige streng fra den foregående asp-side så det er ikke det, der mangler... tror det har noget med FROM-sætningen at gøre...
Avatar billede canedo Nybegynder
07. maj 2002 - 15:58 #14
hvor skal jeg skrive tmceu's sætning henne i mit script?
Avatar billede ras2000 Nybegynder
07. maj 2002 - 15:58 #15
Altså
<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If
If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM '" & tabel & "' WHERE ID='" & Request.QueryString("ID")
response.write Query
%>
Avatar billede mccannon Nybegynder
07. maj 2002 - 16:01 #16
hvis der er tekst i Request.QueryString("ID")
så skal det så sådan ud
"SELECT * FROM '" & tabel & "' WHERE ID='" & Request.QueryString("ID") & "'"
Avatar billede canedo Nybegynder
07. maj 2002 - 16:02 #17
gør jeg det - så får jeg fuldstendig den samme fejlmelding:

Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgslen. Forespørgslens delsætning er ikke fuldstændig.

admin/slet.asp, linje 38
Avatar billede canedo Nybegynder
07. maj 2002 - 16:03 #18
det er kun tal i ID
Avatar billede ras2000 Nybegynder
07. maj 2002 - 16:03 #19
Hovsa, der skulle have stået
<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If
If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM " & tabel & " WHERE ID=" & Request.QueryString("ID")
response.write Query
%>
Avatar billede canedo Nybegynder
07. maj 2002 - 16:06 #20
:-( ... får stadig samme fejlmelding:

Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgslen. Forespørgslens delsætning er ikke fuldstændig.

admin/slet.asp, linje 38
Avatar billede mccannon Nybegynder
07. maj 2002 - 16:06 #21
yep, så skulle ras2000's svar virke :)
Avatar billede canedo Nybegynder
07. maj 2002 - 16:08 #22
mccannon > jamen det gør det ikke hos mig. Kan det have noget med Response.Buffer = True at gøre?
Avatar billede ras2000 Nybegynder
07. maj 2002 - 16:09 #23
Du skal fjerne de pinger du har i sql sætningen, de giver kun problemer. Derudover vil jeg skyde på at din tabel kommer ind forkert. Men prøv mit forslag, så kan du jo se hvordan din sql sætning ser ud.
Avatar billede mccannon Nybegynder
07. maj 2002 - 16:09 #24
hmm
Avatar billede canedo Nybegynder
07. maj 2002 - 16:10 #25
nej - jeg har lige testet dit script - men det giver hele tiden den samme fejlmelding.
Avatar billede ras2000 Nybegynder
07. maj 2002 - 16:10 #26
Du skal lave en ny side, hvor det eneste der står er:
<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If
If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM " & tabel & " WHERE ID=" & Request.QueryString("ID")
response.write Query
%>
Det skal altså virke, der er slet ingen database involveret, der er vist ikke noget der kan gå galt i det.
Avatar billede canedo Nybegynder
07. maj 2002 - 16:11 #27
Sådan ser scriptet ud - som jeg prøver at køre:
<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If
If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM " & tabel & " WHERE ID=" & Request.QueryString("ID")
response.write Query
%>
Avatar billede canedo Nybegynder
07. maj 2002 - 16:12 #28
okay prøver lige igen... 2 sek
Avatar billede canedo Nybegynder
07. maj 2002 - 16:13 #29
nej - det ENESTE jeg har på siden er:

<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If
If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM " & tabel & " WHERE ID=" & Request.QueryString("ID")
response.write Query
%>

men det virker stadig ikke...
Avatar billede canedo Nybegynder
07. maj 2002 - 16:18 #30
måske burde jeg starte forfra - og lave det på en anden måde... jeg lukker.
Avatar billede ras2000 Nybegynder
07. maj 2002 - 16:19 #31
OK, der mangler også en end if til sidst.
<%
Dim ID, tabel
tabel = Request.QueryString("tabel")
id = Request.QueryString("ID")

%>

<%
If id = "" Then
Response.Write "Internal Error (Intet ID)"
End If
If Request.QueryString("slet") = "1" AND id <> "" Then

Query = "SELECT * FROM " & tabel & " WHERE ID=" & Request.QueryString("ID")
response.write Query
End if
%>
Derudover skal du selvfølgelig huske at skrive din querystring i adresselinien, ellers kommer der ikke så meget.
ny_side.asp?tabel=minTabel&ID=1&slet=1
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