Avatar billede martin86 Nybegynder
12. juli 2005 - 15:35 Der er 19 kommentarer og
1 løsning

Counter FEJL.

Hej Eksperter..

Jeg har en debat hvor jeg tæller antal svar til hvert emne, den virker fint på min localhost, men ikke på min server ..


---------------------------------------------------------

sådan ser koden ud:

<%SQLalle ="Select * from debat order by id desc"
Set debat_alle = Conn.Execute(SQLalle)

do while debat_alle.eof=false

Sqltal = "Select Count(*) as antal from debat_svar where svarid=" & debat_alle("id")
Set taeller = Conn.Execute(Sqltal)

    emne = debat_alle("emne")
    forfatter = debat_alle("forfatter")
    dato = debat_alle("dato")%>

<tr>
    <td style="font: 10pt Tahoma; border-left: #111111 1px solid; border-bottom: #111111 1px solid;">
<a href="?vis=haandbold&mode=sedebat&id=<%=debat_alle("id")%>"><%=forfatter%></a></td>
    <td style="font: 10pt Tahoma; border-bottom: #111111 1px solid;">
<a href="?vis=haandbold&mode=sedebat&id=<%=debat_alle("id")%>"><%=emne%></a></td>
    <td style="font: 10pt Tahoma; border-bottom: #111111 1px solid;">
<a href="?vis=haandbold&mode=sedebat&id=<%=debat_alle("id")%>"><%=dato%></a></td>
    <td style="font: 10pt Tahoma; border-bottom: #111111 1px solid; border-right: #111111 1px solid;">
<a href="?vis=haandbold&mode=sedebat&id=<%=debat_alle("id")%>">(<%=taeller("antal")%>)</a></td>
</tr>



<%debat_alle.movenext
  loop%>


------------------------------------------------------------

Her er fejlen:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/asp/haandbold_ok.asp, line 236
Avatar billede busschou Praktikant
12. juli 2005 - 15:55 #1
hvilken linje er 236?
Det kunne tyde på en fejl i en af dine sql sætninger
Fejlen kan opstå enten hvis svarid er en streng og du putter et tal ind
Eller hvis debat_alle("id") er tom
Så prøv skrive din sql ud så kan du måske lure om det er derfor
Avatar billede martin86 Nybegynder
12. juli 2005 - 15:57 #2
Set taeller = Conn.Execute(Sqltal)
  - Det er linie 236
Avatar billede martin86 Nybegynder
12. juli 2005 - 15:57 #3
Hvis den er tom burde den så ikke bare skrive 0 ?? - det gør den i hvert fald på min localhost
Avatar billede busschou Praktikant
12. juli 2005 - 15:59 #4
Det er et spørgsmål om hvorvidt debat_alle("id") er tom
sætningen
Sqltal = "Select Count(*) as antal from debat_svar where svarid= "
vil give fejl
mens
Sqltal = "Select Count(*) as antal from debat_svar where svarid= 15"
ikke vil
Så prøv lave en
response.write Sqltal
Avatar billede busschou Praktikant
12. juli 2005 - 16:00 #5
altså , det er ikke et spørgsmål om hvorvidt den tæller 10 eller 100 poster, det er et spørgsmål om at den ikke kan tælle noget som helst fordi der er en anden fejl :o), det er det som fejlmedelelsen siger
Avatar billede busschou Praktikant
12. juli 2005 - 16:04 #6
men hvis id er et auto nummereret tal felt i databasen så virker det underligt
fejlen kan enten opstå fordi svarid ikke er af samme type som debat_alle("id"), altså hvis den ene er en streng og den anden et tal
Eller hvis debat_alle("id") er tom
Avatar billede martin86 Nybegynder
12. juli 2005 - 16:15 #7
kan man ikke bare lave en if sætning så? elelr vil det være for bøvlet?
Avatar billede busschou Praktikant
12. juli 2005 - 16:17 #8
jo sagtens, jeg ville bare gerne lokalisere fejlen først, så man ikke laver en masse som måske ikke løser fejlen
Er det fordi debat_alle("id") er tom ?
Avatar billede ksoren Nybegynder
12. juli 2005 - 16:19 #9
"Data type mismatch in criteria expression"

er normalt fordi typerne ikke er ens.

er svarid angivet som et tal i databasen? Hvis det er en streng, skal det være

where svarid='x'
Avatar billede busschou Praktikant
12. juli 2005 - 16:19 #10
Du kan jo tjekke sådan her
---
SQLalle ="Select * from debat order by id desc"
Set debat_alle = Conn.Execute(SQLalle)

do while not debat_alle.eof
  if debat_alle("id") <> "" then
    Sqltal = "Select Count(*) as antal from debat_svar where svarid=" & debat_alle("id")
    Set taeller = Conn.Execute(Sqltal)
    // og resten her
  end if
loop
Avatar billede busschou Praktikant
12. juli 2005 - 16:21 #11
ksoren >> som nævnt nogle gange, enten fordi typerne ikke er ens, eller fordi feltet er tomt. altså "svarid = " <-- ingenting
Avatar billede martin86 Nybegynder
12. juli 2005 - 16:22 #12
ksoren ->

Og hvordan skal min sql så se ud?
Avatar billede busschou Praktikant
12. juli 2005 - 16:23 #13
Sqltal = "Select Count(*) as antal from debat_svar where svarid='" & debat_alle("id")&"'"
Avatar billede ksoren Nybegynder
12. juli 2005 - 16:24 #14
Det er bare min erfaring, at hvis id er tom, vil fejlen være

"missing operator"
Avatar billede busschou Praktikant
12. juli 2005 - 16:26 #15
hmm okay, jeg synes jeg har fået den samme fejl nogen gange hvor det var det som var galt, men måske husker jeg galt så
Avatar billede martin86 Nybegynder
12. juli 2005 - 16:30 #16
Sådan nu virker den .. den virkede med:
Sqltal = "Select Count(*) as antal from debat_svar where svarid='" & debat_alle("id")&"'"


Tak til jer begge vil gerne dele pts'ne så lav venligst et svar hver - tak for hjælpen
Avatar billede ksoren Nybegynder
12. juli 2005 - 16:31 #17
Bare giv det hele til busschou. Han nævner allerede det med strengen i første indlæg (som jeg valgte at overse)
Avatar billede martin86 Nybegynder
12. juli 2005 - 16:32 #18
fair play :)

svar venligst busschou..
Avatar billede busschou Praktikant
12. juli 2005 - 16:33 #19
her er i al fald et svar fra mig :o)
Hvis jeg var dig ville jeg overveje generelt i dine tabeller fremover at holde typerne ens, altså så tal er tal og strenge er strenge,
Jeg opfatter altid selv noget med "id" som et tal :o)
Avatar billede martin86 Nybegynder
12. juli 2005 - 16:35 #20
Tak, det er taget til efterretning, og tak for hjælpen..

LUKKET
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