Hallo,
ich will den Inhalt einer Tabelle in einem Textfeld im Formular anzeigen lassen. Außerdem eine bestimmte Spalte/Zeile der Tabelle! Mein Problem ist nur, dass ich nicht alle Befehle kenne. Ich habe diesen Makro gefunden, der es mir ermöglicht eine spalte(Vornamen) der tabelle in einer Messagebox anzeigen zu lassen.
Meine Frage ist nun, an welcher Stelle ich was zu meinem Ziel verändern müsste. Zur besseren Übersicht habei ch die Zeilen nummeriert:
Sub Datenauslese
1. Dim DatabaseContext as Object, s as String
2. Dim oDatenquelle as Object, oHandler as Object
3. Dim oDatVerb as Object, oStatement as Object, oErgSet as Object
4. DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
5. oDatenquelle=DatabaseContext.getByName("meineDatenbank")
6. oDatVerb = oDatenquelle.getConnection("","")
7. oStatement=oDatVerb.createStatement()
8. oErgSet= oStatement.executeQuery("SELECT ""Vorname"" FROM ""Tabelle1""")
9. s="Die Vornamen:" & chr(13)
10. if not isNull(oErgSet) then
do while oErgSet.Next
s= s & oErgSet.getString(1) & CHR(13)
Loop
End if
MsgBox s
End Sub
Programmierverständnis
Moderator: Moderatoren
Hey DelaYer,
Also, ich denke, du müsstest dir zunächst wirklich überlegen, ob das, was du vorhast, so zu realisieren ist. Kannst du mehr darüber schreiben?
Ich zitiere mal:
Diese soll dann zeilenweise (pro Zeile ein Datensatz?) in einem Textfeld dargestellt werden - mit Scrollbars rechts? Ist es das, was du willst? Wäre nicht ein Listenfeld besser geeignet?
Das Formular unterstützt im Übrigen ein Tabellenfeld-Control, mit dem du das recht einfach direkt hinbekommst.
Ein Textfeld wird schwieriger, ist aber natürlich auch machbar. Aber: Das ist richtig "Programmierarbeit".
Das Verfahren:
Diese Zeile änderst du ab auf:
jetzt hast du alle Datensätze in deinem Ergebnisset.
Nun verbindest du alle Inhalte zu einem String, also, du liest nicht nur ein Feld aus, sondern alle:
Sinnvollerweise trennst du die "Strings " noch mit einem Texttrenner, z.b. einenm Komma oder so, d.h. du fügst zwischen die beiden Stringabfragen noch so etwas wie "& ", " & " ein.
Dann erhälst du schon mal ein suboptimales ergebnis. Du wirst nämlich feststellen, dass die Zeilen jetzt unterschiedliche Längen haben (je nach Inhalt) und die Spalten auch selten untereinander stehen.
Gut, dass kann man natürlich auch "abfangen" und durchprogrammieren, dann eine "nicht-proportionale" Schrift wählen, fertig.
Aber wie gesagt, alles viel Arbeit.
Beispiele, wie man das machne kann, findest du im Buch "Datenbanken mit OpenOffice.org" aus der Galileo-Reihe, dort auf der CD, das Beispiel "Campingplatz". In Dialogen steht nämlich die Tabelle als Kontrollelement nicht zur Verfügung, dort muss man den Weg über Textfelder (besser gesagt Listboxen) gehen.
Viele Grüße
Thomas
Also, ich denke, du müsstest dir zunächst wirklich überlegen, ob das, was du vorhast, so zu realisieren ist. Kannst du mehr darüber schreiben?
Ich zitiere mal:
Mit "Tabelle" meinst du sicher alle Datensatze einer Datenbanktabelle?ich will den Inhalt einer Tabelle in einem Textfeld im Formular
Diese soll dann zeilenweise (pro Zeile ein Datensatz?) in einem Textfeld dargestellt werden - mit Scrollbars rechts? Ist es das, was du willst? Wäre nicht ein Listenfeld besser geeignet?
Das Formular unterstützt im Übrigen ein Tabellenfeld-Control, mit dem du das recht einfach direkt hinbekommst.
Ein Textfeld wird schwieriger, ist aber natürlich auch machbar. Aber: Das ist richtig "Programmierarbeit".
Das Verfahren:
Code: Alles auswählen
8. oErgSet= oStatement.executeQuery("SELECT ""Vorname"" FROM ""Tabelle1""")
Code: Alles auswählen
8. oErgSet= oStatement.executeQuery("SELECT * FROM ""Tabelle1""")
Nun verbindest du alle Inhalte zu einem String, also, du liest nicht nur ein Feld aus, sondern alle:
Code: Alles auswählen
s= s & oErgSet.getString(1) & oErgSet.getString(2) &...& CHR(13)
Dann erhälst du schon mal ein suboptimales ergebnis. Du wirst nämlich feststellen, dass die Zeilen jetzt unterschiedliche Längen haben (je nach Inhalt) und die Spalten auch selten untereinander stehen.
Gut, dass kann man natürlich auch "abfangen" und durchprogrammieren, dann eine "nicht-proportionale" Schrift wählen, fertig.
Aber wie gesagt, alles viel Arbeit.
Beispiele, wie man das machne kann, findest du im Buch "Datenbanken mit OpenOffice.org" aus der Galileo-Reihe, dort auf der CD, das Beispiel "Campingplatz". In Dialogen steht nämlich die Tabelle als Kontrollelement nicht zur Verfügung, dort muss man den Weg über Textfelder (besser gesagt Listboxen) gehen.
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hallo Tomas,
ich danke dir erstmal für deine Hilfe!!!
nach ein bisschen rumprobieren habe ich meine Aufgabe fast gelöst.
Da das Leben kein Ponyhof ist, habe ich neue Probleme:
1. Es soll sowas eingebaut werden, dass wenn in der Tabelle kein Firmennamen steht, nicht die Firmen-Adressen-Strings ausgelesen werden, sondern die privaten-Adressen-Strings
2. Wenn der Makro soweit fertig ist. Wie handle ich das, dass das Textfeld das alles anzeigt. IRgendwie bleibt das Textfeld bei mir leer!
Gerade der 2te Punkt ist mir wichtig und ich hoffe auf eine ähnlich gute Hilfe wie vorhin
PS: Ich benutzte die Bücher OpenOffice Programmierung und Makros in OpenOffice, tue mich aber schwer die vielen Möglichkeiten die dort an verschiedenen Stellen stehen, miteinander zu verbinden. Ständig klappt ein kombinierter MAkro nicht und ich weiss nie so wirklich warum :/
ich danke dir erstmal für deine Hilfe!!!
nach ein bisschen rumprobieren habe ich meine Aufgabe fast gelöst.
Da das Leben kein Ponyhof ist, habe ich neue Probleme:
1. Es soll sowas eingebaut werden, dass wenn in der Tabelle kein Firmennamen steht, nicht die Firmen-Adressen-Strings ausgelesen werden, sondern die privaten-Adressen-Strings
2. Wenn der Makro soweit fertig ist. Wie handle ich das, dass das Textfeld das alles anzeigt. IRgendwie bleibt das Textfeld bei mir leer!
Gerade der 2te Punkt ist mir wichtig und ich hoffe auf eine ähnlich gute Hilfe wie vorhin

PS: Ich benutzte die Bücher OpenOffice Programmierung und Makros in OpenOffice, tue mich aber schwer die vielen Möglichkeiten die dort an verschiedenen Stellen stehen, miteinander zu verbinden. Ständig klappt ein kombinierter MAkro nicht und ich weiss nie so wirklich warum :/