Avatar billede Skynet Mester
09. april 2004 - 23:24 Der er 18 kommentarer og
2 løsninger

querystring fejl?

nogen som kan finde fejlen, ved denne url http://www.plvinimport.dk/beta/WWW/vine/vin.asp?sort=vnavn1&type=asc&navn=Rosevin&nr=11
             
    <%
nr = request.querystring("nr")
%>
<% if request.querystring("sort") = "" then
    StrSort = "vvarenr"
else
    StrSort = Request.QueryString("sort")
    StrType = Request.QueryString("type")
end if

strSQL = "Select * from vine where vplacering = '<%=nr%>' order by " & StrSort & " " & StrType


Set rs = Conn.Execute(strSQL)

Do
%>

Jeg får denne fejl:
Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/beta/WWW/vine/vin.asp, line 100

strSQL = "Select * from vine where vplacering = '<%=nr
------------------------------------------------------^
Avatar billede thesurfer Nybegynder
09. april 2004 - 23:30 #1
Prøv:

nr = CInt(request.querystring("nr"))

strSQL = "Select * from vine where vplacering = " & nr & " order by " & StrSort & " " & StrType
Avatar billede thesurfer Nybegynder
09. april 2004 - 23:33 #2
Forklaring:
1)
Når du bruger <% betyder det "nu starter asp kode", og %> betyder "nu slutter asp kode".
Men du er jo allerede begyndt at bruger asp kode.. derfor kan du ikke bruge "<%"..

2)
CInt laver strengen om til en tal-værdi.
Hvis en værdi, er et tal, skal der *ikke* ' (plinge/apostrof) uden om værdien: 1
Hvis en værdi, er tekst, *skal* der ' tegn udenom værdien: '1'
Avatar billede eagleeye Praktikant
09. april 2004 - 23:36 #3
Cint er ikke nødvendig når det til en SQL sætning, det er jo en streng.
Avatar billede Skynet Mester
09. april 2004 - 23:47 #4
Hej
jeg har nu prøvet med:
<% nr = CInt(request.querystring("nr")) %>

<% if request.querystring("sort") = "" then
    StrSort = "vvarenr"
else
    StrSort = Request.QueryString("sort")
    StrType = Request.QueryString("type")
end if

strSQL = "Select * from vine where vplacering = " & nr & " order by " & StrSort & " " & StrType


Set rs = Conn.Execute(strSQL)

Do
%>

men får denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/beta/WWW/vine/vin.asp, line 102


Mvh silasla
Avatar billede eagleeye Praktikant
09. april 2004 - 23:51 #5
hvilken data type er kolonnen vplacering ?
Avatar billede Skynet Mester
09. april 2004 - 23:58 #6
vplacering er et tekstfelt
Avatar billede thesurfer Nybegynder
09. april 2004 - 23:58 #7
Hvis vplacering er af typen tekst, skal det være:
strSQL = "Select * from vine where vplacering = '" & nr & "' order by " & StrSort & " " & StrType

Men det ville være underligt, da man normalt bruger tal til placering..
Avatar billede Skynet Mester
09. april 2004 - 23:58 #8
men ikke længere :)
Avatar billede eagleeye Praktikant
09. april 2004 - 23:59 #9
Ja så skal der ' omkring:

strSQL = "Select * from vine where vplacering = '" & nr & "' order by " & StrSort & " " & StrType
Avatar billede thesurfer Nybegynder
09. april 2004 - 23:59 #10
hehe :-)
Prøv med ' tegn som jeg lige har skrevet :-)
Avatar billede Skynet Mester
09. april 2004 - 23:59 #11
det virker hvis man ændrer det, hvordan kan det være??

Hvis I vil have point, kan i begge lige svare.

tak for hjælpen, mvh Silas
Avatar billede thesurfer Nybegynder
10. april 2004 - 00:00 #12
Fejlen "Data type mismatch in criteria expression" kommer når værdien er af forkert type, i forhold til feltets type.
Avatar billede thesurfer Nybegynder
10. april 2004 - 00:00 #13
- Svar.
Avatar billede eagleeye Praktikant
10. april 2004 - 00:01 #14
Fordi Access SQL kræver tekst kolonnes data er omsluttet med ' lige som strengen i VBScript er omsluttet med "
Ved tal kolonne skal man ikke bruge '

eks:

SQL = "select * from tabel where talkolonne = 23 and tekstkolonne = 'abc'"
Avatar billede thesurfer Nybegynder
10. april 2004 - 00:01 #15
Som jeg skrev i 09/04-2004 23:33:18:

Hvis en værdi, er et tal, skal der *ikke* ' (plinge/apostrof) uden om værdien: 1
Hvis en værdi, er tekst, *skal* der ' tegn udenom værdien: '1'

Da dit felt "vplacering" er af typen "tekst", skal der ' tegn udenom dens værdi.
Avatar billede thesurfer Nybegynder
10. april 2004 - 00:11 #16
Takker for points.
Avatar billede Skynet Mester
10. april 2004 - 00:23 #17
Det vil være super, hvis i lige vil se på hvorfor at linksne på siden ikke virker

<%
' Værdien af variablen navn findes
Response.Write "" & Request.Querystring("navn") & ""
%>

<%
navn = request.querystring("navn")
%>

<a href="vin.asp?sort=vnavn1&type=asc&navn='<% navn %>'&nr=<% nr %>>Pris</a>

her husker jeg 'på tekst', men det vriker ikke:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'navn'

/beta/WWW/vine/vin.asp, line 91
Avatar billede eagleeye Praktikant
10. april 2004 - 00:25 #18
Du manlger et ligmed-tegn efter <%

Prøv sådan her:

<a href="vin.asp?sort=vnavn1&type=asc&navn='<%= navn %>'&nr=<%= nr %>>Pris</a>
Avatar billede eagleeye Praktikant
10. april 2004 - 00:27 #19
og uden ' i linket. Det er kun i SQL sætningen der skal ' omkring teksten.

<a href="vin.asp?sort=vnavn1&type=asc&navn=<%= navn %>&nr=<%= nr %>>Pris</a>
Avatar billede Skynet Mester
10. april 2004 - 14:43 #20
yes, det virker, dog glemte du //>">pris// så det ser sådan ud:

<a href="vin.asp?sort=vnavn1&type=asc&navn=<%= navn %>&nr=<%= nr %>">Pris</a>

men mange tak for hjælpen, mvh Silasla
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