Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggunakan Parameter dengan Berkesan dalam VBA untuk Aplikasi Microsoft Access?

Bagaimana untuk Menggunakan Parameter dengan Berkesan dalam VBA untuk Aplikasi Microsoft Access?

Barbara Streisand
Lepaskan: 2025-01-23 08:17:09
asal
631 orang telah melayarinya

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

Menggunakan parameter VBA dalam konteks berbeza dalam Microsoft Access

Untuk mengelakkan ralat dan mengendalikan nama petikan tunggal dengan cekap, adalah penting untuk menggunakan parameter dalam aplikasi Akses kompleks yang melibatkan SQL dinamik dan gabungan rentetan. Berikut ialah pelbagai cara untuk menggunakan parameter dalam konteks yang berbeza:

Borang dan laporan

Akses menyediakan keupayaan unik untuk menggunakan nilai kawalan pada borang dan laporan secara langsung dalam kod SQL, dalam banyak kes tanpa parameter. Untuk kawalan, gunakan sintaks Borang!MyForm!MyTextbox; untuk kawalan pada subborang, gunakan Borang!MyBorang!MySubform.MyTextbox; untuk kawalan pada laporan, gunakan Laporan!MyReport!MyTextbox.

Penggabungan Domain

Penggabungan domain seperti DLookUp juga boleh mendapat manfaat secara langsung daripada borang dan laporan. Contohnya, DLookUp("Field1", "Table2", "ID = Forms!MyForm!MyTextbox").

DoCmd.RunSQL

Apabila menggunakan DoCmd.RunSQL untuk melaksanakan perintah SQL, gunakan penggabungan rentetan untuk menggabungkan nilai parameter: DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID =" & Me.MyTextbox.

Rekod DAO ditetapkan

Untuk DAO, gunakan CurrentDb.CreateQueryDef() untuk mencipta pertanyaan, kemudian gunakan QueryDef.Parameters untuk menetapkan parameter:

<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>
Salin selepas log masuk

Rekod ADODB ditetapkan

Dalam ADO, gunakan objek ADODB.Command dan koleksi Parameternya untuk menetapkan parameter. Untuk parameter yang tidak dinamakan, hantarkan tatasusunan nilai ke Command.Execute. Untuk parameter bernama (walaupun tidak disokong secara rasmi), gunakan 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>
Salin selepas log masuk

TempVars

TempVars ialah pembolehubah yang tersedia secara global yang boleh ditetapkan dan digunakan semula dalam berbilang pertanyaan:

<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>
Salin selepas log masuk

Fungsi Tersuai (UDF)

Buat fungsi dengan pembolehubah statik untuk menyimpan dan mendapatkan nilai parameter:

<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>
Salin selepas log masuk

Kemudian gunakan seperti ini:

<code class="language-vba">SetThisDate SomeDateValue ' 将 SomeDateValue 存储在 ThisDate 中。
DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE [SomeDateField] = GetThisDate()"</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Parameter dengan Berkesan dalam VBA untuk Aplikasi Microsoft Access?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan