Janko Wellmeier: Abfrage der Spaltenanzahl und -namen

Hallo!
Mir liegt mal wieder eine kniffilige ASP-Frage auf der Zunge:

Ich öffne eine bestimmte Datenbank(test.mdb) mit ASP:
-- Set MyConn = Server.CreateObject("ADODB.Connection")
-- MyConn.Open "test"

In dieser Datenbank gibt es dann eine bestimmte Tabelle(tbltest).
Ich kann ja nun folgendes einfaches RecordSet, mit einem Parameter, für diese Tabelle bestimmen:
-- Set RS_NEU = MyConn.Execute("SELECT * FROM tbltext WHERE fldID=1")

Nun möchte ich in der ASP-Seite ein Formular gestalten.
Die Anfangswerte der jeweiligen Felder stehen in dem ausgewähltem Datensatz.
Also zum Beispiel der Name, das Alter etc..
Kann ich die ASP-Seite denn nun so allgemein halten, dass ersteinmal geschaut wird,
wieviele Spalten vorhanden sind, wie sie heißen und darauf hin meine ASP-Seite aufgebaut wird??

Keine Angst, mir soll hier niemand etwas programmieren. Mein spezielles Problem ist die Abfrage der Spaltenanzahl UND NAMEN!!!

Wenn das klappen sollte. Kann man das auch an der obigen Stelle mit den Tabellen machen??
Das bei der Datenbank also ersteinmal alle Tabelle abgefragt werden und dann jede einzelne Tabelle durchgearbeitet wird??

Ich hoffe jemand weiß eine Antwort, da ich so sehr vieles "einfacher" und allgemeiner gestalten könnte.

MFG
JankoW(die Welt liegt ihm zu Füßen, denn er steht drauf ;-))

  1. Nun möchte ich in der ASP-Seite ein Formular gestalten.
    Die Anfangswerte der jeweiligen Felder stehen in dem ausgewähltem Datensatz.
    Also zum Beispiel der Name, das Alter etc..
    Kann ich die ASP-Seite denn nun so allgemein halten, dass ersteinmal geschaut wird,
    wieviele Spalten vorhanden sind, wie sie heißen und darauf hin meine ASP-Seite aufgebaut wird??

    Ich hab jetzt nicht ganz Verstanden was du willst, die
    Anzahl der Datensätze oder die Anzahl der Felder des
    Datensatzes ?
    Wenn du die Anzahl der Datensätze brauchst mach es so :

    Set MyConn = Server.CreateObject("ADODB.Connection")
    MyConn.Open "test",,"DSN=Name;UID=Admin",1,1
    records =  MyConn.recordcount

    Ansonsten die Anzahl der Felder bekommste MyConn.Fields.Count
    Obwohl die ja ausser bei Kreuztabellen wohl bekannt
    sein sollten

    gruss
    Jens

    1. Hi Leute!

      Ansonsten die Anzahl der Felder bekommste MyConn.Fields.Count

      Dafür gibt's auch einen SQL-Befehl!

      Select count(*) FROM anywhere

      Kann dann natürlich noch eine WHERE-Klausel hinzufügen und so weiter...

      CU Roman

      1. Hi Roman!

        Ansonsten die Anzahl der Felder bekommste MyConn.Fields.Count

        Dafür gibt's auch einen SQL-Befehl!
        Select count(*) FROM anywhere

        Aeh nee Du, das zaehlt die Anzahl der Datensaetze, also der Zeilen. Janko will in diesem Fall aber die Anzahl der Tabellenfelder, also der Spalten wissen. Fuer die gibt es aber keinen SQL-Befehl, es sei denn man kennt die datenbankinternen Verwaltungstabellen.

        Bye by Calocybe

        1. Hi Roman!

          Ansonsten die Anzahl der Felder bekommste MyConn.Fields.Count

          Dafür gibt's auch einen SQL-Befehl!
          Select count(*) FROM anywhere

          Aeh nee Du, das zaehlt die Anzahl der Datensaetze, also der Zeilen. Janko will in diesem Fall aber die Anzahl der Tabellenfelder, also der Spalten wissen. Fuer die gibt es aber keinen SQL-Befehl, es sei denn man kennt die datenbankinternen Verwaltungstabellen.

          Bye by Calocybe

          Nö..

          wie ich schon sagte geht das mit MyConn.fields.count  
          mit MyConn.fields(n).name  bekommt man auch noch den
          Namen des Feldes.

          So könnte man in etwa nen Header für ne Abfrage mit
          unbekannter Feldanzahl (Kreuztabelle) schreiben :

          n = 0    
          While n < MyConn.fields.Count
          response.write MyConn.fields(N).name
          n=n+1  
          wend

          gruss
          Jens

          1. Moin!

            Aeh nee Du, das zaehlt die Anzahl der Datensaetze, also der Zeilen. Janko will in diesem Fall aber die Anzahl der Tabellenfelder, also der Spalten wissen. Fuer die gibt es aber keinen SQL-Befehl, es sei denn man kennt die datenbankinternen Verwaltungstabellen.

            Nö..

            Wieso noe? Ich hab doch gar nichts anderes gesagt als Du. Hab nur gesagt, dass SELECT count(*) FROM tblname; nicht die Anzahl der Spalten zaehlt, sondern die der Datensaetze. Und dass es fuer die Spalten keinen SQL-Befehl gibt. (Wenn man ueber die internen Verwaltungstabellen des jeweiligen Datenbanksystems Bescheid weiss, kriegt man es mit einem SELECT auf eine bestimmte Tabelle aber doch raus.)

            wie ich schon sagte geht das mit MyConn.fields.count  
            mit MyConn.fields(n).name  bekommt man auch noch den
            Namen des Feldes.

            Naja, ich sag ja gar nichts anderes.

            Bye by Calocybe

            P.S. He Andre! Aetsch, ich hab ja noch spaeter gepostet als Du in <18940.html>  ;-))

  2. Hallo!
    Mir liegt mal wieder eine kniffilige ASP-Frage auf der Zunge:

    Ich öffne eine bestimmte Datenbank(test.mdb) mit ASP:
    -- Set MyConn = Server.CreateObject("ADODB.Connection")
    -- MyConn.Open "test"

    In dieser Datenbank gibt es dann eine bestimmte Tabelle(tbltest).
    Ich kann ja nun folgendes einfaches RecordSet, mit einem Parameter, für diese Tabelle bestimmen:
    -- Set RS_NEU = MyConn.Execute("SELECT * FROM tbltext WHERE fldID=1")

    Nun möchte ich in der ASP-Seite ein Formular gestalten.
    Die Anfangswerte der jeweiligen Felder stehen in dem ausgewähltem Datensatz.
    Also zum Beispiel der Name, das Alter etc..
    Kann ich die ASP-Seite denn nun so allgemein halten, dass ersteinmal geschaut wird,
    wieviele Spalten vorhanden sind, wie sie heißen und darauf hin meine ASP-Seite aufgebaut wird??

    Wie wärs denn damit:

    SQL="SELECT * FROM MeineTabelle"
    DSN="MeineDSN"
    Set RS=Server.CreateObject ("ADODB.Recordset")
    RS.Open SQL, DSN

    For Each Element In RS.Fields
    Response.Write (Element)
    Next

    RS.Close

    Mfg Christoph Ruhnke

  3. Erstmal vielen Dank an alle, die sich den Kopf zerbrochen haben.
    Nur zur Klärung:
    Calocybe hat recht--> Ich wollte nicht die Datensätze, sondern die Spalten abfragen (und den Namen haben).
    Ich werde es jetzt (mit Euren Vorschlägen im Hinterkopf) nocheinmal versuchen.
    Also

    Danke ;-)

    Janko