Abfrage der Spaltenanzahl und -namen
Janko Wellmeier
- asp.net
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 ;-))
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
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
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
Hi Roman!
Ansonsten die Anzahl der Felder bekommste MyConn.Fields.Count
Dafür gibt's auch einen SQL-Befehl!
Select count(*) FROM anywhereAeh 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
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> ;-))
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
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