Seite 1 von 1

Re: Spalte einer Tabelle in eine andere übernehmen

Verfasst: Sa, 09.04.2011 13:43
von F3K Total
Hallo Frog,
schau Dir mal die SQL-Befehle hier an:
viewtopic.php?f=8&t=47595
Du müsstest sie nur in einer anderen Reihenfolge anwenden.
1.) Datenbankverbindung herstellen:

Code: Alles auswählen

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")...
2.) Daten aus der ersten Tabelle auslesen:

Code: Alles auswählen

Sql="select ...
.
.
.
While Sql_Abfrage.next ...
optional neue Tabelle erzeugen, weglassen wenn Du die zweite Tabelle schon angelegt hast:

Code: Alles auswählen

Sql ="CREATE CACHED TABLE " ...
3.) Daten in die zweite Tabelle hineinschreiben:

Code: Alles auswählen

Sql ="INSERT INTO ""Name_der_Tabelle"" ...
Zur 2. Frage:
Klar, Du kannst diese erzeugten/gefüllten Tabellen auch in Formularen verwenden, aber nach dem Erzeugen einmal auf "Tabellen" klicken und dann "Ansicht/Tabellen aktualisieren" drücken, sonst wird die Änderung/neue Tabelle nicht gefunden.

Gruß R

Re: Spalte einer Tabelle in eine andere übernehmen

Verfasst: Di, 12.04.2011 14:06
von komma4
frog hat geschrieben: Ich kann mir vorstellen das ich dies über SQL machen muss. Bin aber auch für andere Vorschläge offen.
Sowas kannst Du auch direkt in der Datenbank, bzw. über Extras>SQL... machen - kein Makro nötig.

Re: Spalte einer Tabelle in eine andere übernehmen

Verfasst: Di, 12.04.2011 17:12
von F3K Total
Hallo Frog,
Deine letzte Frage habe ich nicht verstanden, was genau möchtest Du tun?
komma4 hat geschrieben:Sowas kannst Du auch direkt in der Datenbank, bzw. über Extras>SQL... machen - kein Makro nötig.
Hallo komma4,
natürlich, stimmt. Für eine einmalige/seltene Aktion ist dies bestimmt die bessere Variante.

Gruß R

Re: Spalte einer Tabelle in eine andere übernehmen

Verfasst: Mi, 13.04.2011 17:34
von F3K Total
Ok, ich versuche es auch noch einmal.
Schaue Dir die Befehle, die Du im oben angegebenen Link findest mal genau an.
Da steht alles drin, was Du brauchst.

1.) Verbindung zur Datenbank herstellen
2.) Abfrage durchführen--> Die Daten werden hier bereits in die Variable "Sql_Abfrage" eingelesen
3.) Die Variable "Sql_Abfrage" auslesen, den sie ist eine "Variant"-Variable, sprich mal Zahl, mal String usw. und muß deshalb entsprechend ausgelesen werden.

Zur Erklärung:
Wenn Du z.B. die Spalten "Name", "Nachname", mit dem Format "Varchar" und die "Hausnummer" mit dem Format "Integer" aus einer Tabelle "Adressen" auslesen willst, geht das z.B. so:

Code: Alles auswählen

Sub Tabelle_Auslesen

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatabaseContext.getByName(ThisDatabaseDocument.getLocation())'Hier wird der aktuelle Datenbankname ermittelt.
Verbindung = Datenquelle.GetConnection("","")' ("Benutzername","Passwort")
SQL_Anweisung = Verbindung.createStatement()

sql="select ""Name"", ""Nachname"", ""Hausnummer"" from ""Adressen"""
Sql_Abfrage=SQL_Anweisung.executeQuery(Sql)

While Sql_Abfrage.next
oName=Sql_Abfrage.getString(1)' hier steht getString(1), weil es sich um die erste Spalte , Format  "Varchar" im Abfragebefehl "sql" handelt.
oNachname=Sql_Abfrage.getString(2)' hier steht getString(2), weil es sich um die zweite Spalte , Format  "Varchar" im Abfragebefehl "sql" handelt.
oHausnummer=Sql_Abfrage.getInt(3)' hier steht getInt(3), weil es sich um die dritte Spalte , Format  "Integer" im Abfragebefehl "sql" handelt.
msgbox "Name: "+oName&" "+oNachname+" Hausnummer: "+oHausnummer
Wend

end Sub
Mit den Variablen oName, oNachname und oHausnummer kannst Du jetzt weiterarbeiten, oder du liest die Abfrage in ein Array ein.

Code: Alles auswählen

i=0
While Sql_Abfrage.next
i=i+1
oName(i)=Sql_Abfrage.getString(1)' hier steht getString(1), weil es sich um die erste Spalte , Format  "Varchar" im Abfragebefehl "sql" handelt.
oNachname(i)=Sql_Abfrage.getString(2)' hier steht getString(2), weil es sich um die zweite Spalte , Format  "Varchar" im Abfragebefehl "sql" handelt.
oHausnummer(i)=Sql_Abfrage.getInt(3)' hier steht getInt(3), weil es sich um die dritte Spalte , Format  "Integer" im Abfragebefehl "sql" handelt.
msgbox "Name: "+oName(i)&" "+oNachname(i)+" Hausnummer: "+oHausnummer(i)
Wend
Dann hast Du die ganze Tabelle in einem Stück.
Gruß R