Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 21. 9. 2013 11:32:51

yao
Člen
Registrace: 13. 9. 2013
Příspěvků: 4

Vlastní "Sort" button - VYŘEŠENO

Dobrý den, potřebuju udělat jednoduchý sort button pro formulář, abych nemusel neustále označovat sloupec a klikat na "řadit vzestupně". Nejspíše se na to bude hodit nějaké makro, ale nikde nemůžu najít, jak bude vypadat...předpokládám něco jako

Sub sort 
oStatement = ThisComponent.DrawPage.Forms.GetByName("FormXYZ").ActiveConnection.createStatement() 
oStatement.execute( ..kód pro seřazení, např ORDER BY NAME ASC...)
End Sub

Můžete mi, prosím, poradit, jak má makro pro řazení vypadat?
Předem moc díky,
honza

Editoval yao (21. 9. 2013 13:11:19)

Offline

#2 21. 9. 2013 12:14:25

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: Vlastní "Sort" button - VYŘEŠENO

Mám poznamenané makro, které obsluheje SQL dotazy. Svého času jsem něco chystal, ale zřejmě nedodělal. Musíte laborovat. Předpokládám, že syntaxe Vám nebude dělat potíže.

Sub Button_onClick(Event As Object) 
'neodzkoušeno - příklad s deklarací SQL nutno přizpůsobit
   Dim Form As Object
   Dim Stmt As Object
   Dim I As Integer
   Dim SQL(4) As String

   SQL(0)="DELETE FROM ""attendance"""
   SQL(1)="INSERT INTO ""attendance"" (""first.name"", ""last.name"", ""present"", ""student.id"") (Select ""first.name"", ""last.name"", FALSE, ""person.id"" From ""youth2"" Where ""still.youth?"" = TRUE)"
   SQL(2)="UPDATE ""attendance"" SET ""date"" =  (select ""date""  from ""events"" order by ""event.id"" desc limit 1)"
   SQL(3)="UPDATE ""attendance"" SET ""event.id"" =  (select ""event.id""  from ""events"" order by ""event.id"" desc limit 1)"
   SQL(4)="UPDATE ""attendance"" SET ""event.name"" = (select ""event.name"" from ""events"" order by ""event.id"" desc limit 1)"
    Form=Event.Source.Model.Parent
    Stmt=Form.ActiveConnection.createStatement()
 
    For i = 0 to Ubound(SQL)
          Stmt.executeUpdate( SQL(I)  )   
   Next i
End Sub

Někde jsem také tady na fóru získal makro pro vytvoření tlačítka do formuláře.

Sub OpenForm(sName)
'Otevre formular
   oContexto = CreateUnoService("com.sun.star.sdb.DatabaseContext")
   oFonte = oContexto.getRegisteredObject("NAZEV")
   oForms = oFonte.DatabaseDocument.FormDocuments
   oAConnection = oFonte.getConnection("","")

   Dim pProp(1) As New com.sun.star.beans.PropertyValue
   pProp(0).Name = "ActiveConnection"
   pProp(0).Value = oAConnection
   pProp(1).Name = "OpenMode"
   pProp(1).Value = "open"
   oForm = oForms.loadComponentFromURL(sName, "_blank", 0, pProp())
End Sub

   Databáze musí být zaregistrovaná a při volání procedury se za sName dosadí jméno formuláře (sestavy). Pokud formuláře organizujete do skupin (adresářů), tak musí být dosazena kompletní cesta. Pozor, původní formulář, do kterého se vrátíte po zavření volaného formuláře je nejprve potřeba obnovit před dalším zpracováním dat.


   Nějaká makra se dají zřejmě najít v diskusi - zadejte hledat na záložce nad příspěvky. Podobně hledejte pomocí okénka s lupou když otevřete záložku články. Jsou tam někdy dost dobré návody. Tady by to mohlo být například v seriálu OpenOffice ve výrobní firmě, ale i jinde. Když tam nic nebude, hledejte v zahraničních zdrojích.

Editoval neutr (21. 9. 2013 12:21:53)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 21. 9. 2013 13:14:07

yao
Člen
Registrace: 13. 9. 2013
Příspěvků: 4

Re: Vlastní "Sort" button - VYŘEŠENO

Moc diky za rychlou odpoved! Nakonec jsem to vyresil nasledovne

Sub sort
oForm = ThisComponent.DrawPage.Forms.GetByName("formXYZ")
oForm.Order = """Jmeno"" Desc"
oForm.reload()
End Sub

Offline

Zápatí