0

다중 폼이 포함 된 Libreoffice Base를 만들고 있습니다. Form1은 "Projects"테이블에 링크되어 있고 각 프로젝트에는 여러 개의 작업이 있습니다. 동일한 Form1 내에 하위 폼으로 작업을 표시 할 수 있지만 각 프로젝트에는 많은 작업이 있으며 각 작업에도 하위 작업이 있으므로 작업을 수행하고 싶습니다. 자신의 형식으로 Form2라고 부를 수 있습니다.특정 필터/쿼리를 사용하여 Libreoffice/Openoffice Base에서 폼을 엽니 다.

Form2에서 Form2를 열 수있는 푸시 버튼을 만들었지 만 푸시 버튼을 누른 상태에서 표시되는 프로젝트와 관련된 작업 만 표시하는 방법을 모르겠습니다. . 지금까지 여기

내가 할 수 있었던 것입니다 :

Doc = StarDesktop.CurrentComponent 
Form = Doc.DrawPage.Forms.GetByIndex(0) 
ProjID = Form.getByName("txtProjectID").Text 

: 나는 작업에 대해 (가 Form1에 내부 txtProjectID라는 텍스트 상자에) 표시 할 projectID 읽기

Dim Args(1) As New com.sun.star.beans.PropertyValue 
Args(0).Name = "ActiveConnection" 
Args(0).Value = Form.ActiveConnection 
Args(1).Name = "OpenMode" 
Args(1).Value = "open" 
oForm = thisComponent.Parent.getFormDocuments 
oForm.loadComponentFromURL("Form2","_blank",0, Args()) 

: 작업을 열려면 형식 2를 형성 나는 두 가지 방법을 발견

둘 다 작업 양식을 열지 만 projectID를 전달하여 해당 프로젝트와 관련된 레코드 만로드 할 수는 없습니다. 나는 또한 Args()에 대한 좋은 문서를 찾을 수 없었다.

질문 : Form2를 열고 Form1의 projectID와 관련된 레코드 만 표시하려면 어떻게해야합니까? 또한 동일한 레코드가 아닌 동일한 projectID로 새 레코드를 Form2에 추가하고 싶습니다.


업데이트

이 코드에 필터를 적용 할 수 있었다 : 나는 그것을 적용받을 형식 2를 엽니 다 같은 하위에서 그것을 실행하고 있기 때문에,

odoc2 = thiscomponent 
FormModel = odoc2.drawpage.forms.getbyindex(0) 
FormModel.Filter =("Tasks.projectID = " & ProjID) 
FormModel.ApplyFilter = True 
FormModel.reload() 

그러나 Form1 (Sub라고 함). 대신 Form2에서 작동하도록하려면 어떻게해야합니까?

답변

0

귀하의 질문은 대부분의 답을 제공해 주었으며, dbg_methods에 대한 탐구 만 필요했습니다. "Form1에"에서 실행할 때이 작동

frm_container = ThisDatabaseDocument.FormDocuments.getByName("Form2") 
frm_container.open 
FormModel2 = frm_container.component.getDrawPage.getforms.getbyindex(0) 
FormModel2.Filter [....] 

: 아래의 예에서 개체 변수 FormModel2 당신이 찾고있는 것입니다.

또는 필터의 주제가 될 값을 별도의 테이블/행에 영구적으로 저장할 수 있습니다.

관련 문제