Arnie Geschrieben 29. Januar 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 29. Januar 2003 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 29. Januar 2003 Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 29. Januar 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Arnie Geschrieben 29. Januar 2003 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 29. Januar 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 30. Januar 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Arnie Geschrieben 30. Januar 2003 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.