Recordset.Close

Hi to all!

Hab ein kleines Problem:
Am Ende meines DB-Abfage-Scripts führe ich folgendes aus:

Das hat auch mal problemlos funktioniert, bevor ich Code aus einem anderen Script eingebaut habe.
Kann es sein, dass ich beim Implementieren irgendetwas vergessen hab, das ich hätte beachten müssen…? Aber das dürfte doch ziemlich egal sein, wenn sich an den Namen nix geändert hat, oder?

Jetzt jedenfalls kriege ich einen VBScript runtime error:
Object required: ‚Recordset‘
bzw. wenn ich die 1.Zeile auskommentiere:
Object required: ‚Database‘

Das Script läuft dann aber trotzdem weiter, wenn ich ein Suchkriterium in mein Formular eingegeben habe.

Bin dankbar für jeden Hinweis!

Jens

tja, da gibt ne menge von möglichkeiten, besser du schickst mal den quellcode.

möglicherweise machst du den recordset und die dbconnection schon wo anderst zu, oder gar nicht auf?

gruss tobias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tobias, ich kann nix fehlermäßiges finden… also komme ich mal auf dein Angebot mit dem Quellcodeschicken zurück:smile:
… mit besten Grüßen an Christian Stampfli


!–#INCLUDE FILE=„adovbs.inc“ -->

Test einer Datenbankanbindung mit Access Test einer Datenbankanbindung mit Access

„“ then
’ ******************************************
’ SQL-String generieren
’ ******************************************
SuchFeld = Request.Form („Suchbegriff“)
SuchText = Ersetze_Alle (Request.Form(„Suchstring“), „’“, chr(34))
if Request.Form („Enthalten“) = „ON“ then
SQLAbfrage = „SELECT * FROM „&Tabelle&“ WHERE " + SuchFeld + " LIKE '%“ + SuchText + "%’ ORDER BY " + SuchFeld + „, " + Sortierung
else
SQLAbfrage =„SELECT * FROM „&Tabelle&“ WHERE left(“ + SuchFeld + " ,LEN(’“ + SuchText + „’)) = '“ + SuchText + "’ ORDER BY " + SuchFeld + ", " + Sortierung
end if
if Request.Form („Suchstring“) = „*“ then
SQLAbFrage = „SELECT * FROM „&Tabelle&“ ORDER BY " + Sortierung
end if
’ ******************************************
’ Verbindung mit der Datenbank herstellen
’ ******************************************
set Database = Server.CreateObject („ADODB.Connection“)
set Recordset = Server.CreateObject („ADODB.Recordset“)
Database.open ODBCName
Recordset.open SQLAbfrage , Database, adOpenStatic
’ ***** PRUEFEN OB DATEN VORHANDEN ****************
if Recordset.RecordCount Keine Eintraege gefunden.“)
else
Zeige_Datenbank = 1
AnzahlDatensaetze = Recordset.RecordCount

’ ***** DATENSATZ ERMITTELN ************
if trim(Request.Form(„db_nr“)) = „“ then
db_nr = 0
else
db_nr = trim(Request.Form („db_nr“))
end if

’ ***** AKTION ERMITTELN *************
if trim(request.QueryString(„Nav“)) = „“ then
DS_Nav = „ANFANG“
else
DS_Nav = ucase(trim(request.QueryString(„Nav“)))
end if

’ ***** NÄCHSTEN DATENSATZ ERMITTELN if DS_Nav = „ZURUECK“ then
db_nr = db_nr - 1
elseif DS_Nav = „WEITER“ then
db_nr = db_nr + 1
elseif DS_Nav = „ENDE“ then
db_nr = Recordset.RecordCount -1
else
db_nr = 0
end if

’ ***** UEBERPRUEFUNG OB db_nr IM GUELTIGEN BEREICH **
if db_nr Recordset.RecordCount -1 then db_nr = Recordset.RecordCount -1

’ ***** ZUM RICHTIGEN DATENSATZ SPRINGEN ********
Recordset.Move db_nr, 0
end if
else
’ ***************************
’ Keine Parameter angegeben
’ ***************************
Response.Write („Bitte Suchkriterien angeben.“)
Zeige_Datenbank = 0
end if
%>

Einträge gefunden:

Kunden-Code:
 
Firma:
 
Kontaktperson:
 

">


Besten Dank im Voraus!
Jens

Hallo Tobias, ich kann nix fehlermäßiges finden… also komme
ich mal auf dein Angebot mit dem Quellcodeschicken zurück:smile:
… mit besten Grüßen an Christian Stampfli

Hmmmm… willst Du mir damit irgendwas sagen ? *g*
Aber trotzdem danke für die Grüsse…ich schaue mal, dass ich den Code einwenig anschauen kann :smile:

MfG

Christian

Heyho wiedermal…

Ich bin mir nid ganz sicher, aber ich glaube ich habe den Fehler gefunden.

Also…machen wir mal einwenig Code-Ghetto hier :smile: Ein Ausschnitt aus Deinem Code.

(’… steht für Code, der noch dazwischen steht.)

 "" then
 '...
 set Database = Server.CreateObject ("ADODB.Connection")
 set Recordset = Server.CreateObject ("ADODB.Recordset")
 Database.open ODBCName
 Recordset.open SQLAbfrage , Database, adOpenStatic
 '...
 else
 '...
 end if
 '...

Wenn Du nun nur diesen Teilabschnitt anschaust, wirst Du feststellen, dass Die Datenbank NUR geöffnet wird, wenn Suchstring „“ ist. Dies bedeutet, dass die Datenbank NICHT geöffnet wird, falls KEIN Suchstring übergeben wurde…

Nach der If…then Schlaufe schliesst Du nun aber die Datenbank. Folgendes kann eintreten:

FALL 1:
Suchstring „“, die Datenbank wird geöffnet und nach der Schlaufe geschlosen.

FALL 2:
Suchstring = „“, die Datenbank wird nicht geöffnet und nach der Schlaufe aber geschlossen.

Hmmmm… *leichtesgrinsen* Versuch mal eine geschlossene Colaflasche zu schliessen - und auch Du wirst fluchen bzw. einen Error ausgeben *g*

Ich will Dich nid auslachen - solche Fehler passieren mir andauernd und ich habe jetzt ne ganze Weile gebraucht bis ich das rausgefunden habe :smile:

Ich konnte natürlich das File nicht komplett testen, aber ich denke folgender Code sollte funktionieren:

> Test einer Datenbankanbindung mit  
> Access  
>   
>   
>   
>   
>   
> Test einer Datenbankanbindung mit Access   
>   
> "" then  
> ' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ' SQL-String generieren  
> ' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> SuchFeld = Request.Form ("Suchbegriff")  
> SuchText = Ersetze\_Alle (Request.Form("Suchstring"), "'",  
> chr(34))  
> if Request.Form ("Enthalten") = "ON" then  
> SQLAbfrage = "SELECT \* FROM "&Tabelle&" WHERE " + SuchFeld  
> + " LIKE '%" + SuchText + "%' ORDER BY " + SuchFeld + ", " +  
> Sortierung  
> else  
> SQLAbfrage ="SELECT \* FROM "&Tabelle&" WHERE left(" +  
> SuchFeld + " ,LEN('" + SuchText + "')) = '" + SuchText + "'  
> ORDER BY " + SuchFeld + ", " + Sortierung  
> end if  
> if Request.Form ("Suchstring") = "\*" then  
> SQLAbFrage = "SELECT \* FROM "&Tabelle&" ORDER BY " +  
> Sortierung  
> end if  
> ' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ' Verbindung mit der Datenbank herstellen  
> ' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> set Database = Server.CreateObject ("ADODB.Connection")  
> set Recordset = Server.CreateObject ("ADODB.Recordset")  
> Database.open ODBCName  
> Recordset.open SQLAbfrage , Database, adOpenStatic  
> ' \*\*\*\*\* PRUEFEN OB DATEN VORHANDEN \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> if Recordset.RecordCount Keine Eintraege  
> gefunden.")   
> else   
> Zeige\_Datenbank = 1  
> AnzahlDatensaetze = Recordset.RecordCount  
>   
> ' \*\*\*\*\* DATENSATZ ERMITTELN \*\*\*\*\*\*\*\*\*\*\*\*  
> if trim(Request.Form("db\_nr")) = "" then  
> db\_nr = 0  
> else  
> db\_nr = trim(Request.Form ("db\_nr"))  
> end if  
>   
> ' \*\*\*\*\* AKTION ERMITTELN \*\*\*\*\*\*\*\*\*\*\*\*\*  
> if trim(request.QueryString("Nav")) = "" then  
> DS\_Nav = "ANFANG"  
> else  
> DS\_Nav = ucase(trim(request.QueryString("Nav")))  
> end if  
>   
> ' \*\*\*\*\* NÄCHSTEN DATENSATZ ERMITTELN if DS\_Nav = "ZURUECK"  
> then  
> db\_nr = db\_nr - 1  
> elseif DS\_Nav = "WEITER" then  
> db\_nr = db\_nr + 1  
> elseif DS\_Nav = "ENDE" then  
> db\_nr = Recordset.RecordCount -1  
> else  
> db\_nr = 0  
> end if  
>   
> ' \*\*\*\*\* UEBERPRUEFUNG OB db\_nr IM GUELTIGEN BEREICH \*\*  
> if db\_nr Recordset.RecordCount -1 then db\_nr =  
> Recordset.RecordCount -1  
>   
> ' \*\*\*\*\* ZUM RICHTIGEN DATENSATZ SPRINGEN \*\*\*\*\*\*\*\*  
> Recordset.Move db\_nr, 0  
> end if  
> else  
> ' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ' Keine Parameter angegeben  
> ' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> Response.Write ("Bitte Suchkriterien  
> angeben.")  
> Zeige\_Datenbank = 0  
> end if  
> %\>  
>   
>   
>   
> Einträge gefunden:   
>   
>   
>   
>   
>   
>   
>   
> Kunden-Code:  
>    
>   
>   
> Firma:  
>    
>   
>   
> Kontaktperson:  
>    
>   
>   
>   
>   
>   
>   
>   
>   
>   
> "\>   
>   
>   
>   
>   
>   
> ...

Ich hoffe, dass ich Dir weiterhelfen konnte…

Viele Grüsse

Christian

2 Like

ach mann…das hat mir den ganzen Code gekillt…
Hier noch DEIN richtiggestellter Code:

Test einer Datenbankanbindung mit Access Test einer Datenbankanbindung mit Access 

 "" then
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' SQL-String generieren 
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
SuchFeld = Request.Form ("Suchbegriff")
SuchText = Ersetze\_Alle (Request.Form("Suchstring"), "'", chr(34))
if Request.Form ("Enthalten") = "ON" then
SQLAbfrage = "SELECT \* FROM "&Tabelle&" WHERE " + SuchFeld + " LIKE '%" + SuchText + "%' ORDER BY " + SuchFeld + ", " + Sortierung
else
SQLAbfrage ="SELECT \* FROM "&Tabelle&" WHERE left(" + SuchFeld + " ,LEN('" + SuchText + "')) = '" + SuchText + "' ORDER BY " + SuchFeld + ", " + Sortierung
end if
if Request.Form ("Suchstring") = "\*" then
SQLAbFrage = "SELECT \* FROM "&Tabelle&" ORDER BY " + Sortierung
end if
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' Verbindung mit der Datenbank herstellen 
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
set Database = Server.CreateObject ("ADODB.Connection")
set Recordset = Server.CreateObject ("ADODB.Recordset")
Database.open ODBCName
Recordset.open SQLAbfrage , Database, adOpenStatic
' \*\*\*\*\* PRUEFEN OB DATEN VORHANDEN \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
if Recordset.RecordCount Keine Eintraege gefunden.") 
else 
Zeige\_Datenbank = 1
AnzahlDatensaetze = Recordset.RecordCount

' \*\*\*\*\* DATENSATZ ERMITTELN \*\*\*\*\*\*\*\*\*\*\*\*
if trim(Request.Form("db\_nr")) = "" then
db\_nr = 0
else
db\_nr = trim(Request.Form ("db\_nr"))
end if

' \*\*\*\*\* AKTION ERMITTELN \*\*\*\*\*\*\*\*\*\*\*\*\*
if trim(request.QueryString("Nav")) = "" then
DS\_Nav = "ANFANG"
else
DS\_Nav = ucase(trim(request.QueryString("Nav")))
end if

' \*\*\*\*\* NÄCHSTEN DATENSATZ ERMITTELN if DS\_Nav = "ZURUECK" then
db\_nr = db\_nr - 1
elseif DS\_Nav = "WEITER" then
db\_nr = db\_nr + 1
elseif DS\_Nav = "ENDE" then
db\_nr = Recordset.RecordCount -1
else
db\_nr = 0
end if

' \*\*\*\*\* UEBERPRUEFUNG OB db\_nr IM GUELTIGEN BEREICH \*\*
if db\_nr Recordset.RecordCount -1 then db\_nr = Recordset.RecordCount -1

' \*\*\*\*\* ZUM RICHTIGEN DATENSATZ SPRINGEN \*\*\*\*\*\*\*\*
Recordset.Move db\_nr, 0
end if
else
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' Keine Parameter angegeben
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Response.Write ("Bitte Suchkriterien angeben.") 
Zeige\_Datenbank = 0
end if
%\>



Einträge gefunden: 

Kunden-Code:
 
Firma:
 
Kontaktperson:
 



"\> 


...

Noch ne Anmerkung zu Deinem Code…
Etwas wollte ich Dir noch schreiben:

Versuch doch mal einwenig strukturiert zu programmieren. So passieren nämlich viel weniger solcher Fehler.

Also ich meine das im Stil von

If Request.QueryString("Test") = "JA" then
 x = 1
Else
 x = 0
End If

Weil ich habs zuerst auch übersehen wegen der DB öffnen oder schliessen weils ja zuerst so aussieht als würdest Du die DB öffnen und dann schliessen…

Ist nur so ein Tipp - ich musste mir das auch angewöhnen und mache es aber trotzdem noch nid 100% sauber :smile:

Greetings

Chris

Hmmmm… willst Du mir damit irgendwas sagen ? *g*
Aber trotzdem danke für die Grüsse…ich schaue mal, dass ich
den Code einwenig anschauen kann :smile:

Nein, nix wollt ich dir damit sagen:wink: Nur mit ein paar fremden Federn geschmückt hätte ich mich, wenn ich hier den Code veröffentliche. Schließlich hast du einigen Anteil dran:smile:

Die Sache mit dem IF leuchtet mir ein, wie Schuppen fällt’s mir von den Augen… heute bin ich aber mit anderen Aufgaben zu. Ich geb Anfang nächste Woche Bescheid, ob’s geklappt hat.

Thanx&Bye
Jens

Jaaa. Hast ja recht…:wink:
.

Guten Morgen !

Nein, nix wollt ich dir damit sagen:wink: Nur mit ein paar
fremden Federn geschmückt hätte ich mich, wenn ich hier den
Code veröffentliche. Schließlich hast du einigen Anteil
dran:smile:

Hä ??? Was für einen Anteil habe ich den an DIESEM Code ? Kommt mir irgendwie GANZ UND GAR nicht bekannt vor ??? Kannst Du mir mal helfen ??? War ich da besoffen oder wie ging das ? :smile:

Die Sache mit dem IF leuchtet mir ein, wie Schuppen
fällt’s mir von den Augen… heute bin ich aber mit anderen
Aufgaben zu. Ich geb Anfang nächste Woche Bescheid, ob’s
geklappt hat.

Tja…ich könnt jetzt gross angeben, dass ich der grösste und Beste sei, aber das entspricht mir nicht *grins*…nein im ernst… ich mauch DAUERND solche Fehler *sichselberhau*… und desswegen finde ich sie langsam auch :smile:

Ist aber irgendwie noch geil so Code nach Fehlern zu durchforschen…haste noch mehr davon ? *lechz* :smile:

Schöns Weekend und gib hier bescheid…ich denke es bringt mehr als per Mail -> so können auch die anderen davon profitieren falls ich recht hatte…

Chris

Guten Tag Herr Stampfli!

Hä ??? Was für einen Anteil habe ich den an DIESEM Code ?

Na die Kommentare!*g*

Kommt mir irgendwie GANZ UND GAR nicht bekannt vor ??? Kannst
Du mir mal helfen ??? War ich da besoffen oder wie ging das ?

)

Solange du noch weisst, wann du denn besoffen warst, ist’s durchaus noch okay, aber so?:wink:

Tja…ich könnt jetzt gross angeben, dass ich der grösste und
Beste sei, aber das entspricht mir nicht *grins*…nein im
ernst… ich mauch DAUERND solche Fehler *sichselberhau*…
und desswegen finde ich sie langsam auch :smile:

Tja, da is mein Problem wohl, dass ich zu selten sowas mache…

Ist aber irgendwie noch geil so Code nach Fehlern zu
durchforschen…haste noch mehr davon ? *lechz* :smile:

Code ja, aber erstmal keine Fehler:wink:
Aber wenn ich dann tatsächlich anfangen sollte, strukturiert zu programmieren, macht’s dich doch bestimmt schon nicht mehr so an?:wink:

Schöns Weekend und gib hier bescheid…ich denke es bringt
mehr als per Mail -> so können auch die anderen davon
profitieren falls ich recht hatte…

Profitieren und dich feiern…:wink:

ALSO: Es hat genauso funktioniert wie du es gesagt hast!
Nice2meetU!

Thanx&Bye
Jens

Guten Tag Herr Stampfli!

Ehm…zuerst mal: Freut mich, ich bin der Christian :smile:

Solange du noch weisst, wann du denn besoffen warst, ist’s
durchaus noch okay, aber so?:wink:

Naja…im Normalfall weiss ich das eigentlich schon… aber tja, es gibt halt Situtationen wo ein Mann saufen muss was ein Mann saufen muss :smile:

Tja, da is mein Problem wohl, dass ich zu selten sowas
mache…

Tja…mehr ASP-Programmierung machen :smile:

Aber wenn ich dann tatsächlich anfangen sollte, strukturiert
zu programmieren, macht’s dich doch bestimmt schon nicht mehr
so an?:wink:

Doch sicher…strukturierten Code zu durchsuchen ist noch viel geiler…weil da sind die Fehler meistens RICHTIG fies weil dort so Strukturfehler meisten wegfallen :smile:

Profitieren und dich feiern…:wink:

Naja…das mit dem Feiern hoffe ich doch, dass Du das nicht ernst gemeint hast. Wir sind ja hier schliesslich bei w-w-w und ich bin froh wenn ich helfen kann…

ALSO: Es hat genauso funktioniert wie du es gesagt hast!

Hast Du etwas anderes erwartet ? (sorry, konnt mir so einen kommentar nid verkneifen *eingebildetsei* :smile:

Nice2meetU!

Öhmmm… nein, wir haben uns noch nid getroffen :smile: Aber wer weiss, vielleicht sehen wir uns mal an einem w-w-w Treffen…

Greetings

Chris

Moin Christian!

Tja, da is mein Problem wohl, dass ich zu selten sowas
mache…

Tja…mehr ASP-Programmierung machen :smile:

Würd’ ich doch gerne! Aber es gibt noch soviel anderes, um das ich mich kümmern muss…

Doch sicher…strukturierten Code zu durchsuchen ist noch
viel geiler…weil da sind die Fehler meistens RICHTIG fies
weil dort so Strukturfehler meisten wegfallen :smile:

Ich wünschte, dass ich der Fehlersuche auch soviel Enthusiasmus entgegenbringen könnte…

Profitieren und dich feiern…:wink:

Naja…das mit dem Feiern hoffe ich doch, dass Du das nicht
ernst gemeint hast. Wir sind ja hier schliesslich bei w-w-w
und ich bin froh wenn ich helfen kann…

War’n Scheeerz, Mann! Bin froh, dass du mir geholfen hast:smile:

ALSO: Es hat genauso funktioniert wie du es gesagt hast!

Hast Du etwas anderes erwartet ? (sorry, konnt mir so einen
kommentar nid verkneifen *eingebildetsei* :smile:

Nach deiner treffenden Analyse hab ich wirklich nichts anderes erwartet.:smile:

Nice2meetU!

Öhmmm… nein, wir haben uns noch nid getroffen :smile:

Doch, hier bei w-w-w!

Aber wer
weiss, vielleicht sehen wir uns mal an einem w-w-w Treffen…

Wer-Weiss-…?

Ciao,
Jens