Menggunakan parameter dalam Visual Basic for Applications (VBA) adalah penting untuk mencegah suntikan SQL dan memastikan integriti data dalam aplikasi Access. Artikel ini menyediakan contoh dan panduan komprehensif tentang cara menggunakan parameter VBA dengan berkesan dalam pelbagai konteks, termasuk menggunakan nilai bentuk dan laporan, TempVars, fungsi tersuai dan objek DAO dan ADO.
Akses menyediakan cara yang mudah untuk mengakses nilai kawalan semasa pada borang dan laporan terus daripada kod SQL, menghapuskan keperluan untuk parameter eksplisit. Kawalan rujukan sebagai parameter berguna untuk DoCmd.RunSQL, sumber dan penapis rekod borang/laporan dan pengagregatan domain.
<code>DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Forms!MyForm!MyTextbox" '插入单个值</code>
TempVars ialah pembolehubah yang boleh diakses secara global yang boleh diberikan nilai dalam VBA atau menggunakan makro. Ia boleh digunakan semula untuk berbilang pertanyaan dan bagus untuk borang/laporan berparameter kerana ia berterusan apabila objek sumber ditutup.
<code>TempVars!MyTempVar = Me.MyTextbox.Value DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID = TempVars!MyTempVar"</code>
Fungsi tersuai dan pembolehubah statik boleh digunakan untuk menyimpan dan mendapatkan nilai parameter. Pendekatan ini memberikan fleksibiliti dan membenarkan penggunaan parameter pilihan.
<code>Public Function GetThisDate() As Date If ThisDate = #12:00:00 AM# Then ' 设置默认值。 ThisDate = Date End If GetThisDate = ThisDate End Function</code>
DoCmd.SetParameter membenarkan parameterisasi operasi DoCmd tertentu, seperti membuka borang dan laporan, tetapi tidak berfungsi dengan DoCmd.RunSQL atau DAO/ADO.
<code>DoCmd.SetParameter "MyParameter", Me.MyTextbox DoCmd.OpenForm "MyForm",,, "ID = MyParameter"</code>
DAO menyediakan fungsi pemprosesan parameter yang komprehensif. Objek QueryDef digunakan untuk membuat pertanyaan berparameter yang boleh dilaksanakan secara langsung atau digunakan untuk membuka set rekod.
<code>With CurrentDb.CreateQueryDef("", "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE Field1 = ?p1 And Field2 = ?p2") .Parameters(0) = Me.Field1 .Parameters(1) = Me.Field2 .Execute End With</code>
ADO menyediakan pengendalian parameter melalui objek Perintah. Parameter boleh dibuat secara eksplisit semasa pelaksanaan pertanyaan atau diluluskan sebagai tatasusunan.
<code>Set cmd = New ADODB.Command 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>
Dengan menggunakan teknik parameterisasi dalam VBA, pembangun Access boleh meningkatkan keselamatan dan keteguhan aplikasi mereka dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Parameter dengan Berkesan dalam VBA untuk Aplikasi Microsoft Access?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!