Alrik Fassbauer Geschrieben 18. Januar 2002 Teilen Geschrieben 18. Januar 2002 Hallo, miteinander. Ich habe mich ernsthaft gefragt, wo ich denn diese Frage unterbringen soll - im Bereich, der auch ASP beinhaltet, oder im Bereich Datenbanken. Ich habe mich dann schweren Herzens für letzteres entschieden. Also, hier mein Problem: Kennt sich einer von euch mit UDL aus ? Ich habe mir folgenden Artikel einmal näher angeschaut: Universal Data Links mit ASP erstellen , weil ich kein DNS verwenden möchte. Ich weiß "natürlich" nicht, ob es nicht auch einfacher geht, aber DNS ist mir einfach zu "hart kodiert". Ich möchte da nicht unbedingt von festen Treibereinträgen anhängig sein. Nun habe ich dieses Script aus diesem Artikel angepasst und ausprobiert, und habe den Eindruck, als ob in der Zeile mit dem SQL-String, der mittels Execute ausgeführt werden soll, nur 20 Zeichen funktionieren; Grund: Im Beispiel sind es 18 Zeichen, und mein String ist länger, und wird gnadenlos bei 20 Zeichen abgeschnitten. Beispielscript: strSQL = "SELECT * FROM Tudl" Set objRS= objConn.Execute(strSQL) Mein Script: set selectionvar="select * from fanartikel" set rs=db.Execute(selectionvar) "objConn" aus dm Beispiel ist identisch mit meinem "db". Es geht hier um den String "select * from Tudl", der 18 Zeichen lang ist, wohingegen mein String länger ist; und ich bekomme die Fehlermeldung (welche mir allem Anschein nach beweist, daß der String ab Zeichen 20 abgeschnitten wird): Kompilierungsfehler in Microsoft VBScript- Fehler '800a03ea' Syntaxfehler /iisHelp/common/500-100.asp, line 129 elseIf (objASPError.Description > "") Then ^ Laufzeitfehler in Microsoft VBScript- Fehler '800a01a8' Objekt erforderlich: '[string: "select * from fanart"]' Frage: Was kann ich da tun ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lapso Geschrieben 21. Januar 2002 Teilen Geschrieben 21. Januar 2002 Original geschrieben von Alrik Fassbauer Beispielscript: strSQL = "SELECT * FROM Tudl" Set objRS= objConn.Execute(strSQL) Mein Script: set selectionvar="select * from fanartikel" set rs=db.Execute(selectionvar) lass das SET bei der String-variablen weg. SET wird in VBScript dazu benutzt, Objekte zu instanzieren bzw Variablen ein Objekt zuzuweisen. Anders als in Java sind in VBScript aber Strings keine Objekte in diesem sinne. db.Execute() hingegen erzeugt ein Objekt, das SET ist hier richtig angewendet. Gruss Matze Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 21. Januar 2002 Autor Teilen Geschrieben 21. Januar 2002 Hallo, mal wieder. Erstmal danke für die Information. Zum Zweiten: Es kann sein, daß mein Problem gelöst ist. In der UDL-Datei (die im Prinzip nichts anderes als eine einfache Textdatei ist) war der Pfad zur Datenbank selber falsch eingestellt. Ich habe mit mehreren Pfaden probiert, und siehe da ! Auf einmal klappt es ! Es kann also sein, daß der Pfad in der UDL-Datei falsch drin war. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 21. Januar 2002 Autor Teilen Geschrieben 21. Januar 2002 Also, nochmal, da mußte noch etwas geändert werden. Original: <% Response.Buffer = True Response.Expires = 0 Dim objConn Dim strSQL Dim objRS Dim strPath 'Hier noch ihre Pfadangaben ergänzen: strPath = Server.MapPath("/scripts/UDLFiles/UDL_Acc.udl") Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "file name=" & strPath strSQL = "SELECT * FROM Tudl" Set objRS= objConn.Execute(strSQL) While Not objRS.EOF Response.Write objRS("TudlText").Value & "<br>" objRS.MoveNext Wend %> Die "Fälschung": <% Response.Buffer = True Response.Expires = 0 Dim objConn Dim strSQL Dim objRS Dim strPath 'Hier noch ihre Pfadangaben ergänzen: strPath = Server.MapPath("/scripts/fanartikel.udl") Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "file name=" & strPath strSQL = "SELECT * FROM Fanartikel" Set objRS= objConn.Execute(strSQL) While Not objRS.EOF Response.Write objRS("Artikelname").Value & "<br>" objRS.MoveNext Wend %> Zweite Version: <% dim driverconnection dim selectionvar dim Pfad dim RSPfad dim rs dim db RSPfad=Server.MapPath("/scripts/Fanartikel.UDL") set db=Server.CreateObject("ADODB.Connection") db.Open="file name=" & RSPfad selectionvar="select * from fanartikel" set rs=db.Execute(selectionvar) while not rs.EOF Response.Write rs("artikelname").Value & "<br>" rs.MoveNext Wend %> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lapso Geschrieben 21. Januar 2002 Teilen Geschrieben 21. Januar 2002 Original geschrieben von Alrik Fassbauer Also, nochmal, da mußte noch etwas geändert werden. Also, ich kann so beim Überfliegen keinen groben Schnitzer erkennen. Wo liegt nun das Problem? Ein Tip noch dazu: Du solltest die UDL-Dateien nicht mit der Dateiendung "UDL" sondern "ASP" im Web liegen lassen. Warum? Folgendes Szenario: Eine ASP-Fehlermeldung gibt dem Besucher den Pfad und den Dateinamen preis. Der BEsucher muss nun nur noch Die Datei im Browser aufrufen und kann sich diese downloaden. Danach weiss er ganz genau, wo deine Datenbank liegt und wie das Passwort ist. Ist die UDL-Datei in Datei.udl.ASP umbenannt, so versucht der IIS, die Datei an die ASP.DLL zu schicken, was einen - harmlosen - Fehler verursacht. Der Besucher bekommt deine Connection-Daten nicht zu Gesicht. Gruss Matze Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 21. Januar 2002 Autor Teilen Geschrieben 21. Januar 2002 Äh...ja...in meinem letzten Post sind meine Sachen ja schon wieder korrigiert... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.