Strona 1 z 1

Działania na tabelach: zmiana nazwy i kopiowanie

: sob lip 12, 2014 11:57 am
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.

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

: sob lip 12, 2014 8:28 pm
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

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

: czw lip 17, 2014 10:58 pm
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