Toon posts:

[ASP + SQL] Count (*) werkt niet?

Pagina: 1
Acties:
  • 78 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,
Ik heb een asp pagina waar ik vakantiehuisjes kan boeken, alleen mag dit natuurlijk niet dubbel worden geboekt..
nu heb ik de volgende SQL Query:

SQL = ("SELECT COUNT(*) FROM TblBoek WHERE '"& rs("huurtvan") & "' <= '"&request.form("eindweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("eindweek")&"' OR ('"& rs("huurtvan") & "' <= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("beginweek")&"') OR ('"& rs("huurtvan") & "' >= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' <= '"&request.form("eindweek")&"')")

Het gaat hierbij met weeknummers (dus niet met datum notaties)

Nu wil ik dus controleren mbv een If commando:

If SQL >= 1 then
Response.write("Deze data zijn al bezet ! kies een andere!")
Else

" SCHRIJF WEG"

End if

Bij de uitkomst moet je rij 1 cel 1 ophalen. Hier krijg je een getal. Dit MOET 0 zijn, anders zijn er overlappende items, Is het 0 => Ingevoerde item is OK, is het 1 => actie cancellen en en maatregel nemen

Alleen nu krijg ik deze melding:

Runtimefout Microsoft VBScript (0x800A000D)
Typen komen niet met elkaar overeen: '[string: "SELECT COUNT(*) FROM"]'

ik snap er nix meer van :)
Weet iemand misschien een oplossing?
thnx alvast!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Doe eens gewoon de resulterende query outputten en hier pasten, waarschijnlijk zie je het dan sneller... :+

Professionele website nodig?


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

offtopic:
hoeft geen haakjes om je sqlstring heen ;)


en idd print hem eens naar het scherm ofzo..

[ Voor 44% gewijzigd door j_du_pee op 25-09-2003 13:31 ]

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Topicstarter
SELECT COUNT(*) FROM TblBoek WHERE '0' <= '4' AND '0' >= '4' OR ('0' <= '1' AND '0' >= '1') OR ('0' >= '1' AND '0' <= '4')

op mn scherm

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Dit klopt voor geen meter natuurlijk: WHERE '0' <= '4' is altijd TRUE. Dat moet iets zijn van WHERE rs("huurtvan") < '4'.

Verwijderd

Topicstarter
dat IS ts("huurtvan").... dat is de waarde in die record..
maar moet ik ook niet de hele recordset doorlopen ?
dus rs.movenext?

[ Voor 73% gewijzigd door Verwijderd op 25-09-2003 13:29 ]


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

uhm zijn die getallen veldnamen?
dat kan niet echt kloppen :? 0<4 and 0>4 :?

de fout de je krijgt is iig dat je checkt of sql > 1 is denk ik. Je wil in werkelijkheid het resultaat van een nog uit te voeren query weten...

edit: dus zoiets:
rs("aantal")>0

maar kijk eerst nog eens je qry na, want dat kan echt niet de bedoeling zijn ;)

[ Voor 24% gewijzigd door j_du_pee op 25-09-2003 13:30 ]

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Laat je ASP-code 'ns zien... Je foutmelding vertelt ons dat het aan VB ligt, dus (nog) niet aan je query.

:7

  • DaRace
  • Registratie: Juni 2001
  • Laatst online: 03-10-2023
je hebt helemaal geen veldnamen in je where gedeelte staan! where 0<=4 ???

Verwijderd

Topicstarter
DIT is mijn sql code in mn pagina: (ASP)
SQL = ("SELECT COUNT(*) FROM TblBoek WHERE '"& rs("huurtvan") & "' <= '"&request.form("eindweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("eindweek")&"' OR ('"& rs("huurtvan") & "' <= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("beginweek")&"') OR ('"& rs("huurtvan") & "' >= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' <= '"&request.form("eindweek")&"')")

en DIT is de sql code op het scherm geprint:
SELECT COUNT(*) FROM TblBoek WHERE '0' <= '4' AND '0' >= '4' OR ('0' <= '1' AND '0' >= '1') OR ('0' >= '1' AND '0' <= '4')

[ Voor 46% gewijzigd door Verwijderd op 25-09-2003 13:32 ]


Verwijderd

Waarom staan er haakjes om je string??? -> SQL = ("....") ???

Verwijderd

Topicstarter
omdat ie later wordt uitgevoerd met:
objverbinding.execute(SQL)

Verwijderd

Jouw foutmelding geeft aan dat de typen niet overeen komen. Iets met een string. Ben je niet een integer met een string aan het vergelijken, zoiets als:

If resultaat = 1 Then ...

Terwijl je dit nodig hebt:

If CLng(resultaat) = 1 Then ...

?

:7

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Verwijderd schreef op 25 september 2003 @ 13:34:
Waarom staan er haakjes om je string??? -> SQL = ("....") ???
Verwijderd schreef op 25 September 2003 @ 13:34:
omdat ie later wordt uitgevoerd met:
objverbinding.execute(SQL)
Jaja, dat slaat als een lul in een bord yoghurt. Die haakjes hebben helemaal niets met het uitvoeren te maken.

Jij snapt de basisdingen van ASP en SQL niet helemaal krijg ik het idee.

Een SQL string word ongeveer zo:
ASP:
1
SQL = "SELECT COUNT(*) FROM Tabel WHERE Leeftijd >= " + getal 

en niet:
ASP:
1
SQL = "SELECT COUNT(*) FROM Tabel WHERE " + Leeftijd + " >= " + getal 

[ Voor 19% gewijzigd door André op 25-09-2003 13:40 ]


Verwijderd

Topicstarter
André schreef op 25 September 2003 @ 13:38:
[...]


[...]

Jaja, dat slaat als een lul in een bord yoghurt. Die haakjes hebben helemaal niets met het uitvoeren te maken.

Jij snapt de basisdingen van ASP en SQL niet helemaal krijg ik het idee.
dus... kheb et uit een boek dus nie zeuren, als je me niet wilt helpen reageer dan niet.. kben ook maar een beginner hierin hoor... zucht.. net of jij nooit begonnen bent en dingen moest vragen?

Verwijderd

Topicstarter
If resultaat = 1 Then ...

Terwijl je dit nodig hebt:

If CLng(resultaat) = 1 Then ...

ik gebruikte die bovenste
maar wat is CLng? thnx!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
CLng cast iets naar een long.

https://fgheysels.github.io/


Verwijderd

Verwijderd schreef op 25 september 2003 @ 13:34:
Waarom staan er haakjes om je string??? -> SQL = ("....") ???
Tja, dit vroeg ik meer omdat ik het zelf nog nooit gezien heb, en dus ook nooit gebruik. Maar die haakjes mogen dus blijkbaar.

Anyway, wat ik interessanter vind: Waar treedt die fout nou precies op? En welke aanroep doe je in je ASP om het resultaat uit te lezen? Show me more ASP-code...

Verwijderd

whoami schreef op 25 September 2003 @ 13:42:
CLng cast iets naar een long.
Long of Integer zijn in ASP hetzelfde. Trouwens, ik raad iedereen aan om CInt snel te vergeten in ASP, want je zal eerder fouten genereren omdat numerieke waarden groter dan 32000 een CInt niet accepteren...

Use CLng!!!

:7

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

Verwijderd schreef op 25 September 2003 @ 13:43:
[...]

Anyway, wat ik interessanter vind: Waar treedt die fout nou precies op? En welke aanroep doe je in je ASP om het resultaat uit te lezen? Show me more ASP-code...
j_du_pee schreef op 25 September 2003 @ 13:28:
de fout de je krijgt is iig dat je checkt of sql > 1 is denk ik. Je wil in werkelijkheid het resultaat van een nog uit te voeren query weten...
;)

aanvulling: je kijkt dus of een string groter dan 1 is
je wilt iets als rs("aantal")>1 testen, waarbij rs het resultaat is van de uitgevoerde sql...

[ Voor 13% gewijzigd door j_du_pee op 25-09-2003 13:47 ]

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Topicstarter
ok hier de code
SQL = ("SELECT COUNT(*) FROM TblBoek WHERE '"& rs("huurtvan") & "' <= '"&request.form("eindweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("eindweek")&"' OR ('"& rs("huurtvan") & "' <= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("beginweek")&"') OR ('"& rs("huurtvan") & "' >= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' <= '"&request.form("eindweek")&"')")
objverbinding.execute(SQL)
If SQL >= 1 then
Response.write("Deze data zijn al bezet ! kies een andere!")
Else
SQL = "INSERT INTO TblBoek(VerblijfID, Achternaam, Voorletters, Adres, Huisnummer, Postcode, Plaats, Land, Telefoon , Emailadres, Geboortedatum, Reknr, Huurtvan, Huurttot) VALUES ('"&request.Form("Idnummer")& "', '"&request.Form("Achternaam")&"', '"&request.Form("Voorletters")&"', '"&request.Form("Adres")&"', '"&request.Form("Huisnummer")&"', '"&request.Form("Postcode")&"', '"&request.Form("Woonplaats")&"', '"&request.Form("Land")&"', '"&request.Form("Telnr")&"', '"&request.Form("Email")&"', '"&request.Form("Gebdat")&"', '"&request.Form("Reknr")&"', '"&request.Form("Beginweek")&"', '"&request.Form("Eindweek")&"')"
Objverbinding.Execute(SQL)


Response.Write("<p class='hoofdtxt'>Uw reis is gereserveerd!</p>" &_
"<br>" &_
"<br>" &_
"Uw reis is reserveerd")
end if

Foutmelding treed op bij :
Typen komen niet met elkaar overeen: '[string: "SELECT COUNT(*) FROM"]'
line 46 en dat is:
If SQL >= 1 then

maja ik wist dus ook nie precies hoe ik de if then van dit meost doen... zal wel zijn omdat ik nieuw ben in asp dus plz niet meteen gaan zeiken.. thnx

en nie op de opmaak letten ;)

[ Voor 36% gewijzigd door Verwijderd op 25-09-2003 13:49 ]


Verwijderd

waar haal je je recordset rs vandaan die je binnen de query gebruikt?

Verwijderd

Ehhh, dus we zitten hier een query uit te pluizen terwijl we je wat code moeten uitleggen???
Hmm....

:7

Verwijderd

Topicstarter
Verwijderd schreef op 25 September 2003 @ 13:50:
waar haal je je recordset rs vandaan die je binnen de query gebruikt?
als je dit bedoelt:
Set Objverbinding = Server.CreateObject("ADODB.Connection")
Objverbinding.Open "dsn=Database;database=TblBoek, VerblijfID"
Set rs = Objverbinding.Execute(SQL)

Verwijderd

Topicstarter
Verwijderd schreef op 25 September 2003 @ 13:51:
Ehhh, dus we zitten hier een query uit te pluizen terwijl we je wat code moeten uitleggen???
Hmm....

:7
soz... :) ligt et dus nie aan de query? ..:) maar wat is dan de fout? want van die meldingen van asp wordt je ook nie lekker :)

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

de opmaak kan wel degelijk mooier met de [ code=vb ] tag ;)

en ik heb al 2 keer het antwoord gegeven, klopte dit niet of heb je het nog niet gelezen :?

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

ASP:
1
2
3
4
5
6
7
8
9
SQL = ....
Dim rsResult
Set rsResult = objverbinding.execute(SQL)
If CLng(rsResult(0) ) = 1 Then
  ....
Else
  ....
End if
Set rsResult = Nothing


Zoiets?

:7

[ Voor 3% gewijzigd door Verwijderd op 25-09-2003 13:53 ]


Verwijderd

Topicstarter
Verwijderd schreef op 25 September 2003 @ 13:52:
Visual Basic:
1
2
3
4
5
6
7
8
9
SQL = ....
Dim rsResult
Set rsResult = objverbinding.execute(SQL)
If CLng(rsResult(0) ) = 1 Then
  ....
Else
  ....
End if
Set rsResult = Nothing


Zoiets?

:7
ff teste :) zou wel uber zijn alst werkt ;)

Verwijderd

Dat moet worden

code:
1
2
SET objrs = objverbinding.execute(SQL)
IF objrs.RecordCount >= 1 THEN


Als ik me niet vergis...

Verwijderd

Topicstarter
Verwijderd schreef op 25 september 2003 @ 13:52:
ASP:
1
2
3
4
5
6
7
8
9
SQL = ....
Dim rsResult
Set rsResult = objverbinding.execute(SQL)
If CLng(rsResult(0) ) = 1 Then
  ....
Else
  ....
End if
Set rsResult = Nothing


Zoiets?

:7
kheb et nu ingevoegd alleen:
hij blijft doorboeken op dezelfde datum
en als ik de IF omdraai dan blijft ie zeggen dat ie al bezet is :S

Verwijderd

Verwijderd schreef op 25 September 2003 @ 13:54:
Dat moet worden

code:
1
2
SET objrs = objverbinding.execute(SQL)
IF objrs.RecordCount >= 1 THEN


Als ik me niet vergis...
Je vergist je, want met een count(*) in de query krijg je altijd een waarde terug, dus is je recordcount altijd '1'.

:7

[ Voor 52% gewijzigd door Verwijderd op 25-09-2003 13:58 ]


Verwijderd

8)7 Das waar ja....

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Waarom doe je eigenlijk zo moeilijk om dubbele waardes te vermijden?

Waarom leg je geen unique index/constraint op die velden die uniek moeten zijN?

https://fgheysels.github.io/


Verwijderd

Topicstarter
maar nu mijn prob :) kwilde dat andere net proberen

Verwijderd

Kan je je query niet even naar je scherm zetten (had je al gedaan geloof ik). Vervolgens in de Query Analyser van MS eens kijken wat voor resultaat je terugkrijgt?

PS
Werk je wel met MS SQL Server en de Enterprise Manager?

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Verwijderd schreef op 25 september 2003 @ 13:48:
ok hier de code
SQL = ("SELECT COUNT(*) FROM TblBoek WHERE '"& rs("huurtvan") & "' <= '"&request.form("eindweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("eindweek")&"' OR ('"& rs("huurtvan") & "' <= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' >= '"&request.form("beginweek")&"') OR ('"& rs("huurtvan") & "' >= '"&request.form("beginweek")&"' AND '"& rs("huurttot") & "' <= '"&request.form("eindweek")&"')")
objverbinding.execute(SQL)
If SQL >= 1 then
Jongen, je hebt echt geen flauw idee wat je aan het doen bent... Je maakt een query, mooi, en vervolgens voer je 'm uit maar denk je dat de query gelijk is aan het resultaat oid. :?

Begin es met wat basisdingen. Connectie maken, query executen en recordset terughalen, die doorlopen en wat printen ofzo... Zo leer je de basics een beetje...

edit:
hmmm... volgens mij liep ik wat posts achter... kga maar weer :Z

[ Voor 58% gewijzigd door Limhes op 25-09-2003 14:02 ]


Verwijderd

Topicstarter
Verwijderd schreef op 25 september 2003 @ 13:59:
Kan je je query niet even naar je scherm zetten (had je al gedaan geloof ik). Vervolgens in de Query Analyser van MS eens kijken wat voor resultaat je terugkrijgt?

PS
Werk je wel met MS SQL Server en de Enterprise Manager?
Access databaseje met ADO connectie.... en IIS..
heb niet een aparte server draaien..

Verwijderd

Gun hem ook zijn succesjes mensûh! Rome is ook niet in één dag gebouwd. Maar ik geef toe: we hebben al teveel tijd geinvesteerd in verkeerde probleemomschrijvingen hier...

M.a.w.: je code klopt nu wel, alleen je query nog niet. Waar staan je tabelnamen in de query???

Verwijderd

Topicstarter
Verwijderd schreef op 25 September 2003 @ 14:04:
Gun hem ook zijn succesjes mensûh! Rome is ook niet in één dag gebouwd. Maar ik geef toe: we hebben al teveel tijd geinvesteerd in verkeerde probleemomschrijvingen hier...

M.a.w.: je code klopt nu wel, alleen je query nog niet. Waar staan je tabelnamen in de query???
"SELECT COUNT(*) FROM TblBoek

TblBoek -> tabelnaam...
de request.form wordt uit een daarvoor gepost form gehaald en de rs zijn de veldjes

Verwijderd

De Request.Form("eindweek") is blijkbaar wat de gebruiker opgeeft wanneer hij wil overnachten. Maar wat is dat de rs("huurtvan") voor soort veld??? rs = recordset?

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Verwijderd schreef op 25 september 2003 @ 14:04:
Rome is ook niet in één dag gebouwd.
offtopic:
Nee, maar voordat ze begonnen aan het bouwen van Rome hadden ze waarschijnlijk niet alleen een hoop steen en hout, maar ook mensen die wisten hoe je die twee combineerden tot iets waarin je kon wonen :+ See my point?

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Verwijderd schreef op 25 September 2003 @ 14:04:
Gun hem ook zijn succesjes mensûh! Rome is ook niet in één dag gebouwd. Maar ik geef toe: we hebben al teveel tijd geinvesteerd in verkeerde probleemomschrijvingen hier...
Het probleem is hijzelf, hij wil graag dat we het voor hem oplossen omdat hij zelf geen idee heeft hoe het werkt. Laat hem eerst eens wat basisdingen leren, en dan weer terugkomen. NOFI

Verwijderd

TblBoek -> tabelnaam...
Ik bedoelde natuurlijk de kolommen in je tabel

Verwijderd

Het probleem is hijzelf, hij wil graag dat we het voor hem oplossen omdat hij zelf geen idee heeft hoe het werkt. Laat hem eerst eens wat basisdingen leren, en dan weer terugkomen. NOFI
Flauw!! Hoe heb jij dat ooit allemaal opgelost met een autodidact opleiding dan? Alleen maar boeken lezen? Vragen mag ook!

Verwijderd

Topicstarter
Verwijderd schreef op 25 September 2003 @ 14:07:
De Request.Form("eindweek") is blijkbaar wat de gebruiker opgeeft wanneer hij wil overnachten. Maar wat is dat de rs("huurtvan") voor soort veld??? rs = recordset?
rs is recordset ja

en de request.form is idd wat de gebruiker opgeeft
rs("huurtvan") -> huurtvan is dus de tabelnaam
en huurtot ook

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Verwijderd schreef op 25 September 2003 @ 14:10:
[...]

Flauw!! Hoe heb jij dat ooit allemaal opgelost met een autodidact opleiding dan? Alleen maar boeken lezen? Vragen mag ook!
offtopic:
Natuurlijk, ben ik het helemaal met je eens, maar de vragen dienen wel van een bepaald nivo te zijn.

Verwijderd

Topicstarter
André schreef op 25 September 2003 @ 14:14:
[...]

offtopic:
Natuurlijk, ben ik het helemaal met je eens, maar de vragen dienen wel van een bepaald nivo te zijn.
niet alles kan van jouw nivo zijn... lees dit allemaal dan niet en post niet voor je aantal posts ofzo

  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 21-08 09:18
André schreef op 25 September 2003 @ 14:14:
[...]

offtopic:
Natuurlijk, ben ik het helemaal met je eens, maar de vragen dienen wel van een bepaald nivo te zijn.
Ik wil niet vervelend doen en bemoei me er ook niet meej? Maar waarschijnlijk zit zo jongen op MTS (zit ik zelf ook op) en ik weet hoe mega dom die docenten daar zijn hoor.. Die weten het zelf ook echt niet.. En BTW ik kan het niet helpen dat JIJ toen je geboren werd alles al wist.. Je hebt ook zeker nooit wat in je leven gevraagd? Cmon hulp van leraren krijg je al niet tenminste ik niet.. Ook geen hulp van tweakers?? THX enorm voor die gene die wel willen helpen hoor

Verwijderd

Je hele query klopt niet omdat je helemaal geen kolomnamen uit de tabel gebruikt. Zoals je de query nu uitvoert krijg je altijd een count van alle records in die tabel.

Visual Basic:
1
2
3
4
5
6
SQL = ("SELECT COUNT(*) FROM TblBoek WHERE '"& rs("huurtvan") & "' <= '"&request.form("eindweek")&"'
 AND '"& rs("huurttot") & "' >= '"&request.form("eindweek")&"'
 OR ('"& rs("huurtvan") & "' <= '"&request.form("beginweek")&"'
 AND '"& rs("huurttot") & "' >= '"&request.form("beginweek")&"')
 OR ('"& rs("huurtvan") & "' >= '"&request.form("beginweek")&"'
 AND '"& rs("huurttot") & "' <= '"&request.form("eindweek")&"')")


Moet meer zoiets worden:

Visual Basic:
1
2
3
4
5
6
SQL = "SELECT COUNT(*) FROM TblBoek WHERE huurtvan <= "&request.form("eindweek")&"
 AND huurttot >= "&request.form("eindweek")&"
 OR (huurtvan <= "&request.form("beginweek")&"
 AND huurttot >= "&request.form("beginweek")&")
 OR (huurtvan >= "&request.form("beginweek")&"
 AND huurttot  <= "&request.form("eindweek")&")"

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Ik denk dat er hier nogal wat basiskennis gemist wordt bij Knuckels.
Misschien een idee om eens een tutorial SQL/ASP door te nemen?

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Andre/Sonic/Typhon: als je het niet eens bent met hoe een topic loopt of iemand zich gedraagt, gebruik dan aub een Topic Report. Het topic volflamen heeft niemand wat aan.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.