Toon posts:

[SQL & ASP] SQL syntax fout door variabelnaam

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe moet je een variablenaam (het is of een integer of een string) in een SQL query krijgen? Ik weet niet zeker of dat het probleem is, maar ik zal het hieronder verder uitleggen:

Aan de hand van welk forum er in de querystring staat worden de posts uit de table gehaald. Daarbij worden alleen de bovenste posts eruit gehaald, dus sneller. Daarnaast worden ze negatief gerangschikt op postId:

Dim QuerystringForumId
QuerystringForumId = Request.Querystring("forum")

objAcc.Execute("SELECT * FROM Posts WHERE ForumId = QuerystringForumId AND PostPlace = 0 ORDER BY TopicId DESC")

Ik krijg bij de bovenstaande query devolgende foutmelding:

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

[Microsoft][ODBC Microsoft Access-stuurprogramma] Too few parameters. Expected 1.

/webscripts/forum/subs.asp, regel 16

Op microsoft.com hebben ze het over niet bestaande records, maar echt alles bestaat, dus wat is er mis? doei

tmmk

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:33
Verwijderd schreef op 19 September 2002 @ 19:58:
Hoe moet je een variablenaam (het is of een integer of een string) in een SQL query krijgen? Ik weet niet zeker of dat het probleem is, maar ik zal het hieronder verder uitleggen:

Aan de hand van welk forum er in de querystring staat worden de posts uit de table gehaald. Daarbij worden alleen de bovenste posts eruit gehaald, dus sneller. Daarnaast worden ze negatief gerangschikt op postId:

Dim QuerystringForumId
QuerystringForumId = Request.Querystring("forum")

objAcc.Execute("SELECT * FROM Posts WHERE ForumId = QuerystringForumId AND PostPlace = 0 ORDER BY TopicId DESC")

Ik krijg bij de bovenstaande query devolgende foutmelding:

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

[Microsoft][ODBC Microsoft Access-stuurprogramma] Too few parameters. Expected 1.

/webscripts/forum/subs.asp, regel 16

Op microsoft.com hebben ze het over niet bestaande records, maar echt alles bestaat, dus wat is er mis? doei

tmmk



Too few parameters wil zeggen dat er een syntaxfout in je query zit.
In jouw geval is dat, dat je de variablenamen gebruikt in je query terwijl je eigenlijk de inhoud van die variablen moet gebruiken.
Dit is eigenlijk redelijk basic programming practice:

code:
1
2
sqlstr = "SELECT * FROM tabel WHERE id = " & ForumId & " 
             AND Name = '& blaat & "'";

https://fgheysels.github.io/


Verwijderd

Topicstarter
Thnx, ik wist niet dat dat in SQL queries nodig was. doei

tmmk

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Probeer het eens zo:
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim strSQL
Dim rsTmp

strSQL = "SELECT * " _
           & "FROM Posts " _
           & "WHERE ForumId = " + CStr(Request.Querystring("forum")) + " " _
           & "AND PostPlace = 0 " _
           & "ORDER BY TopicId DESC"
Set rsTmp = Server.CreateObject("ADODB.Recordset")
rsTmp.Ooen strSQL, objAcc, 3, 1
------code-------
rsTmp.Close
Set rsTmp = Nothing

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:33
me dunkt dat jij eens dringend een cursus/tutorial SQL en ASP bij de hand moet nemen...

https://fgheysels.github.io/


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wie ikke?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

Ik gok tmmk :+

Het enige minder handige in je code wat ik kan ontdekken is:

code:
1
CStr(Request.Querystring("forum"))


Ik weet ook niet zeker of + altijd goed gaat; persoonlijk gebruik ik &

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-08 23:12
gorgi_19 schreef op 20 september 2002 @ 00:36:
[/code]

Ik weet ook niet zeker of + altijd goed gaat; persoonlijk gebruik ik &
Dat is gebruikelijk in VB code. Het kan gebeuren dat je denkt dat je twee strings aan het plakken bent, terwijl VB vind dat ie twee integers moet optellen en dat naar een string moet omzetten.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Anders gezegt, met een + kijkt VB(script) of de 2 strings getallen zijn, en zo ja, gaat ie rekenen. & is daarom _altijd_ beter omdat dat per definitie strings-aan-elkaar-plakken (;)) is.

Exact expert nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:33

https://fgheysels.github.io/


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Als je CStr() gebruikt mag je ook een + gebruiken.

edit:

& moest + zijn

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Da's waar. Maar als je nou gewoon aanleerd dat + tellen is en & strings-plakken dan kunnen dat soort stomme foutjes (1 + 1 = 2 ipv 1 & 1 = 11) iig niet voor :)

[edit]las verkeerd. & mag altijd aangezien vbscript zelf wel ff uitzoekt welk datatype het over gaat. Bij + zal ie in 1e instantie kijken of het om numerieke waardes gaat, bij & behandelt ie ze sowieso als string. Al is Cstr() gebruiken wel netjes.

Exact expert nodig?

Pagina: 1