Hanniball: Fehler in Datenbankabfrage

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

  1. 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

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. 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

      1. 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

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        1. 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

          1. 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

            --
            RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
            Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.