|
| 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
| |
|
|