J'écris le code ci-dessous pour insérer des valeurs de contrôle dans une table
if isnull(me.Text1.value) then ... else ... end if
Parfois, l'une de ces zones de texte n'a aucune valeur. Y a-t-il une fonction que je peux utiliser pour écrire l'instruction en une phrase?
currentdb.execute "insert into Table (AAA,AAB,AAC) values('"&if(me.Text1.value is null,null,me.Text1.value)&"','"&if(me.text2.value is null, null,me.Text2.value)&"','"&if(me.text3.value is null, null,me.Texte.value)&")"
Parce que je ne veux pas construire beaucoup de clauses if else.
currentdb.execute "insert into Table (AAA,AAB,AAC) values('"&me.Text1.value&"','"&me.text2.value&"','"&me.text3.value&")"
3 Réponses :
On dirait que vous demandez le Fonction Nz
Cependant, au lieu d'écrire les valeurs de la zone de texte dans le texte de l'instruction INSERT
, vous pouvez exécuter une requête de paramètre. Et ce texte de l'instruction de requête n'a pas besoin de changer selon que l'une des zones de texte contient ou non Null.
Dim db As DAO.Database Dim qdf As DAO.QueryDef Dim strInsert As String strInsert = "INSERT INTO YourTable (AAA, AAB, AAC) VALUES (p1, p2, p3);" Set db = CurrentDb Set qdf = db.CreateQueryDef(vbNullString, strInsert) qdf.Parameters("p1").Value = Me.Text1.Value qdf.Parameters("p2").Value = Me.Text2.Value qdf.Parameters("p3").Value = Me.Text3.Value qdf.Execute dbFailOnError Debug.Print "rows added: " & db.RecordsAffected
Bien que les paramètres soient nets, la réponse directe à votre question est ma fonction CSql .
Essayez ceci - cela insérera une chaîne vide dans le tableau si les TextBoxes n'ont pas de valeur:
CurrentDb.Execute "INSERT INTO Table (AAA,AAB,AAC) " & _ "VALUES ('" & Nz(Me.Text1.Value, '') & "','" & _ Nz(Me.Text2.Value, '') & " ','" & Nz(Me.Text3.Value, '') & ")"