2015-01-02 2 views
1

나는 많은 문제를 일으키는 간단한 작업이 있습니다.VBA 변수를 Access 쿼리 기준에 전달

내가 필요한 것은 액세스 쿼리에서 사용할 수 있도록 변수를 내 VBA 매크로에서 함수로 단순히 이동하는 것입니다.

ADDED : 간단한 VBA로 작고 간단한 액세스 문서를 만들었습니다. 다운로드 위치 : http://sharesend.com/olpy1o7d

누군가가 친절하게 다운로드하고 내가 잘못하고있는 것을 볼 수 있다면 정말 좋아할 것입니다. 양식에서 f_maincounter을 숫자로 변경할 수 있어야하며 따라서 기본 폼에서 단추를 누를 때 업데이트 된 쿼리를 얻을 수 있습니다.

아래에 설명되어 있지만 다운로드하는 것이 내 상황을 더 쉽게 설명 할 수 있습니다.

편집 :

Public Function n() 
n = counter 
End Function 

접근에서, 나는 SQL 쿼리를 가지고 :

SELECT t_Data.ID, n() AS Expr1 FROM t_Data; 

액세스가이 기능을 찾을 수 없다고

Public counter as Integer 

Private Sub Command_Click() 

counter = 1 

End Sub 

그리고 모듈

n()

만약 내가 함수 작성기를 사용하면 함수 n()이 비어 있기 때문에 n()을 볼 수 있습니다. 따라서 "카운터"를 내 양식에 선언 할 수 없습니다.

어떻게해야합니까?

+0

질문이 상당히 바뀌었기 때문에 대답을 삭제했습니다. Access 및 VBA 용 태그를 추가하면 더 많은 도움을받을 수 있지만 시간이 부족합니다. – Lunster

+0

좋아, 시간 내 주셔서 감사합니다. 이안! –

+0

귀하의 질문은 현재의 형태로 이해가되지 않습니다. 'binsize'는 어디에서 작동합니까? 아니면 kW? 'SELECT' 문은 어떻게 호출됩니까? 그런데 왜 카운터 값이있는 열이 필요합니까? 쿼리'q_PowerBinned_0x'는 어떻게 정의됩니까? –

답변

3

미래의 범인을 광산처럼 돕기 위해 오류를 발견했습니다.

모듈 이름을 함수와 동일하게 지정 했으므로 문제가 발생했습니다.

모듈 이름을 n에서 m_n으로 변경하고 함수 이름을 n()으로 유지하면 완벽하게 정상적으로 작동합니다.

어리석은 실수는 어리 석다. 하지만 내 문제를 들여다 줘서 고맙다.

2

양식에서 변수를 공용으로 선언하면 사실을 전역 적으로 공개하지 않는 것처럼 보입니다. 이것은 Access에서 여러 번 저를 괴롭혔습니다. 카운터 선언을 모듈 코드로 옮기면 조작이 변경됩니다.

다음 게시물 (Public variables are not REALLY public in VBA in Forms)에서이 동작에 대한 좋은 설명이 있습니다.

+0

나는 당신의 요점을보고 그것을 시도했으나 효과가 없었습니다. 쿼리는 여전히 함수 n()이 조건에서 사용하려고 할 때 excist하지 않는다고 말합니다. 나는 표현식에서 "정의되지 않은 함수"n "오류가 발생합니다. 나는 틀린 일을해야만합니다. 표현식 작성기는 n() 함수를 볼 수 있지만, 실행하려고하면 오류가 발생합니다 ... –

+0

안녕 Keven. 질문에, 난 임의의 숫자와 액세스 데이터베이스를 추가했습니다. 좀 봐 주시겠습니까? 나는 문제를 발견 할 수 없으며 그것이 나를 미치게 만든다. –