Fehler in Datenbankabfrage
Hanniball
- asp.net
Hi,
nach langer Abstinenz bin ich mal wieder hier. Und gleich wieder mit einem Problem:
Ich möchte via ASP Daten aus einer Datenbank abfragen. Funktioniert auch so weit!
Die Anzahl der anzuzeigenden Spalten wird über das gleiche Formular festgelegt das auch die Anzeige verarbeitet. Dann werden für jede Spalte die Auswahlmöglichkeiten der Überschriften in Dropdown-Feldern angezeigt. Bis hierher kein Problem.
So lange ich die Anzahl der anzuzeigenden Spalten nicht erhöhe ist alles klar. Erhöhe ich jedoch die Anzahl erscheint zwar das Auswahl-Dropdown. Aber im Ergebenis fehlt die Spalte. und es wird folgender Fehler angezeigt:
---------------------------------------------------------------------
Kompilierungsfehler in Microsoft VBScript- Fehler '800a03ea'
Syntaxfehler
/iisHelp/common/500-100.asp, line 160
elseIf (objASPError.Description > "") Then
^
ADODB.Recordset- Fehler '800a0cc1'
Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden.
---------------------------------------------------------------------
Mein Code sieht an der Stelle so aus (Zeile 90 ist die mit rs(spaltkopf) ):
do while not (rs.eof)
response.write "<tr>"
count5 = 0
do while count5 < spalten
count5 = count5 + 1
spaltkopf = RTrim(Request.Form("Spalte" & count5))
response.write "<td>" & rs(spaltkopf) & "<b> " & count5 & "</b></td>"
loop
response.write "</tr>"
rs.movenext
loop
Für eure Hilfe wäre ich euch dankbar.
Gruss
Hanniball
Halihallo Hanniball
do while count5 < spalten
count5 = count5 + 1
spaltkopf = RTrim(Request.Form("Spalte" & count5))
response.write "<td>" & rs(spaltkopf) & "<b> " & count5 & "</b></td>"
spaltkopf ist also das, was der Browser im Parameter "Spalte<count5>" überträgt. Dieses
Feld scheint jedoch in der SQL-Abfrage nicht selektiert zu werden, deshalb der Fehler.
Es gibt zwei Möglichkeiten: Du setzt den Parameter Spalte<count5> in dem Formular mit
einem falschen Wert, der in der nachfolgenden Abfrage nicht selektiert wird, oder der
Parameter wird richtig übermittelt und enthält einen wahren Wert, aber diesen selektierst
du in der Abfrage nicht.
Es wäre also essenziell zu wissen, was der Browser in "Spalte<count5>" überträgt (Wert)
und wie die SQL-SELECT-Anweisung aussieht. Wird der Wert vom Parameter "Spalte<count5>"
in der SQL-Abfrage selektiert? - Ist der Wert "Spalte<count5>" überhaupt definiert,
sprich: Gibtst du ihn im Formular überhaupt zur Auswahl aus?
Glaskugelmodus:
count5 läuft von 0 bis spalten, diese spalten-Variable wird über Form von den
Formulardaten geholt (User Eingabe). Aber: Im Formular sind nur Spalten von 1 bis n
aufgelistet, wobei sich n von spalten differenziert aufgrund der Benutzereingabe. Folge:
Form("Spalte" & count5) ist nicht definiert und referenziert ein Feld in dem Result-Set,
welches nicht existiert.
Wäre eine mögliche Ursache.
Viele Grüsse
Philipp
Hallo Philipp,
in Spalte(Count5) wird ein String mit dem Spaltennamen in der Datenbank übertragen!
An die von Dir erklärte Ursache hatte ich auch schon gedacht und ein ein verstecktes Feld eingesetzt das immer eine "Dummy"-Überschrift enthält damit er da zumindestens was abgreifen kann. Aber auch das brachte nicht den gewünschten Erfolg.
Vielen Dank schonmal für Deine schnelle Antwort
Gruss
Hanniball
Halihallo Hanniball
in Spalte(Count5) wird ein String mit dem Spaltennamen in der Datenbank übertragen!
Ich weiss, _sollte_.
Überprüfe, ob wirklich ein gültiger Spaltenname übermittelt wird und ob du den
Spaltennamen auch wirklich im SQL-Statement selektierst. Nicht Raten und glauben zu
wissen, sondern _wissen und überprüfen_.
An die von Dir erklärte Ursache hatte ich auch schon gedacht und ein ein verstecktes Feld eingesetzt das immer eine "Dummy"-Überschrift enthält damit er da zumindestens was abgreifen kann. Aber auch das brachte nicht den gewünschten Erfolg.
Bitte?
Viele Grüsse
Philipp
Hi Philipp,
da hab ich mich wohl ein wenig unglücklich ausgedrückt.
An die von Dir erklärte Ursache hatte ich auch schon gedacht und ein ein verstecktes Feld eingesetzt das immer eine "Dummy"-Überschrift enthält damit er da zumindestens was abgreifen kann. Aber auch das brachte nicht den gewünschten Erfolg.
Ich habe in das Formular ein verstecktes Feld gesetzt ( input type='hidden' name='Spalte(Count4 + 1) value='HOSTNAME' ). Hostname ist eine vorhandene Spalte in der Datenbank.
Vielleicht kommt es jetzt besser rüber was ich meinte.
Gruss
Hanniball
Halihallo Hanniball
An die von Dir erklärte Ursache hatte ich auch schon gedacht und ein ein verstecktes Feld eingesetzt das immer eine "Dummy"-Überschrift enthält damit er da zumindestens was abgreifen kann. Aber auch das brachte nicht den gewünschten Erfolg.
Ich habe in das Formular ein verstecktes Feld gesetzt ( input type='hidden' name='Spalte(Count4 + 1) value='HOSTNAME' ). Hostname ist eine vorhandene Spalte in der Datenbank.
Ich sagte es schon mehrmals und ich sage es noch einmal: _Was_ wird übertragen und
entspricht es wirklich dem, was auch in der SQL-Anfrage selektiert wird?
--> Die Antwort darauf ist Nein, nein, nein und du bist der einzige, der wissen kann,
woran es liegt. Gibt endlich zum Testen die Namen und Werte aus und vergleiche
diese mit deiner Erwartungshaltung.
Zudem: Beim hidden-Field hast du vergessen, das name-Attribut zu schliessen ('), zudem
macht der Name herzlich wenig sinn, denn Namen von Formularfeldern werden _nicht_
ausgewertet. Dein ASP-Script bekommt als Namen "Spalte(Count4 + 1)", nicht "Spalte5" oder
sowas...
Viele Grüsse
Philipp