>데이터 베이스 >MySQL 튜토리얼 >Microsoft Access 응용프로그램용 VBA에서 매개변수를 효과적으로 사용하는 방법은 무엇입니까?

Microsoft Access 응용프로그램용 VBA에서 매개변수를 효과적으로 사용하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-23 08:17:09636검색

How to Effectively Use Parameters in VBA for Microsoft Access Applications?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.