좋아, 친구, 일주일 반 만에 직장을 그만두고 상사가 할 일을 쉽게하기 위해 노력하고 있습니다. 그는 액세스 지식이 없으므로 생성 한 보고서를 자동화하는 양식을 작성하려고합니다. 모든 다른 보고서에 대해 다른 양식을 작성하는 대신 매개 변수 테이블에서 자동화하려고합니다. 다음은 내가 할 일입니다. 5 개의 필드로 구성된 테이블을 만들었습니다. 이러한 필드를 사용하여 표준 양식 서식 파일의 매개 변수 필드를 채우고 싶습니다. 내 테이블에있는 5 개 개의 필드는 다음과 같습니다 :양식의 콤보 상자를 기반으로 쿼리 선택 자동화
- 쿼리 실행되고 유형 (결과가 뱉어)
- 쉼표없이 공백으로 구분하여이 보고서를 생성 쿼리.
- 대상
transferspreadsheet
의해 사용되는 이러한 쿼리 생성"QRYNAMEA,QRYNAMEB"
- 테이블이 이미 데이터를 공급하도록 설정 피봇 테이블을 갖는 파일을 엑셀.
- 이 엑셀 파일의 입력 시트. 현재이 모든 시트를 "입력"이라고합니다. (그다지 중요하지 않습니다)
제 문제는 콤보 상자를 만든 후에 어디로 가야할지 모르겠다는 것입니다. 필자는 쿼리를 자동화하기에 충분한 시각적 기본 지식을 갖추고 있지만, 3,4 및 5의 정보로 양식을 채우기에는 충분하지 않습니다 (지금까지 여러 쿼리에 대해 수동으로 변경했습니다). 나는 'choosebox'의 선택에서 테이블의 레코드를 찾는 방법을 모르고, 자동화에서 개별 필드를 선택한다.
# 2를 분석하고 쿼리를 자동화하는 기능에 자신감이 있으며,보고있는 필드에 값을 넣을 수는 있지만 실제로 테이블에서 값을 가져 오는 방법을 모르겠습니다. 내가이 일을하기 전에. 나 또한 나를 위해 나를 도울 수있는 구글을 설명 할 수 없다.
누구나 전에 이렇게 해본 적이 있습니까? 나는 VBA 라이브러리 중 하나에 대한 지식이 부족하다고 가정하고 있지만 어떤 행운을 찾지 못했습니다.
편집 : 이 시점에서 필자는 필자가 제공 한 입력에 따라 단일 필드를 반환하는이 테이블에 대한 쿼리를 작성합니다. SQL에서이 작업을 수행하는 것으로 상상할 수 있지만 폼을 채우는 방법을 알지 못하거나 테이블에서 필드 개체를 추출한 후에도이를 추출 할 수 없습니다.
나는 그날을 위해 밖으로 나가야한다. 그러나 나는 금요일에이 일을 계속하기 위해 돌아갈 것이다. 그리고 내가 찾으면, 나는 그 해결책을 게시 할 것이다. 이것은 독특한 수수께끼처럼 보입니다. 그리고 그것에 대한 답을주는 것이 좋을 것입니다.
최종 편집 :
양식을 테이블에서 필드를 끌어와 웁니다 첫 번째 방법, 선택하여 활성화 : 코드 (오류 처리의 방법으로 많은이없는) 연마 콤보 상자에 새 항목은 다음과 같습니다
Private Sub QuerySelect_Change() Dim db As Database Dim rec As Recordset Set db = CurrentDb Set rec = db.OpenRecordset("SELECT [Queries to Run], [Source Table], [Destination Spreadsheet], [Destination Sheet Name] FROM TBL_QRY_SETTINGS WHERE TBL_QRY_SETTINGS.[Query Type] Like '" & [Forms]![QuerySelector]![QuerySelect] & "';") [Forms]![QuerySelector]![QueriesToRun].Value = rec("Queries to Run") [Forms]![QuerySelector]![SourceTable].Value = rec("Source Table") [Forms]![QuerySelector]![FileDest].Value = rec("Destination Spreadsheet") [Forms]![QuerySelector]![SheetName].Value = rec("Destination Sheet Name") Set rec = Nothing Set db = Nothing End Sub
두 번째 코드는 데이터가 쿼리를 실행하는 것을 가져옵니다. 나는 이것이 어떻게 나타나는지 좋아한다. 콤보 박스 근처의 버튼을 클릭하면 실행됩니다.나는 두 개 이상의 필드를 잡는 오전 것을 제외 부분에 대한 최종 코드 (1) 거의 선택한 답변과 동일 함을
는Private Sub DynamicQuery_Click() Dim qryArray As Variant Dim i As Integer qryArray = Split([Forms]![QuerySelector]![QueriesToRun], ",") DoCmd.SetWarnings False For i = LBound(qryArray) To UBound(qryArray) Debug.Print qryArray(i) DoCmd.OpenQuery (qryArray(i)) Next DoCmd.SetWarnings True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, [Forms]![QuerySelector]![SourceTable], _ [Forms]![QuerySelector]![FileDest], _ True, [Forms]![QuerySelector]![SheetName] End Sub
참고. 이는 고유 한 "쿼리 유형"이 있고 내 레코드 집합에 레코드가 하나만 포함되어 있기 때문에 작동합니다.
어쨌든 어떤 사람들은 비틀 거리며 유용하다고 생각합니다. Send me a message if you do
. 지금까지 간단한 인터넷 검색에서 알 수 있듯이 이러한 종류의 자동화 작업은 액세스가 완료되지 않았습니다. 소수의 클릭만으로 모든 쿼리를 사용할 수있게하려면 문맹자가 자신의 쿼리를 실행하고 디자이너가 쉽게 추가 할 수 있어야합니다.
누군가 내가 이것을 참조하여 테이블을 반복하면서 다양한 보고서를 순차적으로 자동화 할 수 있습니다.
이 당겨 자동적 인 방법이 없다의 필드 내용과 변수 (MyRandomField)을 채울 것이다. 당신이 설명하는 것을 따라 가면 쿼리가 콤보 박스에서 선택된 후에 표시하고자하는 모든 세부 정보를 담고있는 일종의 문서 테이블을 요구할 것입니다. –
@HansUp 사진을 게시물에 임베드 할 수 없어 잘 포맷 할 방법을 찾지 못해서 여기 스크린 샷이 있습니다. http://i.imgur.com/EuTi5bY.png 맨 위 행 유일하게 하나 밖에 없지만 모두 같은 형식을 따릅니다. – GMoany