Działania na tabelach: zmiana nazwy i kopiowanie

Użytkowanie programu bazodanowego
Wieslaw
Posty: 11
Rejestracja: śr lut 13, 2013 11:54 pm

Działania na tabelach: zmiana nazwy i kopiowanie

Post autor: Wieslaw »

Szukam sposobu (makra), który zmieniałby nazwę tabeli "Historia" na "Archiwum z datą bieżącą" (lub nadawałby kolejne numery) oraz kopiowałby tabelę "Historia1" zmieniając jej nazwę na Historia". Przykład w załączniku.
Załączniki
zajecia1.odb
(125.57 KiB) Pobrany 163 razy
OpenOffice 3.4.1 na Windows 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Działania na tabelach: zmiana nazwy i kopiowanie

Post autor: Jan_J »

Do takich rzeczy powinien wystarczyć SQL. Możesz go obudować w standardowy interfejs makropolecenia, jak np. w https://forum.openoffice.org/pl/forum/v ... 2169#p2152, albo wpisywać do okna "Wykonaj bezpośrednio polecenie SQL" (nie myląc go z oknem kwerendy).
Referencja do dialektu SQL używanego w bazie wbudowanej do OO/LO: http://hsqldb.org/doc/1.8/guide
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Działania na tabelach: zmiana nazwy i kopiowanie

Post autor: Jan_J »

SQL:

Kod: Zaznacz cały

alter table "stara" rename to "nowa"
Base: Narzędzia -> SQL
Makro (Basic):

Kod: Zaznacz cały

sub zmianaNazwyTabeliWBazie()
    Dim DatabaseContext As Object
    Dim DataSource As Object
    Dim Connection As Object
    Dim InteractionHandler as Object
    Dim Statement As Object
    Dim ResultSet As Object

    DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
    DataSource = DatabaseContext.getByName("moja baza") rem wpisz nazwę pod jaką Twoja baza jest zarejestrowana (przy użyciu tej metody dostępu musi być zarejestrowana)

    If Not DataSource.IsPasswordRequired Then
      Connection = DataSource.GetConnection("","")
    Else
      InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
      Connection = DataSource.ConnectWithCompletion(InteractionHandler)
    End If

    Statement = Connection.createStatement()
    ResultSet = Statement.executeQuery("ALTER TABLE ""stara"" RENAME TO ""nowa""")
    rem zależnie od konfiguracji, może być potrzebne zatwierdzenie zmiany poleceniem Commit
    Connection.Close()

end sub
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ