[asp] gesloten object, ongeldige verbinding

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

  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
hallo,

ik ben nog steeds bezig met mijn website, en heb nog 1 foutmelding.
namelijk:
ADODB.Recordset error '800a0e7d'

De bewerking is niet toegestaan voor een object dat verwijst naar een gesloten of ongeldige verbinding.

/temp/aver.asp, line 34


regel 34 is: rs.open "drivers"

bijgeleverd de volledige code.
hopelijk kan iemand mij hiermee helpen.


ASP:
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
<!-- #include virtual="/temp/secure.asp"-->
<!-- #include file="adovbs.inc" -->
<BODY bgColor=#000000 topMargin=0 style="color: #FFFFFF">
<% 
'creeren variabellen die nodig zijn
DSN= "drivers"
errors=0 
msg="" 


'data ophalen uit form 
nr=request("nr")
naam=request("naam") 
versie=request("versie") 
besturing=request("besturing") 
link=request("link")
commentaar=request("commentaar") 
siteprod=request("siteprod") 

   saveit 'Data word opgeslagen 
response.end 
  
  
Sub saveit 
'maak een nieuwe Active Data Object connectie 
'open de ODBC Systeem DSN 

    Set Conn = Server.CreateObject("ADODB.Connection") 
    Conn.open "drivers"
    set rs = server.CreateObject ("ADODB.Recordset")    
    

Set Conn = Server.CreateObject("ADODB.Connection") 
rs.open"drivers"
strSQL = "UPDATE [driver] SET (Naam) = naam WHERE (id) = nr "

Conn.Execute strSQL
Conn.close 

Set Conn = Nothing 
header 
response.write "Bedankt voor het registreren! Klik <a href='login.asp'>hier</a> om terug te keren naar de login pagina." 
End Sub

%>

[ Voor 14% gewijzigd door D2k op 05-01-2003 20:43 . Reden: code tag ]


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

gorgi_19

Kruimeltjes zijn weer op :9

Zou je er [code=asp] van kunnen maken? Komen er nummertjes voor.. :P

Set Conn = Server.CreateObject("ADODB.Connection")
staat er 2x in? :?

[edit]
* gorgi_19 ziet nog veel meer foutjes en gekke dingetjes.. Momentje.. :P

regel 33: Zelfde als regel 28? :?
regel 35: gaat niet doen wat jij in gedachten hebt... (Je mag hem zelf gaan bedenken)
regel 35: Waarom staat (Naam) tussen haakjes?
regel 12 t/m 18: Waarom gebruik je geen request.form / request.querystring
regel 12 t/m 18: Zoals het er nu uit ziet, lijkt je code vatbaar voor SQL Attacks (' enzo)
regel 35: ondanks 1e punt: bij tekstvelden gebruik je single quotes
regel 21: Wat is het nut van Response.end in dit geval?
regel 24: Wat is in deze constructie het nut van een sub?
regel 6: Wat is hier het nut van, aangezien je toch direct je DSN aanroept in 28
regel 34: Waarom wil je uberhaupt een recordset hebben? Je doet er toch niets mee? Je wilt alleen een conn.execute statement uitvoeren, geen recordset voor nodig...
regel 34: Zo open je in ieder geval geen recordset..... Zeg eens hardop waar die wat kan vinden; er is geen link naar een connectie of een SQL statement. Hoe kan dan een recordset geopend worden?

En nog een opmerking: Lees de faq eens over netjes coden...
Nu wel weer genoeg gepuzzeld.. :P

Nofi, maar erhm.. Heb je enig idee hoe je een databaseconnectie maakt in ASP / VBScript... Ik durf dit te betwijfelen. Misschien een idee om eerst een aantal tutorials door te nemen. Ik ben sowieso wel van van de voorbeelden op www.asp101.com in de samples. Daarnaast biedt Google (link met zoekwoorden) :P ook wel uitkomt.

[ Voor 155% gewijzigd door gorgi_19 op 05-01-2003 20:56 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
ik zie het, maar heb de afgelopen paar dagen zo lang zitten programmeren, dat er nu echt stomme foutjes in sluipen.

  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
is voor het eerst dat ik iets wil updaten in een database.
Het is de bedoeling dat de alleen de record geupdate moeten worden waar wat ingevuld is.

damn, het valt nog niet mee om je eigen code uit te leggen

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

gorgi_19

Kruimeltjes zijn weer op :9

fatalharry schreef op 05 January 2003 @ 20:54:
is voor het eerst dat ik iets wil updaten in een database.
Het is de bedoeling dat de alleen de record geupdate moeten worden waar wat ingevuld is.

damn, het valt nog niet mee om je eigen code uit te leggen
De code snap ik wel; de bedoeling ook wel; en ik denk dat je met de gegeven suggesties wel een hoop komt... Echter, ik zou je eerst willen aanraden om eerst nog een tutorial door te nemen en hier wat mee te spelen, want zoals je zag, is er nog e.e.a. aan te merken op je code (nu heb ik ook wel alles genoemd wat ik enigszins kon bedenken, maar goed.. :) )

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • risr
  • Registratie: Juli 2002
  • Laatst online: 14-07 10:19
fatalharry schreef op 05 januari 2003 @ 20:54:
Het is de bedoeling dat de alleen de record geupdate moeten worden waar wat ingevuld is.
Controleer welke velden zijn ingevuld (mbv een Select Case statement bijvoorbeeld) en bouw aan de hand daarvan de string strSQL op.

In JScript kan da met de += operator en in VBScript met &.

[ Voor 48% gewijzigd door risr op 05-01-2003 21:15 . Reden: Select Case ]


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

gorgi_19

Kruimeltjes zijn weer op :9

risr schreef op 05 January 2003 @ 21:00:
Controleer welke velden zijn ingevuld en bouw aan de hand daarvan de string strSQL op.

In JScript kan da met de += operator en in VBScript met &.
Waar heb jij het over, in relatie tot de post? :?
Dit is hier helemaal namelijk niet aan de orde.. :)

[ Voor 9% gewijzigd door gorgi_19 op 05-01-2003 21:03 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Aaah ik zie nog wel meer eigenlijk. Maar ik denk dat voornamelijk je fout is dat je denkt dat je een command uitvoert op een connection. Dat gaat namelijk niet, daar moet je eerst een object van maken. Server.createobject("ADODB.COmmand")

Dus niet proberen je connection datgene te laten uitvoeren.

Maar zoals Gorgi ook al aangeeft, kan je bijna je hele code wel opnieuw doen :)

  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub saveit 
'maak een nieuwe Active Data Object connectie 
Set Conn = Server.CreateObject("ADODB.Connection") 
'open de ODBC Systeem DSN 
Conn.Open "users"
strSQL = "INSERT INTO [gebruikers] (voornaam, achternaam, email, paswoord) " _
            & "VALUES ('" & voornaam & "', " _
            & "'" & achternaam & "', " _
            & "'" & email & "', " _
            & "'" & paswoord1 & "')"
Conn.Execute strSQL
Conn.close 

Set Conn = Nothing 
header 
response.write "Bedankt voor het registreren! Klik <a href='login.asp'>hier</a> om terug te keren naar de login pagina." 
End Sub


dit had ik al, hiermee kan ik data naar de database schrijven, tot zo ver snap ik het.

maar ik snap van dat updaten dus niet helemaal, zou iemand mij op weg kunnen helpen om deze code aan te passen?

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

gorgi_19

Kruimeltjes zijn weer op :9

fatalharry schreef op 05 januari 2003 @ 21:03:
maar ik snap van dat updaten dus niet helemaal, zou iemand mij op weg kunnen helpen om deze code aan te passen?
Geen probleem... Doe eens een suggestie.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'maak een nieuwe Active Data Object connectie 
Set Conn = Server.CreateObject("ADODB.Connection") 
Set Com = Server.CreateObject("ADODB.Command")
'open de ODBC Systeem DSN 
Conn.Open "users"
strSQL = "INSERT INTO [gebruikers] (voornaam, achternaam, email, paswoord) " _
            & "VALUES ('" & voornaam & "', " _
            & "'" & achternaam & "', " _
            & "'" & email & "', " _
            & "'" & paswoord1 & "')"
Com.Activeconnection = Con
Com.Commandtext = StrSql
Com.Execute

Conn.close 
Set Conn = Nothing 

header <<<< WAT IS DIT DAN?
response.write "Bedankt voor het registreren! Klik <a href='login.asp'>hier</a> om terug te keren naar de login pagina." 

[ Voor 60% gewijzigd door Phenomenon op 05-01-2003 21:08 . Reden: Paar dingen vergeten ]


  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
waar het dus om draait is een driverdatabase, gekoppeld aan het web.
ben nu bezig met het admingedeelte, en de volgende records Drivernaam / Versienr / Besturingssyteem / Link naar bestand moeten aangepast kunnen worden.

die header is fout, is er al uit.

[ Voor 8% gewijzigd door Fatalharry op 05-01-2003 21:08 ]


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

gorgi_19

Kruimeltjes zijn weer op :9

fatalharry schreef op 05 January 2003 @ 21:07:
waar het dus om draait is een driverdatabase, gekoppeld aan het web.
ben nu bezig met het admingedeelte, en de volgende records Drivernaam / Versienr / Besturingssyteem / Link naar bestand moeten aangepast kunnen worden.
Dat snappen we... De vraag was:
Geef eens een suggestie voor een naar jouw idee correct SQL update-statement. Probeer het uit; mocht het niet lukken, dan geven we wel commentaar er op en suggesties ter verbetering.. :)

[ Voor 11% gewijzigd door gorgi_19 op 05-01-2003 21:10 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • risr
  • Registratie: Juli 2002
  • Laatst online: 14-07 10:19
Supervisor schreef op 05 januari 2003 @ 21:05:
ASP:
11
12
13
Com.Activeconnection = Con
Com.Commandtext = StrSql
Com.Execute
D'r mag nog wel Com.CommandType = adCmdText bij >:)

Maar dat is hier niet belangrijk ;)

  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
ik denk heel hard na, sql is dus niet mijn sterkste kant.
zo leer je nog wat op je zondag avondje ;)

eerst maar eens alleen de drivernaam editten.

strSQL = "UPDATE [drivers (naam van tabel)] SET (Naam) = naam WHERE (id) = nr "

[ Voor 61% gewijzigd door Fatalharry op 05-01-2003 21:15 ]


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

gorgi_19

Kruimeltjes zijn weer op :9

fatalharry schreef op 05 januari 2003 @ 21:13:
me denkt heel hard na * Fatalharry strSQL = "UPDATE [Naam] SET (Naam) = naam WHERE (id) = nr "
Het is een begin..... :)
Tover hem eens op je scherm: Je krijgt dan:
HTML:
1
UPDATE [Naam] SET (Naam) = naam WHERE (id) = nr

Is dit wat je wilt? Nee.
waar naam staat moet een variabele staan (bijvoorbeeld: Nvidia) en nr = is een corresponederend nummer (hint: zie regel 12 t/m 18)

Je moet dus de variabelen pakken, welke je in het begin gedefinieerd hebt..
Hint: bij je Insert Query doe je het wel goed....

[ Voor 8% gewijzigd door gorgi_19 op 05-01-2003 21:17 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
HTML:
1
strSQL = "UPDATE [drivers] (naam) " _


de variabelle van drivernaam is " naam" met kleine letter.
dus update ik de tabel drivers, en het record Naam

snap ik het nu?

[ Voor 92% gewijzigd door Fatalharry op 05-01-2003 21:19 ]


  • risr
  • Registratie: Juli 2002
  • Laatst online: 14-07 10:19
http://www.webwizguide.com/asp/tutorials/default.asp

Part 1 t/m 4 zijn zeker interessant voor jou.

Vriendelijk bedoeld ;)

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

gorgi_19

Kruimeltjes zijn weer op :9

fatalharry schreef op 05 January 2003 @ 21:17:
HTML:
1
strSQL = "UPDATE [drivers] (Naam) " _
Laten we maar een ding tegelijk doen...

Lees eerst ff dit door:
http://www.w3schools.com/sql/sql_update.asp
Vergeet ff heel ASP, en begin eerst met een goede Update Query te maken...
Omzetten naar ASP komt later.
Probeer eerst eens een updatequery te maken, welke de naam van ID 6 (een nummer!) update naar "NVidia"(Tekst!)
risr schreef op 05 januari 2003 @ 21:18:
http://www.webwizguide.com/asp/tutorials/default.asp

Part 1 t/m 4 zijn zeker interessant voor jou.

Vriendelijk bedoeld ;)
Kweenie.. Vond deze eik niet zo heel erg duidelijk...

[ Voor 39% gewijzigd door gorgi_19 op 05-01-2003 21:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
owkeej, die w3schools is dus echt vet handig, dank je wel.
ik ga nog ff door "prusten"

krijg nu deze fout.

Compilatiefout Microsoft VBScript error '800a0401'

Einde van de instructie wordt verwacht

/temp/aver.asp, line 25

strSQL = UPDATE [driver] SET (Naam) = "naam" WHERE (Id = " nr")



met deze code.
ASP:
1
2
3
4
5
6
7
8
9
Set Conn = Server.CreateObject("ADODB.Connection") 
rs.open "drivers"
strSQL = UPDATE [driver] SET (Naam) = "naam" WHERE (Id = " nr")
 

Conn.Execute strSQL
Conn.close 

Set Conn = Nothing 

[ Voor 84% gewijzigd door Fatalharry op 05-01-2003 21:28 ]


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

gorgi_19

Kruimeltjes zijn weer op :9

Je wilt weer veel te veel tegelijk..... Eerst een goede SQL code, dan pas omzetten naar ASP / VBScript
En inderdaad, je statement klopt niet.

En als je toch bij W3Schools bent, lees dan ook gelijk dit:
http://www.w3schools.com/asp/asp_variables.asp

Want ik krijg steeds meer het idee dat je ook de basis van VBScript / ASP kent mist en absoluut geen idee hebt wat je aan het doen bent.

[ Voor 46% gewijzigd door gorgi_19 op 05-01-2003 21:33 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
HTML:
1
UPDATE driver SET Naam = "naam" WHERE Id = " nr"

zo?

[ Voor 18% gewijzigd door Fatalharry op 05-01-2003 21:33 ]


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

gorgi_19

Kruimeltjes zijn weer op :9

Als we toch bezig met het uitleggen van SQL.. :P

Ik wilde graag dit zien:
Probeer eerst eens een updatequery te maken, welke de naam van ID 6 (een nummer!) update naar "NVidia"(Tekst!)
Zo zie je gelijk het verschil tussen een getal en een letter... (Hij is wel bijna goed)
En vergelijk je quotes eens met die uit de tutorial..

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 25-08 18:57
HTML:
1
UPDATE driver SET Naam = 'naam' WHERE Id = 'nr'


dus enkele quotes ipv dubelle quotes
begrijp je alleen niet met dat verschil tussen text en een nr

als ik maar weet hoe ik de naam geupdate krijg, dan krijg ik de rest ook wel voor elkaar.

[ Voor 91% gewijzigd door Fatalharry op 05-01-2003 21:44 ]


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

ik zou zeggen
begin bij het begin van ASP/ SQL
en daarvoor is GoT niet geschikt
zie de gegeven linkjes

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.