ホームページ >データベース >mysql チュートリアル >Microsoft Access アプリケーションの VBA でパラメータを効果的に使用するにはどうすればよいですか?
Visual Basic for Applications (VBA) でパラメーターを使用することは、SQL インジェクションを防止し、Access アプリケーションでのデータの整合性を確保するために重要です。この記事では、フォームとレポートの値、TempVar、カスタム関数、DAO および ADO オブジェクトの使用など、さまざまなコンテキストで VBA パラメーターを効果的に使用する方法に関する包括的な例とガイダンスを提供します。
Access は、SQL コードから直接フォームやレポートのコントロールの現在の値にアクセスする便利な方法を提供し、明示的なパラメーターの必要性を排除します。パラメーターとしての参照コントロールは、DoCmd.RunSQL、フォーム/レポートのレコード ソースとフィルター、およびドメイン集計に役立ちます。
<code>DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Forms!MyForm!MyTextbox" '插入单个值</code>
TempVar は、VBA またはマクロを使用して値を割り当てることができるグローバルにアクセス可能な変数です。これらは複数のクエリで再利用でき、ソース オブジェクトが閉じられても保持されるため、パラメータ化されたフォーム/レポートに最適です。
<code>TempVars!MyTempVar = Me.MyTextbox.Value DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID = TempVars!MyTempVar"</code>
カスタム関数と静的変数を使用して、パラメーター値を保存および取得できます。このアプローチにより柔軟性が提供され、オプションのパラメーターの使用が可能になります。
<code>Public Function GetThisDate() As Date If ThisDate = #12:00:00 AM# Then ' 设置默认值。 ThisDate = Date End If GetThisDate = ThisDate End Function</code>
DoCmd.SetParameter では、フォームやレポートを開くなど、特定の DoCmd 操作のパラメータ化が可能ですが、DoCmd.RunSQL や DAO/ADO では機能しません。
<code>DoCmd.SetParameter "MyParameter", Me.MyTextbox DoCmd.OpenForm "MyForm",,, "ID = MyParameter"</code>
DAO は、包括的なパラメータ処理機能を提供します。 QueryDef オブジェクトは、直接実行したり、レコードセットを開くために使用したりできるパラメーター化されたクエリを作成するために使用されます。
<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 は、Command オブジェクトを介したパラメーター処理を提供します。パラメータはクエリの実行中に明示的に作成することも、配列として渡すこともできます。
<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>
VBA でパラメータ化手法を採用することにより、Access 開発者はアプリケーションのセキュリティと堅牢性を大幅に強化できます。
以上がMicrosoft Access アプリケーションの VBA でパラメータを効果的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。