Toon posts:

Fout in SQL code ASP

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

Verwijderd

Topicstarter
Geachte tweakers,

Ik zit met de volgende fout alle velden en tabellen bestaan wie kan me helpen wat er fout is:

strSQL = "SELECT Med_ID,Med_nr,Med_naam,Med_roep FROM Medewerker,Bedrijf,Afdelingssamenstelling afd,Afdeling,Functie WHERE _
Bedrijf.Bedrijfs_ID=afd.Bedrijfs_ID AND afd.Afd_id AND afd.afd_nr=Afdeling.afd_nr AND Medewerker.Fun_id=Functie.Fun_ID_
AND bedrijf.bedrijfsnaam='" & hooghaal & "'"


Error Type:
Microsoft VBScript compilation (0x800A0409)
Unterminated string constant
/ORG/Achternaamophaal2.asp, line 74, column 116
strSQL = "SELECT Med_ID,Med_nr,Med_naam,Med_roep FROM Medewerker,Bedrijf,Afdelingssamenstelling afd,Afdeling WHERE _
-------------------------------------------------------------------------------------------------------------------^


Ps in mijn code heb ik op de juist plaatsen een _ gezet als ik code schreef op de volgende regel, maar het schermpje hier op GOT geeft mijn code ietswat verkeerd weer

  • Boss
  • Registratie: September 1999
  • Laatst online: 07:08

Boss

+1 Overgewaardeerd

Volgens mij is het afbreken van je string niet helemaal correct. Probeer eens:
code:
1
2
3
4
strSQL = "SELECT Med_ID,Med_nr,Med_naam,Med_roep FROM " & _
"Medewerker,Bedrijf,Afdelingssamenstelling afd,Afdeling,Functie WHERE " & _
"Bedrijf.Bedrijfs_ID=afd.Bedrijfs_ID AND afd.Afd_id AND afd.afd_nr=Afdeling.afd_nr AND " & _
"Medewerker.Fun_id=Functie.Fun_ID AND bedrijf.bedrijfsnaam='" & hooghaal & "'"

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Tip 1 : Gebruik de Code tag
Tip 2 : Als je in VBS regels wilt splitsen, moet je wel je string afsluiten
code:
1
2
3
strSQL = "Select foo from " & _
         "tabel where " & _
         "1 = 0"


Zelf werk ik liever met zonder splitsingen :
code:
1
2
3
strSQL = "Select foo from "
strSQL = strSQL & "tabel where "
strSQL = strSQL & "1 = 0"

[ Voor 35% gewijzigd door Verwijderd op 07-02-2006 11:06 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Gebruik eens code-tags als je code post, dat maakt het er al wat leesbaarder op.

https://fgheysels.github.io/


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 12-04 17:01
code:
1
2
strSQL = "SELECT Med_ID,Med_nr,Med_naam,Med_roep FROM medewerker,Bedrijf,Afdelingssamenstelling afd,Afdeling WHERE _
-------------------------------------------------------------------------------------------------------------------^

Waar zou de fout zitten?
* jan-marten mompelt nog iets van 'Unterminated string constant'

[ Voor 11% gewijzigd door jan-marten op 07-02-2006 11:08 ]


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
SELECT CASE zoekveld

    Case 1:


strSQL =    "SELECT Med_ID,Med_nr,Med_naam,Med_roep FROM " & _
        "Medewerker,Bedrijf,Afdelingssamenstelling afd,Afdeling,Functie WHERE " & _
        "Bedrijf.Bedrijfs_ID=afd.Bedrijfs_ID AND afd.Afd_id AND afd.afd_nr=Afdeling.afd_nr AND " & _
        "Medewerker.Fun_id=Functie.Fun_ID AND bedrijf.bedrijfsnaam='" & hooghaal & "'"
                                                
    Case 2:

strSQL =""  

    

END SELECT

END IF


Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn

'Nu worden de medewerkers afgebeeld'

%>
<%Do While Not ObjRS.EOF %>
   
    <tr valign="top">
    <td width="100"><%=ObjRS.Fields("Med_id")%>  </td>
    <td width="100"><%=ObjRS.Fields("Med_naam")%></td>
    <td width="100"><%=ObjRS.Fields("Med_roep")%></td>
    <td width="100"><%=ObjRS.Fields("Afd_ID")%></td>
    <td>[img]"C:\Inetpub\wwwroot\ORG\pasfotos\<%=ObjRS.Fields("Med_nr")%>.jpg"[/img]</td>
  </tr>
<% ObjRS.MoveNext
Loop

'Opschonen van de gebruikte ASP objecten
objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

strSQL=""
zoekveld=""
%>

Click <A HREF="Start-orgtest.asp" hier</A> om terug te keren naar de zoek pagina

</TABLE>
</BODY>
</HTML>


krijg ik nu weer deze foutmelding op:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/ORG/Achternaamophaal2.asp, line 94


Wat moet ik hierop nu weer doen??

[ Voor 18% gewijzigd door Verwijderd op 07-02-2006 11:41 ]


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 09:30

Cyphax

Moderator LNX
Wat is regel 94?
Ik gok op
<td width="100"><%=ObjRS.Fields("Med_id")%> </td> (regel 32 in je fragment)
terwijl je query begint met
strSQL = "SELECT Medk_ID,Med_nr,Med_naam,Med_roep FROM " & _
Medk_ID of Med_id?

[ Voor 21% gewijzigd door Cyphax op 07-02-2006 11:40 ]

Saved by the buoyancy of citrus


Verwijderd

Topicstarter
Nee dat is het niet,

dat was gewoon een overtyp fout.

regel 94 is de regel waar objRs.Open instaat

Verwijderd

Cyphax schreef op dinsdag 07 februari 2006 @ 11:39:
Wat is regel 94?
Ik gok op
<td width="100"><%=ObjRS.Fields("Med_id")%> </td> (regel 32 in je fragment)
terwijl je query begint met
strSQL = "SELECT Medk_ID,Med_nr,Med_naam,Med_roep FROM " & _
Medk_ID of Med_id?
Dat is ge-edit...

Wel handig idd als ie erbij zet WELKE regel het is

Tsja geen verstand van ASP, maar ik zie weer niet waar objConn wordt gedefineerd... Het is hier geen debugclubje hoor.

Op regel 19 een ENDIF? Wordt strSQL wel gedefineerd?
Ach, waarom help ik je ook :X

[ Voor 43% gewijzigd door Verwijderd op 07-02-2006 11:46 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
er staat toch gewoon in je error wat er fout gaat
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Je mag zelf ook wel een beetje debuggen hoor. Zo moeilijk kan het nooit zijn.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 09:30

Cyphax

Moderator LNX
Verwijderd schreef op dinsdag 07 februari 2006 @ 11:42:
Nee dat is het niet,

dat was gewoon een overtyp fout.

regel 94 is de regel waar objRs.Open instaat
Is die query string (strSQL) niet leeg?

Saved by the buoyancy of citrus


  • Vozze
  • Registratie: December 2001
  • Laatst online: 22:18
Is zoekveld numeriek of tekst? Als het tekst is, dan moet je de opties bij de cases tussen quotes zetten.

"He who thinks knows evertyhing, knows nothing" - Socrates


Verwijderd

Topicstarter
Okay hier dan de volledige code:


Ik hoop echt dat jullie mij willen helpen en ik weet dat het geen debug clubje is alleen ik kom er niet uit, ben een beginneling.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<%@ Language=VBScript %>
<% Option Explicit %>
<!--#include virtual="/adovbs.inc"-->

<HTML>
<HEAD>

<Title></Title>
</HEAD>

<body background="images/achtergrond.jpg">


<Table height="20" cellspacing="1" width="500" border="0">
    <TR>
        <TD Width="20%">
        <p align="center"><img height="129" alt="C:\Inetpub\wwwroot\ORG\images\POPHOOFD2.GIF (14127 bytes)"
    src="C:\Inetpub\wwwroot\ORG\images\POPHOOFD2.GIF" width="57"></P>
        </TD>
        <TD Width="80%"></TD>
    </TR>
</TABLE>
<Table border="1">
<%
'Open up a connection to our Access Database
'that stores the customer
'information. 


Dim strnaam,strSQL,zoekveld,bedrijfophaal,afdelingenophaal,functieophaal,tellertje,hooghaal  

zoekveld =      REQUEST ("ZOEKVELDEN")

strnaam  =      REQUEST ("Zoekcriteria")

bedrijfophaal =     REQUEST ("mainselect")

afdelingenophaal =  REQUEST ("mainselect2")

functieophaal =     REQUEST ("mainselect3")



Dim objConn
Set objConn = Server.Createobject ("ADODB.Connection")
    objConn.ConnectionString ="DSN=Organisatie"
    objConn.Open

'Lees het SQL Commando in


If bedrijfophaal<>"" Then 

tellertje =tellertje+1
hooghaal =bedrijfophaal
End if


If afdelingenophaal<>"" Then 
tellertje=tellertje+1
hooghaal ="Afdelingsnaam"
End if

If functieophaal<>"" Then 
tellertje=tellertje+1
hooghaal ="functienaam"
End if


If tellertje= 1 Then
SELECT CASE zoekveld

    Case 1:


strSQL =    "SELECT Med_ID,Med_nr,Med_naam,Med_roep FROM " & _
        "Medewerker,Bedrijf,Afdelingssamenstelling afd,Afdeling,Functie WHERE " & _
        "Bedrijf.Bedrijfs_ID=afd.Bedrijfs_ID AND afd.Afd_id AND afd.afd_nr=Afdeling.afd_nr AND " & _
        "Medewerker.Fun_id=Functie.Fun_ID AND bedrijf.bedrijfsnaam='" & hooghaal & "'"
                                                
    Case 2:

strSQL =""  

    

END SELECT

END IF


Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn

'Nu worden de medewerkers afgebeeld'

%>
<%Do While Not ObjRS.EOF %>
   
    <tr valign="top">
    <td width="100"><%=ObjRS.Fields("Med_id")%>  </td>
    <td width="100"><%=ObjRS.Fields("Med_naam")%></td>
    <td width="100"><%=ObjRS.Fields("Med_roep")%></td>
    <td width="100"><%=ObjRS.Fields("Afd_ID")%></td>
    <td>[img]"C:\Inetpub\wwwroot\ORG\pasfotos\<%=ObjRS.Fields("Med_nr")%>.jpg"[/img]</td>
  </tr>
<% ObjRS.MoveNext
Loop

'Opschonen van de gebruikte ASP objecten
objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

strSQL=""
zoekveld=""
%>


Click <A HREF="Start-orgtest.asp" hier</A> om terug te keren naar de zoek pagina

</TABLE>
</BODY>
</HTML>

Verwijderd

Gokje bij het globaal lezen van je code: strSQL wordt niet gedefinieerd...

Als tellertje ongelijk is aan 1 wordt deze namelijk niet gevuld -> NULL-value -> error.

Volgens mij had ik dit ook al gezegd...

[ Voor 55% gewijzigd door Verwijderd op 07-02-2006 12:02 ]


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

tenslotte nog even dit:

code:
1
<img height="129" alt="C:\Inetpub\wwwroot\ORG\images\POPHOOFD2.GIF (14127 bytes)"


Tja, dat gaat al helemaal niet werken straks.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Verwijderd

Topicstarter
strSQL wordt wel gedefinieerd namelijk op regel 30.

Ik heb tellertje ook gedefinieerd maar ik doe dan tellertje = tellertje +1
Ik neem aan dat die standaard op 0 staat, of heb ik dat fout??

  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Kan het niet zo zijn dat je "tellertje" niet gelijk is aan 1 waardoor strSQL niet wordt gevuld? Do eens een response.write strSQL voordat je deze wilt uitvoeren. Kan je meteen zien welke query wordt uigevoerd.

Doe dan meteen ook een response.write op tellertje. Weet je meteen het antwoord op je vraag. Het is sowieso veiliger om tellertje zelf van een waarde te voorzien. Dus eerst tellertje = 0

[ Voor 34% gewijzigd door WvdWest op 07-02-2006 12:08 ]

I'm not a complete idiot - several parts are missing.


Verwijderd

Topicstarter
Backslash, ja hoor dit werkt,

hij heeft het namelijk ( met ander soort code ) wel gedaan en dit kan ook niks te maken hebben met het probleem.

wanneer komt deze foutmelding typisch naar voren???

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 07-04 17:22

edeboeck

mie noow noooothing ...

Verwijderd schreef op dinsdag 07 februari 2006 @ 11:59:
Gokje bij het globaal lezen van je code: strSQL wordt niet gedefinieerd...

Als tellertje ongelijk is aan 1 wordt deze namelijk niet gevuld -> NULL-value -> error.

Volgens mij had ik dit ook al gezegd...
Dat gebeurt wel degelijk hoor (kijk maar eens regel 30)

Tip voor TS:
  1. Schrijf je SQL-string voor je de RS opent naar het scherm (zet hem bv tussen vierkante haakjes zodat je exact weet waar hij begint en eindigt) (dmv Response.Write gevolgd door Response.Flush of Response.End)
  2. Kopieer de SQL (zonder de vierkante haakjes) naar Access en probeer hem daar uit te voeren.
Op deze manier kan je zeer snel zien waar het fout loopt (al ligt het wschl aan een integer die je in een karakterveld wilt proppen of zoiets).

Verwijderd

Verwijderd schreef op dinsdag 07 februari 2006 @ 12:05:
strSQL wordt wel gedefinieerd namelijk op regel 30.

Ik heb tellertje ook gedefinieerd maar ik doe dan tellertje = tellertje +1
Ik neem aan dat die standaard op 0 staat, of heb ik dat fout??
8)7 Als tellertje niet gelijk is aan 1, komt hij er nooit en zal het ook niet gedefinieerd worden... Waarom gebruik je dit trouwens? Ik snap je code niet echt... Variabelenamen als tellertje zijn niet echt duidelijk ;)

Druk idd strSQL even af, ik vermoed dat deze null is namelijk... (d.w.z. niet gevuld).

[ Voor 7% gewijzigd door Verwijderd op 07-02-2006 12:09 ]


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 10-04 12:57

sopsop

[v] [;,,;] [v]

Zet dit eens in de code voor "objRS.Open strSQL, objConn"
ASP:
1
2
response.write "De Query is: " & strSQL & "<br/>" & vbcrlf
objRS.Open strSQL, objConn

[ Voor 32% gewijzigd door sopsop op 07-02-2006 12:09 ]


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

offtopic:
op je lokale dev-bak ja.
Niet als je dat online gaat zetten.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Verwijderd

BackSlash32 schreef op dinsdag 07 februari 2006 @ 12:21:
[...]

offtopic:
op je lokale dev-bak ja.
Niet als je dat online gaat zetten.
Of hij moet een dedicated windows bak hebben ;)

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

offtopic:
Dan nog is het evil 8)7

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Verwijderd

offtopic:
Idd, maar ik vind wel meer dingen in de code evil ;)


@TS: De IMG-SRC werkt lokaal dus wel, maar remote niet, omdat daar je HDD daar waarschijnlijk niet bekend is :)

  • Vozze
  • Registratie: December 2001
  • Laatst online: 22:18
Zoals eerder gezegd:

code:
1
2
Case 1
Case 2

moet worden:
code:
1
2
Case "1"
Case "2"


BTW: waar heb je de input genaamd "Zoekvelden"? Of komt deze uit de querystring?

Request object: http://www.w3schools.com/asp/asp_ref_request.asp

[ Voor 74% gewijzigd door Vozze op 07-02-2006 12:36 ]

"He who thinks knows evertyhing, knows nothing" - Socrates


Verwijderd

Topicstarter
Ik heb al een vermoeden wat de oorzaak is,

als mijn vermoedens kloppen laat ik het jullie weten.

  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Verwijderd schreef op dinsdag 07 februari 2006 @ 12:46:
Ik heb al een vermoeden wat de oorzaak is,

als mijn vermoedens kloppen laat ik het jullie weten.
Was misschien leuk geweest om je vermoeden alvast te posten. Als je vermoeden niet klopt is het ook niet erg om dit te posten. Weten wij direct wat je hebt getest en dat dat niet heeft geholpen.

I'm not a complete idiot - several parts are missing.


Verwijderd

Topicstarter
Okay jongens, ik heb het opgelost.

De fout lag niet in de code van deze pagina, maar de asp pagina die ervoor lag.

In de listboxjes heb ik ook Kies uw afdeling enz opgenomen.
Stomme ik 8)7 heb er ook een value aan gegeven, zodat waneer de asp pagina met eerder genoemde code werd geladen de teller opgehoogd werd tot 3 en deze mogelijkheid was niet gedefinieerd.

kijk maar:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
tellertje=0
If bedrijfophaal<>"" Then 
tellertje =tellertje+1
End if


If afdelingenophaal<>"" Then 
tellertje=tellertje+1
End if

If functieophaal<>"" Then 
tellertje=tellertje+1
End if


Alleen bedrijfsnaam was volgens mij ingevuld, maar stiekem stond er dus in afdelingenophaal gewoon de tekst: Kies uw afdeling. Dom he 8)7 , maar ja beginner foutjes.

Ps ik ben erachter gekomen door de POST datastring te bekijken.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 12-04 21:32

TeeDee

CQB 241

Kijk meteen ook even naar:

- SQL injection (in je vorige topic reeds aangestipt)
- de lokaties van je images ("C:\inetpub\" etc. zal alleen lokaal werken)
- Wat nu als je in Case 2: valt. Dan heb je een lege strSQL. Daar zal je volgende error komen.
- Gebruik ipv "Request", "Request.Form" of "Request.Querystring"

Heart..pumps blood.Has nothing to do with emotion! Bored


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Ik denk dat het zo wel genoeg geweest is. :)

P&W is niet bedoeld als debug-service.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.