2011-07-05 3 views
1

시나리오 : 액세스 데이터베이스에 대한 고급 검색 양식을 만들고 있습니다. 이들은 이미 액세스 쿼리를 실행하고 쿼리 창에서 열리는 단일 검색 양식을 가지고 있습니다.MS-Access 쿼리 창에서 VB 빌드 된 쿼리 열기

문제점 :이 기능을 모방하고 싶습니다. 그러나 코드 내에서 문자열로 쿼리를 만든 다음 쿼리 창에서 열려고합니다. 이것이 가능한가? 나는 Google를 찾았지만 아무것도 찾지 못했습니다. 그럴 수 없다면 대안이 있습니까?

미리 감사드립니다.

+1

쿼리 데이터 시트는 끔찍한 UI입니다. 왜 너는 그보다 더 나은 것을 위해 정착 하겠어? –

+0

@ David-W-Fenton, 이미 내 디자인이 아닌 다른 3 개의 검색 페이지에서 UI를 복사합니다. 이것은 다른 3 개의 옵션과 조금 더한 옵션이 결합 된 고급 검색 페이지입니다. – Gage

+0

그래서 열악한 UI가 이미 존재하기 때문에 열악한 사용자 인터페이스를 계속 사용하고 있습니까? 그것은 당신에게 좋은 장기 전략처럼 들리는가? –

답변

2

당신은 쿼리 창처럼 보이는 데이터 시트보기에서 폼을 열 수 있지만, 사용자가 설정 한 다음 레코드 원본

예를 형태가에 컨트롤을 추가 생성 할 필요가

Dim rst As DAO.Recordset 
Dim rsField As DAO.Field 
Dim control As Access.TextBox 

Dim frm As Form 
Set frm = CreateForm() 
frm.Visible = False 

Dim sql As String 
sql = "Select * from MSysObjects" 

Set rst = CurrentDb.OpenRecordset(sql) 



For Each rsField In rst.Fields 
    Debug.Print rsField.Name 
    Set control = CreateControl(frm.Name, acTextBox, acDetail) 
    With control 
     .Width = 100 
     .Height = 100 
     .Top = 100 
     .Left = 100 
     .ControlSource = rsField.Name 
     .Name = rsField.Name 

    End With 

Next rsField 

Set rst = Nothing 

frm.Visible = True 


frm.RecordSource = sql 

DoCmd.OpenForm frm.Name, acFormDS 

여기에는 몇 가지 문제가 있습니다.

  1. 매번 새로운 양식을 만듭니다. 즉, 사용자가 양식을 닫으면 저장할 것인지 묻는 메시지가 나타납니다. 따라서 기존 서식을 열고 수정 (기존 항목 지움)을 조사하고자 할 수 있습니다.
  2. 쿼리가 두 번 실행됩니다. 처음에는 필드를 가져오고 두 번째 필드는 실제로 양식을 표시합니다. 쿼리에 따라이 작업이 문제 일 수도 있고 아닐 수도 있습니다.

정직하게 querydef를 수정하는 것이 더 건강한 방법 일 것입니다.