2013-05-28 7 views
0

좋아요, 저는 VBA와 SQL 및 프로그래밍 전반에 대한 새로운 소식입니다. 아마 이미 내 안구에 달려 있습니다. 그것이있을 수 있으니, 나는 약간의 VBA와 SQL 지식이 할 수있는 놀랄만 한 것들에 의해 INSIGIGED되어있다!Excel 2010의 선택을 기반으로 SQL 문 채우기 VBA Userform

내가 선택 상자/텍스트 상자/DTPicker을 가지고 마이크로 소프트 엑셀 2010 사용자 정의 폼을 만들어 :

그래서, 여기에 내 질문입니다. 이상적으로 내가 달성하고 싶은 것은 Sally가 들어 와서 "Sally 's Report"를 선택하고 01/01/2010-05/05/2012에 날짜 범위, SQL 문 (예 : 이 데이터를 검색하고 보고서를 생성하는 생성됩니다.

저는 현재 작성된 Excel 쿼리 도구 (기본적으로 SQL 문에 입력 한 후 연결을 시작하는 명령 단추를 누른 다음 보고서 실행)를 사용하여 보고서를 작성합니다. "Sally 's Report"를 "XXX"SQL 문으로 정의한 다음 콤보 상자 선택에 따라 보고서를 실행하면 보고서를 직접 실행하고 보고서를 도구를 사용하는 모든 사용자가 사용할 수있게됩니다 .

아무런 도움이 필요하지 않으시면 대단히 감사하겠습니다!

답변

0

이 줄을 따라 뭔가를 할 수 있습니다. 쿼리하는 테이블 구조 나 사용자 정의 폼의 필드 이름을 모르기 때문에 이것은 매우 기본적인 설정입니다. 이 코드에서는 여러 보고서가 포함 된 콤보 상자의 이름이 cboReports이고 txtStartDate 및 txtEndDate라는 두 개의 텍스트 필드가 있으며 둘 다 포함되어 날짜 범위를 포괄적으로 쿼리한다고 가정합니다.

Private Sub CommandButton1_Click() 
    Dim strSQL As String 

    Select Case Me.cboReports 
     Case "Sally's Report" 
      strSQL = "SELECT * FROM tblSally" 
     Case "John's Report" 
      strSQL = "SELECT * FROM tblJohn" 
     Case Else 
      strSQL = "SELECT * FROM tblDefault" 
    End Select 
    If Me.txtStartDate <> vbNullString And Me.txtEndDate <> vbNullString Then 
     strSQL = strSQL & " WHERE ([DateField] between " & Me.txtStartDate & " and " & Me.txtEndDate & ")" 
    End If 

    MsgBox "Now it's time to do something with this SQL:" _ 
     & vbNewLine & strSQL, vbOKOnly 

End Sub