0
votes

Toute fonction dans Access VBA fonctionne comme si (me.Text01.value est null, 'null', me.Text01.value)

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&")"


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes

Bien que les paramètres soient nets, la réponse directe à votre question est ma fonction CSql .


0 commentaires

0
votes

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, '') & ")"


0 commentaires