Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggunakan Parameter dengan Berkesan dalam VBA untuk Aplikasi Microsoft Access?
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>
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>
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>
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>
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>
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!