2010-12-03 4 views
1

두 가지 관련 질문이 있습니다. 먼저, 쿼리 결과 값을 텍스트 상자에 어떻게 할당합니까?MS Access의 텍스트 상자에 쿼리 결과 할당

여기에 내가, 현재 버튼의 클릭 이벤트에 할당 한 코드입니다 :

Private Sub SeatCount_Click() 
Dim db As Database 
Dim qdf As QueryDef 
Dim sql As String 
Dim rs As Recordset 

sql = "SELECT Count([Switch Port Matrix].[End Device Type]) AS [CountOfEnd Device Type] FROM [Switch Port Matrix] WHERE ((([Switch Port Matrix].[End Device Type])=""Seat"" Or ([Switch Port Matrix].[End Device Type])=""6AB"") AND (([Switch Port Matrix].Enabled)=1)) GROUP BY [Switch Port Matrix].[Switch Name] HAVING ((([Switch Port Matrix].[Switch Name]) Like """ & Me![Switch Name] & """))" 

Set db = CurrentDb() 
With db 
    On Error Resume Next 
    .QueryDefs.Delete "SeatCount" 
    Set qdf = .CreateQueryDef("SeatCount", sql) 
    DoCmd.OpenQuery "SeatCount" 
    .QueryDefs.Delete "SeatCount" 
End With 
db.Close 
qdf.Close 

End Sub 

이 작동하지만 쿼리를 열고 데이터 시트에 결과를 표시합니다. 내가하고 싶은 건 버튼을 클릭하고 데이터 시트를 보는 것보다 폼의 텍스트 상자에 결과를 표시하는 것이다. 첫째, 쿼리를 실행하여 데이터 시트를 열지 않고 결과를 문자열로 검색하려면 어떻게해야합니까? 내가 웹에서 찾은 것은 내가 작성한대로 쿼리를 실행하는 것보다는 dlookup을 사용하는 것을 가리키는 것 같다. 그러나 dlookup은 간단한 쿼리를 실행하는 데 적합하고 내가 찾은 것을 발견하지 못했다. 카운트 및 그룹 비와 같은보다 복잡한 요구 사항을 추가하십시오.

둘째, 양식을 열 때 쿼리를 어떻게 실행합니까? 이벤트에서 실행되도록 트리거하려고한다고 가정하지만 텍스트 상자의 속성에서 사용 가능한 적절한 이벤트가없는 것 같습니다.

저는 네트워크 엔지니어이기 때문에 프로그래머 나 데이터베이스 분석가가 아니지만 필자는 이러한 모든 종류의 작업이 무릎에 쏟아져 나오는 것을 충분히 배웠습니다. 누군가가 어려움을 겪고있는 기술자를 도울 수 있다면, 나는 그것을 고맙게 생각할 것입니다. 당신은 직접이 문 텍스트 상자의 컨트롤 소스를 설정할 수 있습니다

=DCount("End Device Type","Switch Port Matrix","[End Device Type] IN ('Seat','6AB') AND [Enabled]=1 AND [Switch Name] = '" & [Switch Name] & "'") 

:이 경우

답변

3

그것은 DCOUNT를 사용하는 것이 아마도 가장 좋습니다.

그러나, 나중에 참조 :

Private Sub SeatCount_Click() 
Dim db As Database 
Dim rs As DAO.Recordset ''Requires reference to Microsoft DAO x.x Library 
Dim sSQL As String 

sSQL = "SELECT Count(s.[End Device Type]) AS CountOfEndDeviceType " _ 
    & "FROM [Switch Port Matrix] s " _ 
    & "WHERE s.[End Device Type] IN ('Seat,'6AB') AND s.Enabled=1 " _ 
    & "s.[Switch Name] = '" & Me![Switch Name] & "'" 

Set db = CurrentDb 
Set rs = db.OpenRecordset(sSQL) 

If rs.recordCount>0 Then 
    Me.txtTextbox=rs!CountOfEndDeviceType 
Else 
    Me.txtTextbox="N/A" 
End If 

Set rs=Nothing 
Set db=Nothing  
End Sub 
0

모든 결과를 제공 할 수 카운트없이이 쿼리 등의 레코드 원본으로 새 양식을 확인한 다음 폼 바닥 글에 텍스트 상자를 만들고 그 텍스트를 설정 to "= Count ([스위치 포트 매트릭스]. [최종 장치 유형])"

결과를 표시하려는 양식에이 양식을 입력하고 기본 양식에서이 양식을 참조 할 수 있습니다. 이 링크에서 비슷한 아이디어를 찾을 수 있습니다. http://office.microsoft.com/en-us/access-help/about-calculating-a-total-in-a-subform-and-displaying-it-on-a-form-HP005187909.aspx?CTT=1

관련 문제