Arnie Geschrieben 29. Januar 2003 Geschrieben 29. Januar 2003 Hallo miteinander, ich habe in SQL ein Problem. Mir liegt eine Tabelle vor, in der sich täglich die Spaltenanzahl verändern kann. Die einzigen statischen Spalten sind MitarbeiterNr und ZeilenTyp. Konkret geht es um eine Programm-Berechtigungstabelle. Wenn nun ein neues Programm geschrieben wurde, muss es natürlich als neue Spalte in die Tabelle eingefügt werden... Dann müsste ich aber auch jedesmal die SQL-Abfrage dementsprechend anpassen. Sprich: Das muss automatisch gehen. Nun suche ich nach einer Möglichkeit z.B. mit einer SQL internen FOR EACH Schleife Spalte 3 bis "n" abzuklappern. Bin bisher allerdings zu keiner vernünftigen Lösung gekommen und bin recht verzweifelt. Alles nur, weil mir mein Ausbilder Recordsets verboten hat... MfG Arnie
Reinhold Geschrieben 29. Januar 2003 Geschrieben 29. Januar 2003 Originally posted by Arnie ich habe in SQL ein Problem. Mir liegt eine Tabelle vor, in der sich täglich die Spaltenanzahl verändern kann. Die einzigen statischen Spalten sind MitarbeiterNr und ZeilenTyp. Konkret geht es um eine Programm-Berechtigungstabelle. Wenn nun ein neues Programm geschrieben wurde, muss es natürlich als neue Spalte in die Tabelle eingefügt werden... Offengestanden klingt das eher nach einem fragwürdigen Datenmodell.
Peregrin Geschrieben 29. Januar 2003 Geschrieben 29. Januar 2003 hi, was hat dein ausbilder denn zum auslesen einer datenbank erlaubt? prinzipiell kann man ja schon mit 'select * from ...' alle spalten auslesen, und sich dann durch die spalten hangeln. und die spaltennamen liefert eine datenbank normalerweise auch auf anfrage (je nach provider unterschiedlich) btw, das design koennt echt schoener sein...
shad0w Geschrieben 29. Januar 2003 Geschrieben 29. Januar 2003 bist du sicher, dass es sich um die spaltenzahl handelt?? dann hat dein datenbank entwickler mist gebaut, denn sowas sollte normalerweise niemals auftreten. sql ist aber definitiv nicht zum linearen abarbeiten einzelner zeilen erfunden worden, d.h. du brauchst ne programmiersprache die dir das realisiert. jedoch wuerde ich mir das konzept nochmal genauer ansehen, analysieren und schauen wie man das problem beheben kann, indem man fixe tabellen verwendet. so long
Arnie Geschrieben 29. Januar 2003 Autor Geschrieben 29. Januar 2003 Das Design habe ich mir nicht ausgesucht. Es muss doch in SQL eine Möglichkeit geben Spalte für Spalte automatisch durchzugehen... In VB habe ich das ja bereits mit einem Recordset gelöst, doch Cheffe will dat nicht. Tabelle ms_berechtigungen - MNr - ZeilenTyp - Prog1 - Prog2 - Prog3 - ... MfG Arnie
shad0w Geschrieben 29. Januar 2003 Geschrieben 29. Januar 2003 ich kenne keine moeglichkeit, wie man mit native sql weder spalten noch zeilen nacheinander durchgehen kann. da brauchst dazu eine programmiersprache. datenbanknah: PL/SQL (oracle) (sowas aehnliches gibt es auch von ms, keine ahnung wie das heisst) anwendung ueber schnittstellen: ODBC, JDBC, native Treiber. so long
Pointerman Geschrieben 30. Januar 2003 Geschrieben 30. Januar 2003 Hallo Arnie! Welche Datenbank benutzt Du denn? Je nach Datenbank gibt es sehr verschiedene Methoden um die Anzahl und/oder Namen der Spalten abzufragen. Wenn wir wissen welche DB Du benutzt kann Dir sicher jemand helfen! Gruß Pointerman
Arnie Geschrieben 30. Januar 2003 Autor Geschrieben 30. Januar 2003 Habe die Lösung gefunden, wenn auch etwas umständlich, jedoch geht es in Verbindung mit VB so einigermaßen flott. Um das zusätzliche Recordset bin ich auf diese Weise leider nicht drum rum gekommen, aber diese Abfrage zu Beginn lahmt wenigstens nicht... SELECT syscolumns.Name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.sysobjects.id = dbo.syscolumns.id WHERE dbo.sysobjects.name = 'ms_tabellenname' ORDER BY syscolumns.name[/PHP] MfG Arnie
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden