WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   NULL Ahnung von SQL (http://www.wcm.at/forum/showthread.php?t=74643)

3of4 24.10.2002 22:41

NULL Ahnung von SQL
 
Ich gestehe es gleich, ich hab keine Ahnung von SQL, und verwende nur den Code den mir Access ausgespuckt hat.
Bisher hatte ich das ganze ohne sql verwendet, allerdings war mir das zu langsam, und nachdem ich ja angeblich nur das Öffnen von DB und RS ändern muss, wollte ich das mal Probieren:
Zitat:

der Codeschnipsel
Dim Connection, Entry
Set Connection = Server.CreateObject("ADODB.Connection")
Set Entry = Server.CreateObject("ADODB.Recordset")
'Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("mitglieder.mdb")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; "&"DBQ="&Server.MapPath("mitglieder.mdb")
IF Kom Then
'Set Entry = Connection.Execute("SELECT * From mitglieder Where Funktion<=50 ORDER BY Funktion")
SET Entry = "SELECT mitglieder.Funktion, mitglieder.Funktionname, mitglieder.Name, mitglieder.Vorname, mitglieder.Dienstgrad, mitglieder.Geb, mitglieder.Beruf, mitglieder.Hobby, mitglieder.Foto, mitglieder.Email, mitglieder.hp FROM mitglieder WHERE (((mitglieder.Funktion)<=50)) ORDER BY mitglieder.Funktion;"
%>
<H2>Kommando:</H2>
<DIV ALIGN="CENTER">
<TABLE BORDER=1>
<TBODY>
<%
While Not Entry.EOF
Zitat:

der Fehler
Microsoft VBScript runtime error '800a01a8'

Object required: '[string: "SELECT mitglieder.Fu"]'

/MITGLIEDER.ASP, line 114
Zeile 114 ist dieses "While Not Entry.Eof"

mig 24.10.2002 23:26

Hi!

Ich schätze mal Zeile 114 wird diese sein ...

--- schnipp ---

SET Entry = "SELECT mitglieder.Funktion, mitglieder.Funktionname, mitglieder.Name, mitglieder.Vorname, mitglieder.Dienstgrad, mitglieder.Geb, mitglieder.Beruf, mitglieder.Hobby, mitglieder.Foto, mitglieder.Email, mitglieder.hp FROM mitglieder WHERE (((mitglieder.Funktion)<=50)) ORDER BY mitglieder.Funktion;"

--- schnapp ---

Wenn Du in dem eigentlichen SQL Befehl (ab SELECT) die Characters zählst, sind es bis zur WHERE Klausel (((mitglieder.Fu <-| exakt 256 Zeichen inklusive <CR>.

Vielleicht sehe ich nur Gespenster, aber ich schätze mal, daß da wieder mal die max. Zeilenlänge 2^8 zugeschlagen hat, warum auch immer. Hab keine Ahnung ob das nur irgendwo mit Checkboxoption wegzubekommen ist, probier mal, drei oder vier Attribute weniger zu selektieren und dann schau obs geht.

lG, mig

ps: Kenne mich an sich nur mit SQL "zu Fuß" aus, vielleicht hilfts ja

pc.net 24.10.2002 23:33

ha ... sowas ähnliches hatte ich mal bei einer sql-abfrage aus einem excel-makro ... dürfte ziemlich sicher die überschreitung der 256 byte grenze sein ...

3of4 25.10.2002 17:55

Frage: Wieso ist zb. diese Anweisung:
Zitat:

Set Entry = Connection.Execute("SELECT * From mitglieder Where Month(Geb)="&Monat&" AND Day(Geb)="&tag)
eigentlich keine SQL-Anweisung?
Bzw. was müsste ich daran verändern, damit es eine wäre?

Seidl 25.10.2002 18:21

Wie Connection.Execute ja schon vermuten lässt, ist das Ding in seiner Gesamtheit ein Aufruf der Execute-Methode des Connection-Objekts.
Der Teil "SELECT * From mitglieder Where Month(Geb)="&Monat&" AND Day(Geb)="&tag ist zwar eine SQL-Anweisung, aber in diesem Zusammenhang nicht ok.
Die Execute-Methode dient dem Ausführen von Aktionsabfragen, also Anweisungen zum Erstellen, Verändern und Löschen von Tabellen usw. sowie für Lösch- Änderungs- und Anfügeabfragen.
Man bekommt also keine Datensätze zurück, sondern kann nach Ausführung abfragen wieviele Datensätze betroffen waren.

Um Datensätze von der SQL-Anweisung zu bekommen, kannst du die Open-Methode des Recordset-Objekts verwenden.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag