[erledigt] SQLite-Tables als TreeGadget-Nodes nebeneinander?
[erledigt] SQLite-Tables als TreeGadget-Nodes nebeneinander?
moin, moin...
Ich möchte die Struktur einer SQlite-DB visualisieren.
Normalerweise würde man das ja mit einem TreeGadget lösen, in dem jeder Table zu einem Node wird und die einzelnen Columns zu Subitems.
Das wird mir aber komplett aufgeklappt "zu hoch" um als Übersicht zu dienen.
Nun suche ich eine Möglichkeit, die Tables/Nodes nebeneinander darzustellen und die Columns/Subitems dann darunter.
Hat jemand eine Idee, wie man das hinbekommen könnte ohne für jeden Table/Node ein eigenes TreeGadget nebeneinander aufzumachen?
Oder kennt jemand ein (SQLite-)Tool, das das so darstellen kann?
mDv...
[edit 080528: 17:40] Insofern erledigt, daß ich eine zufriedenstellende Druck-Ausgabe habe.
Ich möchte die Struktur einer SQlite-DB visualisieren.
Normalerweise würde man das ja mit einem TreeGadget lösen, in dem jeder Table zu einem Node wird und die einzelnen Columns zu Subitems.
Das wird mir aber komplett aufgeklappt "zu hoch" um als Übersicht zu dienen.
Nun suche ich eine Möglichkeit, die Tables/Nodes nebeneinander darzustellen und die Columns/Subitems dann darunter.
Hat jemand eine Idee, wie man das hinbekommen könnte ohne für jeden Table/Node ein eigenes TreeGadget nebeneinander aufzumachen?
Oder kennt jemand ein (SQLite-)Tool, das das so darstellen kann?
mDv...
[edit 080528: 17:40] Insofern erledigt, daß ich eine zufriedenstellende Druck-Ausgabe habe.
Zuletzt geändert von scholly am 28.05.2008 17:41, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Re: SQLite-Tables als TreeGadget-Nodes nebeneinander?
Hallo scholly,
(geschickt gepushed
)
erstellen, wie das aussehen soll?
Grüße ... Kiffi
(geschickt gepushed

kann ich mir leider nix drunter vorstellen. Kannst Du mal eine Skizzescholly hat geschrieben:Hat jemand eine Idee, wie man das hinbekommen könnte ohne für jeden
Table/Node ein eigenes TreeGadget nebeneinander aufzumachen?
erstellen, wie das aussehen soll?
Grüße ... Kiffi
a²+b²=mc²
Re: SQLite-Tables als TreeGadget-Nodes nebeneinander?
Hatte AFAIR NTQ mal irgendwo so beschriebenKiffi hat geschrieben:Hallo scholly,
(geschickt gepushed)

Puuh... ich versuchs mal als ASCII-Pic:kiffi hat geschrieben: Kannst Du mal eine Skizze erstellen, wie das aussehen soll?
Code: Alles auswählen
table1 table2 table3 table4
+col1 +col1 +col1 +col1
+col2 +col2 +col2 +col2
+col3 +col3 +col3 +col3
+col4 +col4 +col4
+col5 +col5
+col6
+col7
Verständlicher?
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Re: SQLite-Tables als TreeGadget-Nodes nebeneinander?
reicht voll und ganz. Jetzt weiß ich in etwa, was Du meinst.scholly hat geschrieben:Puuh... ich versuchs mal als ASCII-Pic:
Allerdings erschließt sich mir der praktische Nutzen einer solchen Darstellung
nicht. Wenn mehrere Tabellen in einer Datenbank vorhanden sind, muss der
Anwender (im Gegensatz zur klassischen Treedarstellung) unnötigerweise
scrollen, wenn er sich einen Überblick verschaffen will.
Wie dem auch sei: Mir fällt auf Anhieb kein Gadget (oder auch Control)
ein, welches für diesen Zweck geeignet ist. Das musst Du wohl in den
sauren Apfel beißen und Dir das aus mehreren Textgadgets +
ScrollAreaGadget selberbauen.
... oder aber Du verwendet ein Webgadget(), in das Du ein aus der
Datenbankstruktur generiertes HTML einlädst (dürfte wohl am einfachsten
und flexibelsten sein).
Grüße ... Kiffi
a²+b²=mc²
Re: SQLite-Tables als TreeGadget-Nodes nebeneinander?
Letztendlich soll eigentlich was Ausdruckbares dabei herauskommen, das ich zur (Weiter-)Entwicklung meiner Video-Verwaltung nutzen will.Kiffi hat geschrieben:Allerdings erschließt sich mir der praktische Nutzen einer solchen Darstellung nicht.
Ma gucken, was ich mit ScrollArea- und ImageGadgets hinbekomme...Kiffi hat geschrieben:aus mehreren Textgadgets + ScrollAreaGadget selberbauen
Da werd ich mich auch mal dran versuchen, für HTML gibts doch auch sowas wie'n TreeGadget, oder?Kiffi hat geschrieben:... oder aber Du verwendet ein Webgadget(), in das Du ein aus der Datenbankstruktur generiertes HTML einlädst (dürfte wohl am einfachsten
und flexibelsten sein).
Abba jezz is ersma Bubu anjesacht


Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Re: SQLite-Tables als TreeGadget-Nodes nebeneinander?
ja, kann man bauen. Aber ich denke, Du willst keinen (klassischen) Tree?scholly hat geschrieben:für HTML gibts doch auch sowas wie'n TreeGadget, oder?
Ich dachte eigentlich eher an sowas:
Code: Alles auswählen
<html>
<body>
<table>
<tr>
<td>Tabelle1</td><td>Tabelle2</td><td>Tabelle3</td>
</tr>
<tr>
<td> +Field1_1</td><td> +Field2_1</td><td> +Field3_1</td>
</tr>
<tr>
<td> +Field1_2</td><td> +Field2_2</td><td> +Field3_2</td>
</tr>
<tr>
<td> +Field1_3</td><td> +Field2_3</td><td> +Field3_3</td>
</tr>
</table>
</body>
</html>
juuute idee!scholly hat geschrieben:Abba jezz is ersma Bubu anjesacht

Grüße ... Kiffi
// Edit:
hier mal ein Code, der zeigt, wie man das in etwa machen kann. Du musst
lediglich im Aufruf von ReadSqliteDatabaseStructure() den Pfad der zu
untersuchenden Datenbank anpassen.
Code: Alles auswählen
EnableExplicit
Structure s_SDS
TableName.s
Fields.s
EndStructure
Procedure ReadSqliteDatabaseStructure(Database.s, SDS.s_SDS())
Protected SQL.s
Protected sDB.l, P1.l, P2.l, Counter.l
sDB = OpenDatabase(#PB_Any, Database, "", "", #PB_Database_SQLite)
If sDB
DatabaseQuery(sDB, "Select name, sql From sqlite_master Where type = 'table' Order By name")
While NextDatabaseRow(sDB)
AddElement(SDS())
SDS()\TableName = GetDatabaseString(sDB, 0)
SQL = GetDatabaseString(sDB, 1)
P1 = FindString(SQL, "(", 1)
If P1
P1 + 1
P2 = FindString(SQL, ")", P1)
If P2 : SDS()\Fields = Mid(SQL, P1, P2-P1) : EndIf
EndIf
Wend
CloseDatabase(sDB)
Else
; Datenbank konnte nicht geöffnet werden
EndIf
EndProcedure
UseSQLiteDatabase()
NewList SDS.s_SDS() ; SDS = *S*QLite*D*atabase*S*tructure ;-)
ReadSqliteDatabaseStructure("D:\Data\temp.db", SDS())
Define HTML.s
HTML + "<html><body><table>"
HTML + "<tr>"
ForEach SDS()
HTML + "<td><b>" + SDS()\TableName + "</b></td>"
Next
HTML + "</tr>"
HTML + "<tr>"
ForEach SDS()
HTML + "<td style='padding-left:20px;vertical-align:top'>" + ReplaceString(SDS()\Fields, ",", "<br />") + "</td>"
Next
HTML + "</tr>"
HTML + "</table></body></html>"
Enumeration
#frmMain
#frmMain_WG
EndEnumeration
Define WindowFlags.l
WindowFlags | #PB_Window_ScreenCentered
WindowFlags | #PB_Window_SystemMenu
WindowFlags | #PB_Window_Invisible
OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 800, 600, "", WindowFlags)
CreateGadgetList(WindowID(#frmMain))
WebGadget(#frmMain_WG, 0, 0, 800, 600, "")
While GetGadgetAttribute(#frmMain_WG, #PB_Web_Busy) : WindowEvent() : Delay(1) : Wend
SetGadgetItemText(#frmMain_WG, #PB_Web_HtmlCode, HTML)
While GetGadgetAttribute(#frmMain_WG, #PB_Web_Busy) : WindowEvent() : Delay(1) : Wend
HideWindow(#frmMain, #False)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
a²+b²=mc²
Hab grade mal kurz Zeit zum Testen gehabt.
Das WebGadget bleibt leer
, aber wenn ich HTML.s debugge und abspeicher, sieht die Tabelle gut aus.
Abgesehen davon, daß ich jetzt den Inhalt von HTML.s abspeichern und per RunProgram() öffnen und sogar drucken könnte,
wurmt es mich natürlich, daß in dem WG nix angezeigt wird.
Irgendeine Idee für eine Anti-Wurm-Mittel ?
[OT]
Was schickt ihr uns eigentlich für ein Wetter hoch?
Schwül bis zum Dauer-T-Shirt-Wechsel und vereinzelte Tropfen.
Kriegt ihr in Köln kein erfrischendes Gewitter zustande?
[/OT]
Das WebGadget bleibt leer


Abgesehen davon, daß ich jetzt den Inhalt von HTML.s abspeichern und per RunProgram() öffnen und sogar drucken könnte,
wurmt es mich natürlich, daß in dem WG nix angezeigt wird.
Irgendeine Idee für eine Anti-Wurm-Mittel ?
[OT]
Was schickt ihr uns eigentlich für ein Wetter hoch?
Schwül bis zum Dauer-T-Shirt-Wechsel und vereinzelte Tropfen.
Kriegt ihr in Köln kein erfrischendes Gewitter zustande?



[/OT]
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Wenn ich den abgespeicherten Code nicht per RunProgram anzeigen lasse, sondeRn in das WG lade, wird er problemlos angezeigt.debugger hat geschrieben:<html><body><table border=1><tr><td><b>maintable</b></td><td><b>table_cds</b></td><td><b>table_dvds</b></td><td><b>table_tree</b></td></tr><tr><td style='padding-left:20px;vertical-align:top'>ID INTEGER PRIMARY KEY<br /> Titel<br /> Genre<br /> Jahr<br /> MediumTyp<br /> MediumName<br /> Owner<br /> Quelle<br /> Dauer<br /> Qualität<br /> Infos<br /> Artist<br /> Path<br /> Filename<br /> FileSize<br /> VideoCodec<br /> VideoBitrate<br /> Auflösung<br /> fps<br /> AudioCodec<br /> AudioBitrate<br /> AudioKanäle<br /> SamplingRate</td><td style='padding-left:20px;vertical-align:top'>cd_name </td><td style='padding-left:20px;vertical-align:top'>dvd_name </td><td style='padding-left:20px;vertical-align:top'>id INTEGER PRIMARY KEY<br /> item_name TEXT<br /> item_icon TEXT<br /> item_pos NUMERIC<br /> item_parent NUMERIC<br /> item_level</td></tr></table></body></html>
Und wenn ich das Quote da oben in ein file cut'n'paste und das ins WG lade, gehts auch.
Das Problem kann IMHO also eigentlich nur in diesen Zeilen liegen:
Code: Alles auswählen
; While GetGadgetAttribute(#frmMain_WG, #PB_Web_Busy) : WindowEvent() : Delay(10) : Wend
;
; SetGadgetItemText(#frmMain_WG, #PB_Web_HtmlCode, HTML)
; While GetGadgetAttribute(#frmMain_WG, #PB_Web_Busy) : WindowEvent() : Delay(10) : Wend

Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)