집 >데이터 베이스 >MySQL 튜토리얼 >Microsoft Access 응용프로그램용 VBA에서 매개변수를 효과적으로 사용하는 방법은 무엇입니까?
Microsoft Access의 다양한 컨텍스트에서 VBA 매개변수 사용
오류를 방지하고 작은따옴표로 묶인 이름을 효율적으로 처리하려면 동적 SQL 및 문자열 연결이 포함된 복잡한 Access 애플리케이션에서 매개변수를 사용하는 것이 중요합니다. 다양한 상황에서 매개변수를 활용하는 다양한 방법은 다음과 같습니다.
양식 및 보고서
Access는 대부분의 경우 매개 변수 없이 SQL 코드에서 직접 폼과 보고서의 컨트롤 값을 사용할 수 있는 고유한 기능을 제공합니다. 컨트롤의 경우 Forms!MyForm!MyTextbox 구문을 사용하고, 하위 양식의 컨트롤은 Forms!MyForm!MySubform.Form!MyTextbox를 사용하고, 보고서의 컨트롤은 Reports!MyReport!MyTextbox를 사용합니다.
도메인 집계
DLookUp과 같은 도메인 집계는 양식 및 보고서를 통해 직접적인 이점을 얻을 수도 있습니다. 예를 들어 DLookUp("Field1", "Table2", "ID = Forms!MyForm!MyTextbox")입니다.
DoCmd.RunSQL
DoCmd.RunSQL을 사용하여 SQL 명령을 실행할 때 문자열 연결을 사용하여 매개변수 값을 병합합니다. DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID =" & Me.MyTextbox.
DAO 레코드 세트
DAO의 경우 CurrentDb.CreateQueryDef()를 사용하여 쿼리를 만든 다음 QueryDef.Parameters를 사용하여 매개변수를 설정합니다.
<code class="language-vba">With CurrentDb.CreateQueryDef("", "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE Field1 = ? And Field2 = ?") .Parameters(0) = Me.Field1 .Parameters(1) = Me.Field2 .Execute End With</code>
ADODB 레코드 세트
ADO에서는 ADODB.Command 개체와 해당 매개변수 컬렉션을 사용하여 매개변수를 설정합니다. 이름이 지정되지 않은 매개변수의 경우 값 배열을 Command.Execute에 전달합니다. 명명된 매개변수의 경우(공식적으로 지원되지는 않지만) Command.CreateParameter()를 사용하세요.
<code class="language-vba">With cmd Set .ActiveConnection = CurrentProject.Connection ' 使用当前数据库的连接 .CommandText = "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE Field1 = ? And Field2 = ?" .Parameters.Append .CreateParameter(, adVarWChar, adParamInput, Len(Me.Field1), Me.Field1) ' adVarWChar 用于可能包含 Unicode 的文本框 .Parameters.Append .CreateParameter(, adInteger, adParamInput, 8, Me.Field2) ' adInteger 用于整数(长整数或整数) .Execute End With</code>
TempVars
TempVars는 여러 쿼리에서 설정하고 재사용할 수 있는 전역적으로 사용 가능한 변수입니다.
<code class="language-vba">TempVars!MyTempVar = Me.MyTextbox.Value ' 对简单的控件使用 .Value DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID = TempVars!MyTempVar"</code>
사용자 정의 함수(UDF)
정적 변수를 사용하여 매개변수 값을 저장하고 검색하는 함수를 만듭니다.
<code class="language-vba">Option Compare Database Option Explicit Private ThisDate As Date Public Function GetThisDate() As Date If ThisDate = #12:00:00 AM# Then ' 设置默认值。 ThisDate = Date End If GetThisDate = ThisDate End Function Public Function SetThisDate(ByVal NewDate As Date) As Date ThisDate = NewDate SetThisDate = ThisDate End Function</code>
그런 다음 다음과 같이 사용하세요.
<code class="language-vba">SetThisDate SomeDateValue ' 将 SomeDateValue 存储在 ThisDate 中。 DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE [SomeDateField] = GetThisDate()"</code>
위 내용은 Microsoft Access 응용프로그램용 VBA에서 매개변수를 효과적으로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!