---
title: "Data type mismatch in criteria expression."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/58652-data-type-mismatch-in-criteria-expression"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Galifante"
published: "2002-11-10T13:59:47.000Z"
updated: "2002-11-10T17:17:24.000Z"
replies: 11
views: 389
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/58652-data-type-mismatch-in-criteria-expression"
---

# Data type mismatch in criteria expression.

## #1 — Galifante, 2002-11-10T13:59Z

Hejsan!

Försöker hämta ett värde från ett formulär på sid 1 som ska jämföras med ett tal från databasen på sid 2. Jag vill att allt som motsvarar sökvärdet och/eller är större än detta tal ska visas.

Talet som ska jämföras kommer som sträng och måste alltså konverteras till tal först.

Så här ser min icke-fungerade kod ut:

```
dim platser
platser = Request.Form("platsantal")
platsantal=cInt(platser)

sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & platsantal
```

Felmeddelandet jag får är **Data type mismatch in criteria expression.**  och pekar på SQL-koden.

Har aldrig använt CInt förrut så jag är inte säker på hur man gör. Lite tips på det skulle säkert också förbättra mitt humör...  :e 

/Galifante :q

Permalänk: https://www.webforum.nu/p/58652

## #2 — Eitraz, 2002-11-10T14:05Z

Du kan kontrollera om platser är ett nummer med IsNumeric.
Blir väll nåt sånt här då

If NOT IsNumeric(platser) Then
  platser = 0   'Eller något bra värde som "default"
End If
platserantal = CInt(platser)

\-Eitraz

Permalänk: https://www.webforum.nu/p/851511

## #3 — LarsG, 2002-11-10T14:23Z

Vilken datatyp har kolumnen Antal_Platser ? Den borde vara numerisk.

Permalänk: https://www.webforum.nu/p/851521

## #4 — Galifante, 2002-11-10T14:23Z

Hejsan!

Jag testade detta:

```
dim platser
platser = Request.Form("platsantal")
If IsNumeric(platser) Then
	Response.write "Det är ett tal"
Else
	platser = CInt(platser)
End If
```

Iom att det skriver ut "Det är ett tal" så borde variabeln alltså vara ett tal, eller hur?  :q 

Men vad är det då för fel med SQL-satsen???? Jag får ju fortfarande samma scriptfel....  :x 

Är lite trött idag men måste få detta klart innan kvällen...  :(

Permalänk: https://www.webforum.nu/p/851522

## #5 — Galifante, 2002-11-10T14:29Z

> **LarsG skrev:**
>
> Vilken datatyp har kolumnen Antal_Platser ? Den borde vara numerisk.

Antal_Platser är ett tal, de övriga kolumnerna har olika datatyper (ifall att det har nån betydelse).

Permalänk: https://www.webforum.nu/p/851525

## #6 — LarsG, 2002-11-10T15:00Z

Ok, då är det ok.

Är det ett VB-scriptfel du får eller ett databasfel?

Kan du visa lite mer kod?

Kan du lägga till någon testutskrift?

```
sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & platsantal
response.write sSql
```

Koden med cint är inte nödvändig, men däremot så bör du ha med kontroll med isNumeric

```
if not isNumeric(request.form("platsAntal") then
   response.write "Ogiltigt antal, försök igen "
   response.redirect ...
end if
sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & request.form("platsAntal")
```

Det som händer när du gör cint är att du konverterar värdet till ett heltal men sedan när du använder det värdet när du tilldelar sSQL så kommer värdet att konverteras tillbaka till en sträng.

Permalänk: https://www.webforum.nu/p/851536

## #7 — Galifante, 2002-11-10T16:46Z

> **LarsG skrev:**
>
> Är det ett VB-scriptfel du får eller ett databasfel?

Databasfel.

```
Microsoft JET Database Engine error '80040e07' 

Data type mismatch in criteria expression. 

/modern/studios/sok_koll.asp, line 43
```

Rad 43 är denna: \]**rs.Open SQL, MinCon** Databaskopplingen fungerar, har använt samma koppling på flera ställen, så det är inte det som är problemet...

> Kan du visa lite mer kod?

Tror inte det får plats i detta inlägg så det kommer i nästa.

> Kan du lägga till någon testutskrift?

Utskriften av SQL ger: \]**SELECT \* FROM rum WHERE Antal_Platser \>= 3** 

> ```
> if not isNumeric(request.form("platsAntal") then
>    response.write "Ogiltigt antal, försök igen "
>    response.redirect ...
> end if
> sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & request.form("platsAntal")
> ```

Testade men det ger fortfarande samma scriptfel.  :( Återkommer med mer kod.

Permalänk: https://www.webforum.nu/p/851575

## #8 — Galifante, 2002-11-10T16:48Z

Koden

Här kommer koden, så som den ser ut just nu...

```
<%
dim platser
platser = Request.Form("platsantal")
if not isNumeric(request.form("platsAntal")) then
   response.write "Ogiltigt antal, försök igen "
   response.redirect sok.asp
end if
sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & request.form("platsantal")

Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.Recordset")
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("studios.mdb")&""
	SQL = sSQL
	Response.Write SQL
	rs.Open SQL, MinCon

%>

<P>
	<TABLE>
	<TR>
	<TD>
		<B>Antal platser:</B> &nbsp;
		<%=rs("Antal_platser")%>
	</TD>
	</TR>
<TR>
	<TD>
		<B>Rum</B> &nbsp;
		<A HREF="ruminfo.asp?RumID=<%=rs("RumID")%>"><%=rs("RumNamn")%></A>
	</TD>

		</TR>

	<%
		rs.Close
		MinCon.Close
		Set rs = nothing
		Set MinCon = nothing
	%>

	</TABLE>
```

Permalänk: https://www.webforum.nu/p/851577

## #9 — Ekström, 2002-11-10T16:52Z

Byt ut 

```
sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & request.form("platsantal")
```

 mot 

```
sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & int(request.form("platsantal"))
```

Permalänk: https://www.webforum.nu/p/851579

## #10 — Galifante, 2002-11-10T16:59Z

> **Ekström skrev:**
>
> Byt ut 
>
> ```
> sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & request.form("platsantal")
> ```
>
>  mot 
>
> ```
> sSQL="SELECT * FROM rum WHERE Antal_Platser >=  " & int(request.form("platsantal"))
> ```

Nope. Funkar inte.....  :(  :(  Blir samma scriptfel i alla fall! x(

Permalänk: https://www.webforum.nu/p/851580

## #11 — LarsG, 2002-11-10T17:07Z

Då måste det vara något problem med kolumnen antal_platser. Är det rätt version av databasen du kopplar upp dig mot? 
T.ex. att du inte har laddat upp den senaste versionen till servern?

Permalänk: https://www.webforum.nu/p/851581

## #12 — Galifante, 2002-11-10T17:17Z

Fattar inget men det funkar!

> **LarsG skrev:**
>
> Då måste det vara något problem med kolumnen antal_platser. Är det rätt version av databasen du kopplar upp dig mot? 
> T.ex. att du inte har laddat upp den senaste versionen till servern?

Hejsan! Vet du, jag har inte varit i databasen och pillat idag, men jag har haft den öppen för att dubbelkolla att kolumnnamnen var rätt. Jag testade det du sa, att skicka upp den igen (trots att jag inte ändrat nått) och helt plösligt funkar koden.  :q Fattar absolut inte hur det ska ha kunnat påverka koden, men tydligen gjorde det det. Eller så var det nått annat som blivit fixat nu med era förslag.

Så **Tusen tack LarsG, Ekström &  Eitraz !!!**    :bire    :)

Permalänk: https://www.webforum.nu/p/851590

---

Tråden på webben: https://www.webforum.nu/amne/asp/58652-data-type-mismatch-in-criteria-expression
