Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer Enregistrements(erreur paramètres)

3 réponses
Avatar
Pascal
bien le Bonjour,
pourriez-vous me dire pourquoi ce code me génère 1 erreur : (TROP PEU DE
PARAMETRES :1 ATTENDU)
je vous en remercie
Pascal


Function SupprimerEnregistrementVide() '(Table As String, Champ As String)
'Supprimer les enregistrements vides(société) de la bdd
Dim rs As Recordset
'recherche les enregistrements
Set rs = CurrentDb.OpenRecordset("select * FROM tblClients WHERE [" &
Société & "]=Null;")
If Not rs.EOF And Not rs.BOF Then
rs.Delete
While Not rs.EOF
rs.MoveNext
Wend
End If
End Function

3 réponses

Avatar
Eric
Bonjour,

Tu ne peux pas avoir Where [Société]= Null, tu dois tester si le champ
n'est pas renseigné avec la fonction IsNull()

Personnellement, je ferai :
Where IsNull([Société])
(ou à la limite
Where [Société] Is Null
)

Ton problème vient certainement du fait que Société n'est pas un champ
mais la valeur d'un champ (par ex : toto).

De plus, tu peux faire beaucoup plus simple sans passer par un Recordset.

Sub SupprimerEnregistrementVide()
Dim strSQL as String
strSQL = "Delete * from tblClients Where IsNull([Société]);"
CurrentDb.execute strSQL
End Sub

Maintenant, si tu veux que ta procédure fonctionne quels que soient la
table et le champ, alors ca devient :

Sub SupprimerEnregistrementVide(NomTable As String, NomChamp As String)
Dim strSQL As String
strSQL = "Delete * from [" & NomTable & "] Where IsNull([" &
NomChamp & "]);"
CurrentDb.Execute strSQL
End Sub

que tu appelles par :
Call SupprimerEnregistrementVide("NomDeLaTable","NomDuChamp")

PS:
1-Personnellement, j'utlise des procédures quand aucune valeur n'est
retournée et qu'il n'existe pas de contraintes à définir la procédure
comme une fonction.
2- L'emploi de Call est facultatif mais cela permet de rendre plus
lisible le code. En l'absence de Call, mettre :
SupprimerEnregistrementVide "NomDeLaTable", "NomDuChamp"

bien le Bonjour,
pourriez-vous me dire pourquoi ce code me génère 1 erreur : (TROP PEU DE
PARAMETRES :1 ATTENDU)
je vous en remercie
Pascal


Function SupprimerEnregistrementVide() '(Table As String, Champ As String)
'Supprimer les enregistrements vides(société) de la bdd
Dim rs As Recordset
'recherche les enregistrements
Set rs = CurrentDb.OpenRecordset("select * FROM tblClients WHERE [" &
Société & "]=Null;")
If Not rs.EOF And Not rs.BOF Then
rs.Delete
While Not rs.EOF
rs.MoveNext
Wend
End If
End Function


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
re,

...
De plus, tu peux faire beaucoup plus simple sans passer par un Recordset.

Et surtout beaucoup plus rapide ;-)

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Pascal
merci une nouvelle fois Eric,
L'emploi du delete avec Sql est effectivement bien plus pratique et lisible,
je ne connaissais pas
merci de ton aide et de toutes ces présicions
Pascal

"Eric" a écrit dans le message de news:

Bonjour,

Tu ne peux pas avoir Where [Société]= Null, tu dois tester si le champ
n'est pas renseigné avec la fonction IsNull()

Personnellement, je ferai :
Where IsNull([Société])
(ou à la limite
Where [Société] Is Null
)

Ton problème vient certainement du fait que Société n'est pas un champ
mais la valeur d'un champ (par ex : toto).

De plus, tu peux faire beaucoup plus simple sans passer par un Recordset.

Sub SupprimerEnregistrementVide()
Dim strSQL as String
strSQL = "Delete * from tblClients Where IsNull([Société]);"
CurrentDb.execute strSQL
End Sub

Maintenant, si tu veux que ta procédure fonctionne quels que soient la
table et le champ, alors ca devient :

Sub SupprimerEnregistrementVide(NomTable As String, NomChamp As String)
Dim strSQL As String
strSQL = "Delete * from [" & NomTable & "] Where IsNull([" & NomChamp &
"]);"
CurrentDb.Execute strSQL
End Sub

que tu appelles par :
Call SupprimerEnregistrementVide("NomDeLaTable","NomDuChamp")

PS:
1-Personnellement, j'utlise des procédures quand aucune valeur n'est
retournée et qu'il n'existe pas de contraintes à définir la procédure
comme une fonction.
2- L'emploi de Call est facultatif mais cela permet de rendre plus lisible
le code. En l'absence de Call, mettre :
SupprimerEnregistrementVide "NomDeLaTable", "NomDuChamp"

bien le Bonjour,
pourriez-vous me dire pourquoi ce code me génère 1 erreur : (TROP PEU DE
PARAMETRES :1 ATTENDU)
je vous en remercie
Pascal


Function SupprimerEnregistrementVide() '(Table As String, Champ As
String)
'Supprimer les enregistrements vides(société) de la bdd
Dim rs As Recordset
'recherche les enregistrements
Set rs = CurrentDb.OpenRecordset("select * FROM tblClients WHERE [" &
Société & "]=Null;")
If Not rs.EOF And Not rs.BOF Then
rs.Delete
While Not rs.EOF
rs.MoveNext
Wend
End If
End Function


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr