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.
Przycisk otwierający inny formularz
Re: Przycisk otwierający inny formularz
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.kris_IV pisze:A coś po polsku?
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
Re: Przycisk otwierający inny formularz
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.
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
Re: Przycisk otwierający inny formularz
No właśnie, jest to jedna z czynności, którą wykonuje skrypt, który masz w poście powyżej.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.
OpenOffice 2.4/3.1 na Ubuntu