/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL spørgsmål fra nybegynder
Fra : T@tnet.dk


Dato : 11-11-01 20:19

Hej

Jeg får følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

når jeg udfører :

Dim StrPostSQL
StrPostSQL = "SELECT * FROM POSTNR WHERE POSTNR=8000 ORDER BY POSTNR"

Dim ObjpnRS
Set objpnRS = Server.CreateObject("ADODB.Recordset")
ObjpnRS.Open StrPostSQL,ObjBrugerConn <---- Det er her jeg får fejl

Er der nogen der har en forklaring?

Thomas






 
 
Jesper Nielsen (11-11-2001)
Kommentar
Fra : Jesper Nielsen


Dato : 11-11-01 20:32

> Dim StrPostSQL
> StrPostSQL = "SELECT * FROM POSTNR WHERE POSTNR=8000 ORDER BY POSTNR"

Hvorfor har by en ORDER BY med her? Skulle jo helst kun få ét resultat.


> Dim ObjpnRS
> Set objpnRS = Server.CreateObject("ADODB.Recordset")
> ObjpnRS.Open StrPostSQL,ObjBrugerConn <---- Det er her jeg får fejl
>
> Er der nogen der har en forklaring?

Du bør ikke bruge ADODB.Recordset. Brug istedet ADODB.Connection på følgende
måde:

<%
Option Explicit
Dim Conn, Query

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("strConnect") ' [*1]

Set Query = Conn.Execute("SELECT * FROM Postnr WHERE Postnr = 8000;")

If Query.Eof = False Then
Response.Write Query("By")
Else
Response.Write("Postnummeret eksisterer ikke!")
End If
%>

/jesper/



Jesper Nielsen (11-11-2001)
Kommentar
Fra : Jesper Nielsen


Dato : 11-11-01 20:34

> Conn.Open Application("strConnect") ' [*1]

Glemte lige kommentaren...

[*1]
Såfremt du har lagt connect stringen i en Application variabel. Du kan
selvfølgelig også indsætte connect stringen hvert sted, men det er nok ikke
den bedste løsning. Jeg har vænnet mig til at benytte en Application
variabel.

/jesper/



T@tnet.dk (11-11-2001)
Kommentar
Fra : T@tnet.dk


Dato : 11-11-01 20:52

Tak for det hurtige svar Jesper. Kunne jeg få dig til at give mig et
eksempel på hvordan denne connect string skal se ud?

PÅ forhånd tak

Thomas

"Jesper Nielsen" <jn@nielsenit.dk> wrote in message
news:hoAH7.4133$Gt.448276@news000.worldonline.dk...
> > Conn.Open Application("strConnect") ' [*1]
>
> Glemte lige kommentaren...
>
> [*1]
> Såfremt du har lagt connect stringen i en Application variabel. Du kan
> selvfølgelig også indsætte connect stringen hvert sted, men det er nok
ikke
> den bedste løsning. Jeg har vænnet mig til at benytte en Application
> variabel.
>
> /jesper/
>
>



Jesper Nielsen (11-11-2001)
Kommentar
Fra : Jesper Nielsen


Dato : 11-11-01 23:38

> Tak for det hurtige svar Jesper. Kunne jeg få dig til at give mig et
> eksempel på hvordan denne connect string skal se ud?

Jeg bruger selv SQL Server, og her til ser den således ud:
Application("strConnect") = "PROVIDER=SQLOLEDB.1; SERVER=192.168.100.2;
DATABASE=bStream; UID=bStream; PWD=**********; NETWORK=DBMSSOCN;"

Men du kan se mere om connect strings på
http://azero.dk/?/support/windows/dsn/

/jesper/



Anders Holbøll (11-11-2001)
Kommentar
Fra : Anders Holbøll


Dato : 11-11-01 22:42

Jesper Nielsen wrote:
>
> Du bør ikke bruge ADODB.Recordset.

Hvorfor?

> Conn.Open Application("strConnect") ' [*1]

Hvorfor benytte en application-variabel? Hvorfor ikke blot erklærer en
constant med værdien?

--
Anders

Jesper Nielsen (11-11-2001)
Kommentar
Fra : Jesper Nielsen


Dato : 11-11-01 23:42

> Hvorfor?

Fordi der er overhead forbundet med brugen af recordset objektet.

/jesper/



Anders Holbøll (11-11-2001)
Kommentar
Fra : Anders Holbøll


Dato : 11-11-01 23:46

Jesper Nielsen wrote:
>
> > Hvorfor?
>
> Fordi der er overhead forbundet med brugen af recordset objektet.

Det som Conn.Execute retunerer er jo netop et recordset.

--
Anders

Jesper Nielsen (12-11-2001)
Kommentar
Fra : Jesper Nielsen


Dato : 12-11-01 00:10

> > > Hvorfor?
> >
> > Fordi der er overhead forbundet med brugen af recordset objektet.
>
> Det som Conn.Execute retunerer er jo netop et recordset.

http://www.aspfaq.com/show.asp?id=2191

/jesper/



Anders Holbøll (12-11-2001)
Kommentar
Fra : Anders Holbøll


Dato : 12-11-01 00:36

Jesper Nielsen wrote:
>
> > > > Hvorfor?
> > >
> > > Fordi der er overhead forbundet med brugen af recordset
> > > objektet.
> >
> > Det som Conn.Execute retunerer er jo netop et recordset.
>
> http://www.aspfaq.com/show.asp?id=2191

De siger at recordsets er onde når du laver insert, update (og jeg
tilføjer) delete. Naturligvis, der er jo ikke noget records.

De siger ikke direkte at Conn.Execute er bedre end Rs.Open. De siger
slet ikke hvorfor.

De siger at Command-objekter er overflødige. Hvis man arbejder med
f.eks. sql-server er det jo i hvert fald løgn.

--
Anders

Anders Holbøll (11-11-2001)
Kommentar
Fra : Anders Holbøll


Dato : 11-11-01 22:40

"T@tnet.dk" wrote:
>
> Jeg får følgende fejl:
> Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
> [Microsoft][ODBC Microsoft Access Driver] Too few parameters.
> Expected 1.
>
> StrPostSQL = "SELECT * FROM POSTNR WHERE POSTNR=8000 ORDER BY
> POSTNR"

Det er en fejl, access giver når du har skrevet et forkert kolonnenavn.
Check at du har stavet tabelnavn og kolonnenavn rigtigt. Klip evt.
sql'en ind i en forespørgsel i access, så får du normalt en lidt mere
fyldestgørende fejlbesked.

--
Anders

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste