Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs
texte : Type et Description). Le premier champ est indexé (sans doublon) ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant
d'enregistrer, si la description n'existe pas déjà.
Je fais une recherche dans la table, sur la description mais comment faire
pour empêcher la mise à jour de la table si je trouve une même description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
With rs
.MoveLast
.FindFirst strRech
If .NoMatch Then
MsgBox "Pas trouvé"
Else
MsgBox "La description existe déjà" 'COMMENT empêcher le update
??
End If
End With
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
argyronet
Bonjour,
Comme ceci par exemple: Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) Dim RS As Recordset Dim varCurrentValue As Variant Dim SQL As String
On Error GoTo Erreur varCurrentValue = Me!DE_PCM.Text SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) & varCurrentValue & Chr(34) Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) If RS.EOF = False Then MsgBox "La description existe déjà ! ", 48 Cancel = True End If RS.Close Sortie: Set RS = Nothing Exit Sub Erreur: Resume Sortie End Sub
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs texte : Type et Description). Le premier champ est indexé (sans doublon) ce qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant d'enregistrer, si la description n'existe pas déjà. Je fais une recherche dans la table, sur la description mais comment faire pour empêcher la mise à jour de la table si je trouve une même description ??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) With rs .MoveLast .FindFirst strRech If .NoMatch Then MsgBox "Pas trouvé" Else MsgBox "La description existe déjà" 'COMMENT empêcher le update ?? End If End With
Merci de vos réponses
Bonjour,
Comme ceci par exemple:
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
Dim RS As Recordset
Dim varCurrentValue As Variant
Dim SQL As String
On Error GoTo Erreur
varCurrentValue = Me!DE_PCM.Text
SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) &
varCurrentValue & Chr(34)
Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
If RS.EOF = False Then
MsgBox "La description existe déjà ! ", 48
Cancel = True
End If
RS.Close
Sortie:
Set RS = Nothing
Exit Sub
Erreur:
Resume Sortie
End Sub
Argy
--
Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs
texte : Type et Description). Le premier champ est indexé (sans doublon) ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant
d'enregistrer, si la description n'existe pas déjà.
Je fais une recherche dans la table, sur la description mais comment faire
pour empêcher la mise à jour de la table si je trouve une même description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
With rs
.MoveLast
.FindFirst strRech
If .NoMatch Then
MsgBox "Pas trouvé"
Else
MsgBox "La description existe déjà" 'COMMENT empêcher le update
??
End If
End With
Comme ceci par exemple: Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) Dim RS As Recordset Dim varCurrentValue As Variant Dim SQL As String
On Error GoTo Erreur varCurrentValue = Me!DE_PCM.Text SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) & varCurrentValue & Chr(34) Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) If RS.EOF = False Then MsgBox "La description existe déjà ! ", 48 Cancel = True End If RS.Close Sortie: Set RS = Nothing Exit Sub Erreur: Resume Sortie End Sub
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs texte : Type et Description). Le premier champ est indexé (sans doublon) ce qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant d'enregistrer, si la description n'existe pas déjà. Je fais une recherche dans la table, sur la description mais comment faire pour empêcher la mise à jour de la table si je trouve une même description ??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) With rs .MoveLast .FindFirst strRech If .NoMatch Then MsgBox "Pas trouvé" Else MsgBox "La description existe déjà" 'COMMENT empêcher le update ?? End If End With
Merci de vos réponses
Jacques
Merci pour votre réponse.
J'ai continué à chercher et j'ai trouvé ceci : Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[DE_PCM]", _ "HLW03T10_PCM", "[DE_PCM] ='" _ & Me!DE_PCM & "'"))) Then MsgBox "Cette description existe déjà." Cancel = True Me!DE_PCM.Undo End If End Sub
Je ne sais pas quelle est la meilleur façon de faire :-( Un avis sera le bienvenu.
Jacques
"argyronet" a écrit dans le message de news:
Bonjour,
Comme ceci par exemple: Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) Dim RS As Recordset Dim varCurrentValue As Variant Dim SQL As String
On Error GoTo Erreur varCurrentValue = Me!DE_PCM.Text SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) & varCurrentValue & Chr(34) Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) If RS.EOF = False Then MsgBox "La description existe déjà ! ", 48 Cancel = True End If RS.Close Sortie: Set RS = Nothing Exit Sub Erreur: Resume Sortie End Sub
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs
texte : Type et Description). Le premier champ est indexé (sans doublon) ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant d'enregistrer, si la description n'existe pas déjà. Je fais une recherche dans la table, sur la description mais comment faire
pour empêcher la mise à jour de la table si je trouve une même description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) With rs .MoveLast .FindFirst strRech If .NoMatch Then MsgBox "Pas trouvé" Else MsgBox "La description existe déjà" 'COMMENT empêcher le update
?? End If End With
Merci de vos réponses
Merci pour votre réponse.
J'ai continué à chercher et j'ai trouvé ceci :
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[DE_PCM]", _
"HLW03T10_PCM", "[DE_PCM] ='" _
& Me!DE_PCM & "'"))) Then
MsgBox "Cette description existe déjà."
Cancel = True
Me!DE_PCM.Undo
End If
End Sub
Je ne sais pas quelle est la meilleur façon de faire :-(
Un avis sera le bienvenu.
Jacques
"argyronet" <argyronet@discussions.microsoft.com> a écrit dans le message de
news:74D59F6D-F94A-452E-9823-BF6313771A87@microsoft.com...
Bonjour,
Comme ceci par exemple:
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
Dim RS As Recordset
Dim varCurrentValue As Variant
Dim SQL As String
On Error GoTo Erreur
varCurrentValue = Me!DE_PCM.Text
SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) &
varCurrentValue & Chr(34)
Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
If RS.EOF = False Then
MsgBox "La description existe déjà ! ", 48
Cancel = True
End If
RS.Close
Sortie:
Set RS = Nothing
Exit Sub
Erreur:
Resume Sortie
End Sub
Argy
--
Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on
obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux
champs
texte : Type et Description). Le premier champ est indexé (sans doublon)
ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant
d'enregistrer, si la description n'existe pas déjà.
Je fais une recherche dans la table, sur la description mais comment
faire
pour empêcher la mise à jour de la table si je trouve une même
description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
With rs
.MoveLast
.FindFirst strRech
If .NoMatch Then
MsgBox "Pas trouvé"
Else
MsgBox "La description existe déjà" 'COMMENT empêcher le
update
J'ai continué à chercher et j'ai trouvé ceci : Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[DE_PCM]", _ "HLW03T10_PCM", "[DE_PCM] ='" _ & Me!DE_PCM & "'"))) Then MsgBox "Cette description existe déjà." Cancel = True Me!DE_PCM.Undo End If End Sub
Je ne sais pas quelle est la meilleur façon de faire :-( Un avis sera le bienvenu.
Jacques
"argyronet" a écrit dans le message de news:
Bonjour,
Comme ceci par exemple: Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) Dim RS As Recordset Dim varCurrentValue As Variant Dim SQL As String
On Error GoTo Erreur varCurrentValue = Me!DE_PCM.Text SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) & varCurrentValue & Chr(34) Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) If RS.EOF = False Then MsgBox "La description existe déjà ! ", 48 Cancel = True End If RS.Close Sortie: Set RS = Nothing Exit Sub Erreur: Resume Sortie End Sub
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs
texte : Type et Description). Le premier champ est indexé (sans doublon) ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant d'enregistrer, si la description n'existe pas déjà. Je fais une recherche dans la table, sur la description mais comment faire
pour empêcher la mise à jour de la table si je trouve une même description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) With rs .MoveLast .FindFirst strRech If .NoMatch Then MsgBox "Pas trouvé" Else MsgBox "La description existe déjà" 'COMMENT empêcher le update
?? End If End With
Merci de vos réponses
argyronet
Re,
Evitez les fonctions de recherche comme les DLookup et autres... Bien que dans votre cas, la notion de consommation de ressources sera transparente, ces fonctions sont très gourmandes en cas de sollicitations multiples. Le principal étant pour votre cas précis, d'affecter True à Cancel, il vaut mieux comme je vous l'ai proposé, passer par DAO.
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment
Merci pour votre réponse.
J'ai continué à chercher et j'ai trouvé ceci : Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[DE_PCM]", _ "HLW03T10_PCM", "[DE_PCM] ='" _ & Me!DE_PCM & "'"))) Then MsgBox "Cette description existe déjà." Cancel = True Me!DE_PCM.Undo End If End Sub
Je ne sais pas quelle est la meilleur façon de faire :-( Un avis sera le bienvenu.
Jacques
"argyronet" a écrit dans le message de news:
Bonjour,
Comme ceci par exemple: Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) Dim RS As Recordset Dim varCurrentValue As Variant Dim SQL As String
On Error GoTo Erreur varCurrentValue = Me!DE_PCM.Text SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) & varCurrentValue & Chr(34) Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) If RS.EOF = False Then MsgBox "La description existe déjà ! ", 48 Cancel = True End If RS.Close Sortie: Set RS = Nothing Exit Sub Erreur: Resume Sortie End Sub
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs
texte : Type et Description). Le premier champ est indexé (sans doublon) ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant d'enregistrer, si la description n'existe pas déjà. Je fais une recherche dans la table, sur la description mais comment faire
pour empêcher la mise à jour de la table si je trouve une même description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) With rs .MoveLast .FindFirst strRech If .NoMatch Then MsgBox "Pas trouvé" Else MsgBox "La description existe déjà" 'COMMENT empêcher le update
?? End If End With
Merci de vos réponses
Re,
Evitez les fonctions de recherche comme les DLookup et autres...
Bien que dans votre cas, la notion de consommation de ressources sera
transparente, ces fonctions sont très gourmandes en cas de sollicitations
multiples.
Le principal étant pour votre cas précis, d'affecter True à Cancel, il vaut
mieux comme je vous l'ai proposé, passer par DAO.
Argy
--
Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Merci pour votre réponse.
J'ai continué à chercher et j'ai trouvé ceci :
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[DE_PCM]", _
"HLW03T10_PCM", "[DE_PCM] ='" _
& Me!DE_PCM & "'"))) Then
MsgBox "Cette description existe déjà."
Cancel = True
Me!DE_PCM.Undo
End If
End Sub
Je ne sais pas quelle est la meilleur façon de faire :-(
Un avis sera le bienvenu.
Jacques
"argyronet" <argyronet@discussions.microsoft.com> a écrit dans le message de
news:74D59F6D-F94A-452E-9823-BF6313771A87@microsoft.com...
Bonjour,
Comme ceci par exemple:
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
Dim RS As Recordset
Dim varCurrentValue As Variant
Dim SQL As String
On Error GoTo Erreur
varCurrentValue = Me!DE_PCM.Text
SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) &
varCurrentValue & Chr(34)
Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
If RS.EOF = False Then
MsgBox "La description existe déjà ! ", 48
Cancel = True
End If
RS.Close
Sortie:
Set RS = Nothing
Exit Sub
Erreur:
Resume Sortie
End Sub
Argy
--
Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on
obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux
champs
texte : Type et Description). Le premier champ est indexé (sans doublon)
ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant
d'enregistrer, si la description n'existe pas déjà.
Je fais une recherche dans la table, sur la description mais comment
faire
pour empêcher la mise à jour de la table si je trouve une même
description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
With rs
.MoveLast
.FindFirst strRech
If .NoMatch Then
MsgBox "Pas trouvé"
Else
MsgBox "La description existe déjà" 'COMMENT empêcher le
update
Evitez les fonctions de recherche comme les DLookup et autres... Bien que dans votre cas, la notion de consommation de ressources sera transparente, ces fonctions sont très gourmandes en cas de sollicitations multiples. Le principal étant pour votre cas précis, d'affecter True à Cancel, il vaut mieux comme je vous l'ai proposé, passer par DAO.
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment
Merci pour votre réponse.
J'ai continué à chercher et j'ai trouvé ceci : Private Sub DE_PCM_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[DE_PCM]", _ "HLW03T10_PCM", "[DE_PCM] ='" _ & Me!DE_PCM & "'"))) Then MsgBox "Cette description existe déjà." Cancel = True Me!DE_PCM.Undo End If End Sub
Je ne sais pas quelle est la meilleur façon de faire :-( Un avis sera le bienvenu.
Jacques
"argyronet" a écrit dans le message de news:
Bonjour,
Comme ceci par exemple: Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) Dim RS As Recordset Dim varCurrentValue As Variant Dim SQL As String
On Error GoTo Erreur varCurrentValue = Me!DE_PCM.Text SQL = "SELECT ChampDEPCM FROM LaTable WHERE ChampDEPCM = " & Chr(34) & varCurrentValue & Chr(34) Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) If RS.EOF = False Then MsgBox "La description existe déjà ! ", 48 Cancel = True End If RS.Close Sortie: Set RS = Nothing Exit Sub Erreur: Resume Sortie End Sub
Argy -- Mes tutoriels sur http://argyronet.developpez.com/
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment
Bonjour,
Pas habitué avec VBA Access, j'ai un formulaire lié à une table(deux champs
texte : Type et Description). Le premier champ est indexé (sans doublon) ce
qui m'empêche d'entrer deux fois le même nombre. Je dois vérifier ,avant d'enregistrer, si la description n'existe pas déjà. Je fais une recherche dans la table, sur la description mais comment faire
pour empêcher la mise à jour de la table si je trouve une même description
??
Private Sub DE_PCM_BeforeUpdate(Cancel As Integer) With rs .MoveLast .FindFirst strRech If .NoMatch Then MsgBox "Pas trouvé" Else MsgBox "La description existe déjà" 'COMMENT empêcher le update