Spalte einer Tabelle in eine andere übernehmen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Spalte einer Tabelle in eine andere übernehmen

Re: Spalte einer Tabelle in eine andere übernehmen

von F3K Total » Mi, 13.04.2011 17:34

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

Re: Spalte einer Tabelle in eine andere übernehmen

von F3K Total » Di, 12.04.2011 17:12

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

von komma4 » Di, 12.04.2011 14:06

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

von F3K Total » Sa, 09.04.2011 13:43

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

Nach oben