---
title: "Typblandsningfel i villkorsytryck Datareader"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/88356-typblandsningfel-i-villkorsytryck-datareader"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Prästen"
published: "2003-10-12T20:10:23.000Z"
updated: "2003-10-14T14:01:47.000Z"
replies: 21
views: 470
page: 1
pages: 2
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/dotnet/88356-typblandsningfel-i-villkorsytryck-datareader"
---

# Typblandsningfel i villkorsytryck Datareader

_Sida 1 av 2._

## #1 — Prästen, 2003-10-12T20:10Z

OleDbCommand objCommand=new OleDbCommand("SELECT \* FROM Orter WHERE nr=302", objConnection);

    OleDbDataReader objDataReader=null;
    objConnection.Open();
    objDataReader=objCommand.ExecuteReader();

och den klagar på 
objDataReader=objCommand.ExecuteReader();

får:Exception Details: System.Data.OleDb.OleDbException: Typblandningsfel i villkorsuttryck.

men om jag istället bara ändrar SQL satsen till
"SELECT \* FROM Orter"

så funkar det, jag använder Webmatrix, kan det vara så att den är buggig och inte kan kompilera eller nåt sånt?, eftersom jag har haft väldigt många underlig fel på sistone, där ena sekunden funkar det men andra sek inte??.

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

## #2 — Engine^, 2003-10-12T20:17Z

Kontrollera så att kolumnen *nr* verkligen är av rätt typ, så det inte är Text eller annat dumt...

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

## #3 — Prästen, 2003-10-12T20:21Z

Juuuust, kom på det precis ;) ;) . heheh, tack ändå kompis.

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

## #4 — Engine^, 2003-10-12T20:35Z

Varsågod.

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

## #5 — m_soderlund, 2003-10-13T08:50Z

Något som alltid är bra att göra, och som jag tycker att man ska ha som regel på en sida som ansluter till en databas, är att lägga SQL-satsen i en variabel, exempelvis en variabel med namnet *SQL*. Ur felsökningssynpunkt blir det oerhört mycket lättare att felsöka, då man kan skriva ut variabeln SQL och kolla om den gör det som förväntas att den ska göra. Alltså, använd

```
string SQL = "SELECT falt1,falt2,.... FROM tabell";
OleDbCommand objCommand=new OleDbCommand(SQL, objConnection);
```

i stället för

```
OleDbCommand objCommand=new OleDbCommand("SELECT falt1,falt2,.... FROM tabell", objConnection);
```

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

## #6 — Josef, 2003-10-13T17:45Z

Eller så använder man *Stored Procedures*...

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

## #7 — trexter, 2003-10-13T18:15Z

> **m_soderlund skrev:**
>
> Ur felsökningssynpunkt blir det oerhört mycket lättare att felsöka, då man kan skriva ut variabeln SQL och kolla om den gör det som förväntas att den ska göra.

Det går bra utan den "klassiska klassisk-ASP-metoden" Response.Write("strSQL"). Det går bra att använda try- och catch-block och eventuellt skriva ut information genom metoder i klassen OdbcCommand el dyl. På så sätt slipper man några sekunders onödigt arbete.

 :)

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

## #8 — Engine^, 2003-10-13T18:25Z

> **Josef skrev:**
>
> Eller så använder man *Stored Procedures*...

Förutsatt att man inte kör mot en Accessdatabas x(

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

## #9 — Dino, 2003-10-13T18:35Z

Du kan väl köra sp i Access, fast där kallas de frågor.

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

## #10 — Engine^, 2003-10-13T18:58Z

En Accessdatabas (.mdb) hanterar inte *Stored procedures* och en fråga/query är inte samma sak.

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

## #11 — Dino, 2003-10-13T19:51Z

Och men detta funkar iaf vare sig det är en sp eller inte.

I access skapas en fråga som heter "testquery":

```
SELECT * FROM Orter WHERE nr = @NR
```

och lite slarvkodat så kan koden se ut så här:

```
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb");

OleDbCommand cmd = new OleDbCommand("testquery", conn);
cmd.CommandType = CommandType.StoredProcedure;
OleDbParameter p = new OleDbParameter();
p = cmd.Parameters.Add("@ID", OleDbType.Integer);
p.Direction = ParameterDirection.Input;
p.Value = Convert.ToInt32([i]Därifrån_du får_numret[/i]);

conn.Open();
dgTest.DataSource = cmd.ExecuteReader();
dgTest.DataBind();
conn.Close();
```

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

## #12 — Engine^, 2003-10-13T21:05Z

Jag erkänner mig förvirrad. :l

Hur mycket kan man jämföra en sp i SQL Server och en query i Access? Jag vet att jag läst att Access *inte* stödjer sp, så även om det kan vara mycket praktiskt att kunna använda sig av t.ex. ditt kodexempel, **Dino**, så måste det väl bli galet någonstans... eller tolkar/översätter Access/OleDb *CommandType.StoredProcedure* till något i stil med "Query exists in .mdb"?

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

## #13 — Vimp, 2003-10-13T21:10Z

Det går bra att köra frågorna som SP.
Här kan du se ett exempel där jag har gjort det..
<http://www.aspsidan.nu/default.asp?page=readArticle&menu=2&aId=108>

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

## #14 — Engine^, 2003-10-13T21:15Z

> **Vimp skrev:**
>
> Det går bra att köra frågorna som SP.
> Här kan du se ett exempel där jag har gjort det..
> <http://www.aspsidan.nu/default.asp?page=readArticle&menu=2&aId=108>

Man tackar för det exemplet **Vimp**.

Jag är dock fortfarande förvirrad över hur Access hanterar en SP.

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

## #15 — Dino, 2003-10-13T21:17Z

> **Engine^ skrev:**
>
> Jag är dock fortfarande förvirrad över hur Access hanterar en SP.

Kalla in LarsG. :i

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

## #16 — Engine^, 2003-10-13T21:18Z

> **Dino skrev:**
>
> > **Engine^ skrev:**
> >
> > Jag är dock fortfarande förvirrad över hur Access hanterar en SP.
>
> Kalla in LarsG. :i

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

## #17 — Vimp, 2003-10-13T21:22Z

Jag har hört att det ska gå segare om man kör SP i Access.
Vet dock ej om det stämmer.

:)

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

## #18 — LarsG, 2003-10-14T08:09Z

God morgon.

Som sagt så har Access stöd för en form av lagrade procedurer

```
 CREATE PROCEDURE ProcedureName
   (Parameter1 datatype, ...) AS
   SQLStatement
```

Man kan alltså ha parametrar och ett statement. Det finns inget stöd för lokala variabler eller flödeskontroll.

Procedurerna är inte förkompilerade. Vid exekvering av en procedur så hämtas definitionen som sedan kompileras. Det blir alltså långsammare än att själv bygga ihop motsvarande sql-sats och exekvera den direkt.

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

## #19 — m_soderlund, 2003-10-14T08:43Z

Tackar, LarsG! Det där klarade ut en del för mig och förhoppningsvis andra också. :bire

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

## #20 — Engine^, 2003-10-14T09:18Z

Ok, det går alltså att använda CREATE PROCEDURE i Access, men det är bara dumt. Min förvirring är som bortblåst :)

Hanteras en färdig Query i Access på samma sätt om man anger den som SP?

Känns som om det är lika bra att fortsätta fråga i den här tråden även om det inte har med rubriken att göra...

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/88356-typblandsningfel-i-villkorsytryck-datareader  
Nästa sida: https://www.webforum.nu/amne/dotnet/88356-typblandsningfel-i-villkorsytryck-datareader/page2.md
