/ 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 Server fejl....
Fra : "Bo


Dato : 11-06-01 15:34

Hej

Jeg har konverteret min Access database til SQL server og nu er der
opstået en fejl i følgende kode:

<!--#include file ="conn.asp"-->
<%
strBannernavn = request.querystring("Bannernavn")
Set rsBanner = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM Banner WHERE Bannernavn = '" & strBannernavn & "'"
rsBanner.Open strSQL, Conn, 1, 3

rsBanner("Hits") = rsBanner("Hits") + 1
strUrl = "http://" & rsBanner("WWWKlik")
rsBanner.Update
rsBanner.close
conn.close
Response.Redirect(strUrl)
%>

Fejlen er:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near
'='.
/bob sql/redirect.asp, line 10

Og det virker perfekt, når jeg bruger Access? Hvad kan der være galt ?

Mvh
Bo




--
Med venlig hilsen
Peter Martinsen
Brick-Systems



 
 
Jakob Andersen (11-06-2001)
Kommentar
Fra : Jakob Andersen


Dato : 11-06-01 15:36

"Bo <GB> Hansen" <xcaer3@mail.dk> wrote in message
news:9g2kpp$9hi$1@news.inet.tele.dk...
> Fejlen er:
> Error Type:
> Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax
near
> '='.
> /bob sql/redirect.asp, line 10

Er du sikker på at Request.Querystring("Bannernavn") ikke er tom?

Har du prøvet at udskrive din SQL istedet for at eksekvere den?

--
Jakob Andersen
FAQ for webdesign gruppen på
<http://www.usenet.dk/oss/dk.edb.internet.webdesign>
"Det er rart at være vigtig, men det er vigtigere at være rar "



"Bo (11-06-2001)
Kommentar
Fra : "Bo


Dato : 11-06-01 16:09

"Jakob Andersen" <jakob@andersen.as> wrote in message
news:9g2l87$mr7$1@sunsite.dk...
> "Bo <GB> Hansen" <xcaer3@mail.dk> wrote in message
> news:9g2kpp$9hi$1@news.inet.tele.dk...
> > Fejlen er:
> > Error Type:
> > Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> > [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax
> near
> > '='.
> > /bob sql/redirect.asp, line 10
>
> Er du sikker på at Request.Querystring("Bannernavn") ikke er tom?

Ja, den er ikke tom.

> Har du prøvet at udskrive din SQL istedet for at eksekvere den?

Nej, men jeg har lige lavet en debug på den og rsBanner("Hits") er 113.

--
Bo



Lauritz Jensen (11-06-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 11-06-01 15:48

"Bo Hansen" wrote:
>
> Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect
> syntax near '='.
> /bob sql/redirect.asp, line 10

Hvilken datatype har kolonnen "Bannernavn"?

--
Lauritz

"Bo (11-06-2001)
Kommentar
Fra : "Bo


Dato : 11-06-01 16:11

"Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
news:3B24DA2F.86F72813@hotmail.com...
> "Bo Hansen" wrote:
> >
> > Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> > [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect
> > syntax near '='.
> > /bob sql/redirect.asp, line 10
>
> Hvilken datatype har kolonnen "Bannernavn"?

Nvarchar (50)

--
Bo



Asbjørn Ulsberg (11-06-2001)
Kommentar
Fra : Asbjørn Ulsberg


Dato : 11-06-01 15:57

"Bo <GB> Hansen" <xcaer3@mail.dk> skrev:
> rsBanner.Open strSQL, Conn, 1, 3

I stedet for Open (det vil si ADO) bør du kjøre
SQL-setningene i Conn.Execute(SQL-setning) slik:

<%

Dim objConn, objRS, strConn, strSQL, strBannerNavn

strConn = "DRIVER={SQL Server};" &_
"SERVER=SQLServer;" &_
"DATABASE=DataBase;" &_
"UID=Brukernavn;" &_
"PWD=Passord"

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open(strConn)

strBannernavn = request.querystring("Bannernavn")
strSQL = "SELECT * FROM Banner " &_
"WHERE Bannernavn='" & strBannerNavn & "'"

Set objRS = objConn.Execute(strSQL)

'...Heretter er det bare å føre på din kode...

%>

Grunnen til at du bør bruke Execute() på denne måten
når du jobber med SQL-server er at det er mye kraftigere
(og bedre støttet) enn ADO. ADO jobber på IIS'en, mens
SQL-setninger gjennom Execute() jobber på SQL-serveren
og går derfor mye raskere (i de aller fleste tilfeller).

--
Mvh
Asbjørn Ulsberg
asbjorn@tigerstaden.no



"Bo (11-06-2001)
Kommentar
Fra : "Bo


Dato : 11-06-01 16:10

"Asbjørn Ulsberg" <asbjorn@tigerstaden.no> wrote in message
news:9g2m7p$2ne$1@taliesin.netcom.net.uk...
> "Bo <GB> Hansen" <xcaer3@mail.dk> skrev:
> > rsBanner.Open strSQL, Conn, 1, 3
>
> Grunnen til at du bør bruke Execute() på denne måten
> når du jobber med SQL-server er at det er mye kraftigere
> (og bedre støttet) enn ADO. ADO jobber på IIS'en, mens
> SQL-setninger gjennom Execute() jobber på SQL-serveren
> og går derfor mye raskere (i de aller fleste tilfeller).

Ja, men det er kun et lille system, og alle mine andre ADO
sider virker fint.

--
Bo



Lauritz Jensen (11-06-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 11-06-01 16:37

"Asbjørn Ulsberg" wrote:
>
> Grunnen til at du bør bruke Execute() på denne måten
> når du jobber med SQL-server er at det er mye kraftigere
> (og bedre støttet) enn ADO. ADO jobber på IIS'en, mens
> SQL-setninger gjennom Execute() jobber på SQL-serveren
> og går derfor mye raskere (i de aller fleste tilfeller).

Det er ikke korrekt. Ligegyldigt om du bruger open til at åbne
recordsettet eller execute eller execute til at få en reference til et
nyt recordset, så bruger du ado.

--
Lauritz

Asbjørn Ulsberg (12-06-2001)
Kommentar
Fra : Asbjørn Ulsberg


Dato : 12-06-01 07:39

"Lauritz Jensen" <lauritz2@hotmail.com> skrev:
> > Grunnen til at du bør bruke Execute() på denne måten
> > når du jobber med SQL-server er at det er mye kraftigere
> > (og bedre støttet) enn ADO. ADO jobber på IIS'en, mens
> > SQL-setninger gjennom Execute() jobber på SQL-serveren
> > og går derfor mye raskere (i de aller fleste tilfeller).
> Det er ikke korrekt. Ligegyldigt om du bruger open til at åbne
> recordsettet eller execute eller execute til at få en reference
> til et nyt recordset, så bruger du ado.

Jo, det er greit. Men bruker du Open gjøres jobben med recordsettet
på IIS, mens om du henter det ut vha en SQL-setning gjennom Execute(),
gjøres jobben på SQL-serveren.

--
Mvh
Asbjørn Ulsberg
asbjorn@tigerstaden.no



Lauritz Jensen (11-06-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 11-06-01 17:05

"Bo Hansen" wrote:
>
> Jeg har konverteret min Access database til SQL server og nu er der
> opstået en fejl i følgende kode:
>
> <!--#include file ="conn.asp"-->
> <%
> strBannernavn = request.querystring("Bannernavn")
> Set rsBanner = Server.CreateObject("ADODB.RecordSet")
> strSQL = "SELECT * FROM Banner WHERE Bannernavn = '" &
> strBannernavn & "'"
> rsBanner.Open strSQL, Conn, 1, 3
>
> rsBanner("Hits") = rsBanner("Hits") + 1
> strUrl = "http://" & rsBanner("WWWKlik")
> rsBanner.Update
> rsBanner.close
> conn.close
> Response.Redirect(strUrl)
> %>
>
> Fejlen er:
> Error Type:
> Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect
> syntax near '='.
> /bob sql/redirect.asp, line 10

Nu er det ikke helt tydeligt hvilken linie som er nummer 10. Men kan det
passe at det er Update-linien? Så ville jeg nok foreslå, at du lavede
din kode lidt om:

<!--#include file ="conn.asp"-->
<%
strBannernavn = request.querystring("Bannernavn")

strSQL = "UPDATE Banner " & _
"SET Hits=Hits+1 " & _
"WHERE Bannernavn = '" & _
Replace(strBannernavn, "'", "''") & "'"
Conn.Execute strSQL, , &h80

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM Banner WHERE Bannernavn = '" & _
Replace(strBannernavn, "'", "''") & "'"
rs.Open strSQL, Conn, 0, 1, 1
strUrl = "http://" & rs("WWWKlik")
rs.close
Set rs = Nothing
conn.close

Response.Redirect(strUrl)
%>

--
Lauritz

"Bo (11-06-2001)
Kommentar
Fra : "Bo


Dato : 11-06-01 18:38

"Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
news:3B24EC39.D14C7DD9@hotmail.com...
> Nu er det ikke helt tydeligt hvilken linie som er nummer 10. Men kan det
> passe at det er Update-linien? Så ville jeg nok foreslå, at du lavede
> din kode lidt om:

Ja, det er i updatelinien.

>
> <!--#include file ="conn.asp"-->
<cut kode>
Ja, det virker... Men hvorfor kan det andet ikke virke ?

Kan det have noget at gøre med hvordan flg. linie ser ud ?

> rs.Open strSQL, Conn, 0, 1, 1

--
Bo



Jakob Andersen (11-06-2001)
Kommentar
Fra : Jakob Andersen


Dato : 11-06-01 19:18

"Bo <GB> Hansen" <xcaer3@mail.dk> wrote in message
news:9g2vi0$cv2$1@news.inet.tele.dk...
> > rs.Open strSQL, Conn, 0, 1, 1

Her bruger Lauritz en forward only cursor på et readonly Recordset med en
textual option dvs en almindelig SQLforespørgsel.Og det er jo også fint nok
da han her bare hiver data ud ikke noget med at opdatere.

--
Jakob Andersen
FAQ for webdesign gruppen på
<http://www.usenet.dk/oss/dk.edb.internet.webdesign>
"Det er rart at være vigtig, men det er vigtigere at være rar "



Lauritz Jensen (11-06-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 11-06-01 20:20

"Bo Hansen" wrote:
>
> "Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
> news:3B24EC39.D14C7DD9@hotmail.com...
> > Nu er det ikke helt tydeligt hvilken linie som er nummer 10. Men kan det
> > passe at det er Update-linien? Så ville jeg nok foreslå, at du lavede
> > din kode lidt om:
> <cut kode>
> Ja, det virker... Men hvorfor kan det andet ikke virke ?
>
> Kan det have noget at gøre med hvordan flg. linie ser ud ?
> > rs.Open strSQL, Conn, 0, 1, 1

Ja, det var jo min arbejdshypotese. Da det var update'n, der fejlede
gættede jeg på at database-driveren prøvede (uden held) at omskrive din
select til en update.

--
Lauritz

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

Månedens bedste
Årets bedste
Sidste års bedste