L'utilisation de paramètres dans Visual Basic pour Applications (VBA) est essentielle pour empêcher l'injection SQL et garantir l'intégrité des données dans les applications Access. Cet article fournit des exemples complets et des conseils sur la manière d'utiliser efficacement les paramètres VBA dans divers contextes, notamment l'utilisation de valeurs de formulaire et de rapport, de TempVars, de fonctions personnalisées et d'objets DAO et ADO.
Access fournit un moyen pratique d'accéder aux valeurs actuelles des contrôles sur les formulaires et les rapports directement à partir du code SQL, éliminant ainsi le besoin de paramètres explicites. Les contrôles de référence en tant que paramètres sont utiles pour DoCmd.RunSQL, les sources et filtres d'enregistrement de formulaire/rapport et les agrégations de domaines.
<code>DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Forms!MyForm!MyTextbox" '插入单个值</code>
TempVars sont des variables accessibles globalement auxquelles on peut attribuer des valeurs dans VBA ou à l'aide de macros. Ils peuvent être réutilisés pour plusieurs requêtes et sont parfaits pour les formulaires/rapports paramétrés car ils persistent lorsque l'objet source est fermé.
<code>TempVars!MyTempVar = Me.MyTextbox.Value DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID = TempVars!MyTempVar"</code>
Des fonctions personnalisées et des variables statiques peuvent être utilisées pour stocker et récupérer les valeurs des paramètres. Cette approche offre de la flexibilité et permet l'utilisation de paramètres facultatifs.
<code>Public Function GetThisDate() As Date If ThisDate = #12:00:00 AM# Then ' 设置默认值。 ThisDate = Date End If GetThisDate = ThisDate End Function</code>
DoCmd.SetParameter permet le paramétrage de certaines opérations DoCmd, comme l'ouverture de formulaires et de rapports, mais ne fonctionne pas avec DoCmd.RunSQL ou DAO/ADO.
<code>DoCmd.SetParameter "MyParameter", Me.MyTextbox DoCmd.OpenForm "MyForm",,, "ID = MyParameter"</code>
DAO fournit des fonctions complètes de traitement des paramètres. Les objets QueryDef sont utilisés pour créer des requêtes paramétrées qui peuvent être exécutées directement ou utilisées pour ouvrir des jeux d'enregistrements.
<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 fournit la gestion des paramètres via l'objet Command. Les paramètres peuvent être créés explicitement lors de l'exécution de la requête ou transmis sous forme de tableau.
<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>
En employant des techniques de paramétrage dans VBA, les développeurs Access peuvent améliorer considérablement la sécurité et la robustesse de leurs applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!