Przycisk otwierający inny formularz

Użytkowanie programu bazodanowego
empe
Posty: 6
Rejestracja: wt lip 28, 2009 9:47 pm

Przycisk otwierający inny formularz

Post autor: empe »

Jak na formularzu utworzyć przycisk, który po kliknięciu otworzy formularz i wyświetli dane dla określonego ID.
np. mam tabelę w której są pola: ID, imie, nazwisko, druga tabela zawiera ID, ocena1, ocena2, ocena3
mając formularz utworzony na podstawie pierwszej tabeli chcę utworzyć przycisk polecenia aby po kliknięciu otworzył się formularz wyświetlający dane dla określonego ID

w accesie było to dosyć proste...był kreator.
kris_IV
Posty: 5
Rejestracja: pt lut 12, 2010 12:08 pm

Re: Przycisk otwierający inny formularz

Post autor: kris_IV »

A coś po polsku?
OpenOffice.org 3.1, Windows Vista/XP
kraf101
Posty: 7
Rejestracja: pn lut 22, 2010 5:08 pm

Re: Przycisk otwierający inny formularz

Post autor: kraf101 »

kris_IV pisze:A coś po polsku?
Kiedyś napisałem taki programik na ooforum do typowych czynności robionych makrami, tj Obsługa dialogboxa, otwieranie zamykanie formularza operacje na bazie i drukowanie.

Skrypcik podłączony do przycisku w formularzu robi:

1. Otwiera dialogbox "My_Dialog" do pobrania danych A,B,C oraz liczbę kopii do jaką makro ma wydrukować.
2. Wstawia nowy rekord do tabeli sql-em. - Tablica ma pole auto PK .
3. Otwiera drugi formularz "print_form" i ładuje rekord zapisany w kroku 2. Używam składni sql Pestgresa.
4. Drukuje "print_form" - ilość kopii zadana przez wartość z dialogboksa (krok 1)
5. Zamyka "print_form"

Kod: Zaznacz cały

Dim oDlg As Object


Sub StartDialog                     'Procedura podłączana do przycisku w formularzu
DialogLibraries.LoadLibrary( "Standard" )
oDlg = CreateUnoDialog(DialogLibraries.Standard.My_Dialog)
oDlg.execute()
End Sub

Sub SavePrint                       '"Procedura podłączona do przycisku w dialogboxie
Dim A,B,C, copies, sqls  as string
Dim OpenProp(1), PrintProp(2) As New com.sun.star.beans.PropertyValue


' Pobranie danych z dialogboksa do zmiennych
A = oDlg.getcontrol("field_A").text
B = oDlg.getcontrol("field_B").text
C = oDlg.getcontrol("field_C").text
copies = oDlg.getcontrol("field_copies").text

' Budowa polecenie sql INSERT
sqls = "INSERT INTO table (" & A & "," & B & "," & C & ");"

'Ustawienie  wskaźnika połączenie z bazą 
oCon = thisComponent.Drawpage.Forms(0).ActiveConnection

' Wykonanie polecenia SQL (zapisanie rekordu)
oStatement = oCon.CreateStatement()
oResult = oStatement.executeUpdate(sSQL)

' Pobranie pola PK zapisanego rekordu z bazy - Postgresql 
oResult = oStatement.executeQuery("SELECT currval('table_id_seq');")
Do While oResult.next()
  field_id = oResult.getString(1)
loop

' Otwarcie formularza "print_form"
OpenProp(0).Name = "ActiveConnection"
OpenProp(0).Value = oCon
OpenProp(1).Name = "OpenMode"
OpenProp(1).Value = "open"
pr_doc = thisComponent.Parent.getFormDocuments.loadComponentFromURL("print_form","_blank",0,OpenProp())

'Załadowanie zapisanago przed chwilą rekordu do formularza.
pr_Form = pr_doc.Drawpage.Forms.getbyname("MainForm")
pr_Form.Filter = "field_id=" & field_id
pr_Form.ApplyFilter = True
pr_Form.reload()

' Drukowanie formularza "print_form"
PrintProp(0).Name = "CopyCount"
PrintProp(0).Value = copies                       ' liczba kopii do wydrukowania z dialogboksa
PrintProp(1).Name = "Wait"                         '
PrintProp(1).Value = True                           ' OOo będzie czekał aż drukowanie się zakończy
PrintProp(2).Name = "Collate"
PrintProp(2).Value = false
pr_doc.print(PrintProp())

' Zamknięcie formularza "print_form"
pr_form.currentController.Frame.close(True)

' Zamknięcie dialogboksa
oDlg.endExecute()

End Sub
OpenOffice 2.4/3.1 na Ubuntu
wilq
Posty: 8
Rejestracja: wt cze 16, 2009 4:47 pm

Re: Przycisk otwierający inny formularz

Post autor: wilq »

Mam ogromną prośbę.... Bazy i formularze są w zasadzie opanowane przeze mnie, ale makra to całkowita czarna dziura (choć programowałem kiedyś w C i Pascalu). Czy ktoś podesłałby mi kod otwierający inny formularz w którym tylko musiałbym wkleić odpowiednie nazwy pól? Czyli jak krowie na miedzy....

Co powinno się dziać po przyciśnieciu przycisku na formularzu:
1) Pobrać wartość z jednego z pól bieżącego formularza
2) Otworzyć inny formularz w trybie dodania nowego rekordu
3) Ustawić wartość odpowiedniego pola nowego formularza z wartości pobranej.

Przykład realnego zastosowania to zarządzanie zamówieniami. Na wybranym zamówieniu kilkamy przycisk "wysyłka" który doda odpowiedni wpis w tabeli z wysyłkami z odpowednim id zamówienia na które właśnie ktoś patrzy.

Byłbym bardzo wdzięczny za pomoc.
LO 4.0.5/MySQL/Win7x64
kraf101
Posty: 7
Rejestracja: pn lut 22, 2010 5:08 pm

Re: Przycisk otwierający inny formularz

Post autor: kraf101 »

wilq pisze:Mam ogromną prośbę....
1) Pobrać wartość z jednego z pól bieżącego formularza
2) Otworzyć inny formularz w trybie dodania nowego rekordu
3) Ustawić wartość odpowiedniego pola nowego formularza z wartości pobranej.
No właśnie, jest to jedna z czynności, którą wykonuje skrypt, który masz w poście powyżej.
OpenOffice 2.4/3.1 na Ubuntu
ODPOWIEDZ