Maison >base de données >tutoriel mysql >Comment utiliser efficacement les paramètres dans VBA pour les applications Microsoft Access ?
Utilisation des paramètres VBA dans différents contextes dans Microsoft Access
Pour éviter les erreurs et gérer efficacement les noms entre guillemets simples, il est essentiel d'utiliser des paramètres dans des applications Access complexes impliquant du SQL dynamique et une concaténation de chaînes. Voici différentes manières d'utiliser les paramètres dans différents contextes :
Formulaires et rapports
Access offre la possibilité unique d'utiliser les valeurs des contrôles sur les formulaires et les états directement dans le code SQL, dans de nombreux cas sans paramètres. Pour les contrôles, utilisez la syntaxe Forms!MyForm!MyTextbox ; pour les contrôles sur les sous-formulaires, utilisez Forms!MyForm!MySubform.Form!MyTextbox ; pour les contrôles sur les rapports, utilisez Reports!MyReport!MyTextbox.
Agrégation de domaines
Les agrégations de domaines comme DLookUp peuvent également bénéficier directement des formulaires et des rapports. Par exemple, DLookUp("Field1", "Table2", "ID = Forms!MyForm!MyTextbox").
DoCmd.RunSQL
Lorsque vous utilisez DoCmd.RunSQL pour exécuter une commande SQL, utilisez la concaténation de chaînes pour fusionner les valeurs des paramètres : DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE ID =" & Me.MyTextbox.
Record DAO établi
Pour DAO, utilisez CurrentDb.CreateQueryDef() pour créer la requête, puis utilisez QueryDef.Parameters pour définir les paramètres :
<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>
Record ADODB établi
Dans ADO, utilisez l'objet ADODB.Command et sa collection Parameters pour définir les paramètres. Pour les paramètres sans nom, transmettez un tableau de valeurs à Command.Execute. Pour les paramètres nommés (bien que non officiellement pris en charge), utilisez 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 sont des variables disponibles globalement qui peuvent être définies et réutilisées dans plusieurs requêtes :
<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>
Fonction personnalisée (UDF)
Créez une fonction avec des variables statiques pour stocker et récupérer les valeurs des paramètres :
<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>
Alors utilisez comme ceci :
<code class="language-vba">SetThisDate SomeDateValue ' 将 SomeDateValue 存储在 ThisDate 中。 DoCmd.RunSQL "INSERT INTO Table1(Field1) SELECT Field1 FROM Table2 WHERE [SomeDateField] = GetThisDate()"</code>
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!