Supprimer Enregistrements(erreur paramètres)

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric
Le #6183621
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

Eric
Le #6183611
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

Pascal
Le #6183591
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"
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



Publicité
Poster une réponse
Anonyme