Fonction test

Messages postés
7
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2006
- - Dernière réponse : computerist
Messages postés
7
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2006
- 29 juil. 2005 à 12:17
bonjour,
je m'adresse a vous pour m'aider a trouver la solution concernant une base de données access 2.0 je veux une fonction test qui sert a controler l'existence d'un produit avant de valider l'enregistrement de ce dernier eviter le double enregistrement d'un meme produit.

c'est une fonction dans le module de access
Afficher la suite 

6 réponses

Messages postés
28
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
2 décembre 2005
0
Merci
tu sais que ta question n'est pas clair?

Pour éviter les doublons: lorsque tu as ta table en mode création, il y a une propriété s'appelant Indexé, tu choisi Oui - Sans doublon et le problème est réglé.

Pour vérifier l'existence d'un produit, voici une solution exploitant le DAO (ajouter la référence si besoin) :

Dim myRS as DAO.Recordset
Dim SQL as String
SQL "SELECT * FROM Produit WHERE Ref'"+ myValue +"';"
Set myRS = CurretnDb.Openrecordset(SQL, DAO.dbopendynaset)

if not myRS.EOF then
'La référence existait
else
'La référence n'existait pas => Ajout dans la base de données
SQL = "INSERT INTO Produit..."
CurrentDb.Execute SQL
end if

Set myRS = Nothing
Messages postés
7
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2006
0
Merci
bonjour,
je te remercie pour ton interet a mon probleme.
oui vous avez raison ma question n'est pas assez clair parce que je n'ai pas pu avoir une idée sur certaine chose mais maintenant j'ai avancé dans ma recherche et je souhaiterai te partager ce que j'ai eu comme idée.
je réexplique: je travaille sur une base de donnée access c'est une application qui gère l'activité d'une clientèle de banque,mon probleme est le suivant:
quand l'utilisateur veut ajouter un produit a un client il click sur le bouton créer apres ca lui sort un formulaire de saisie qui permet a l'utilisateur de selectionner le produit dans une liste deroulante apres c'est la saisie de la date d'operation en suite c'est le numero de compte,le montant le nom,le nombre de benificiaire etc...
alors moi ce que je veux c'est que quand je selectionne le produit assurance dans ma liste deroulante et que je saisis le numero_compte du client a ce moment la je veux une action ,un evenement qui teste l'existence du produit(assurance) attribué a ce numero de compte saisie en affichant un msgbox"stop contrat deja souscrit" comme ca on bloque l'enregistrement et l'utilisateur a travers ce message il saura que le client a deja souscrit le contrat donc pour conclure un numero de compte peut avoir un et un seul contrat d'assurance.
peux tu m'aider a resoudre ce probleme merci d'avance
Messages postés
7
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2006
0
Merci
autre chose a signaler je ne sais pas quel evenement je pourrai choisir sur le champ Num_Compte perte focus,sortie,entrée..... et je ne sais pas ce que tu ma donnait ca na pas marché je l'ai modifié en fonction de mes champs et mes tables ca donne ca:

Dim myRS as DAO.Recordset
Dim SQL as String


SQL = "select DISTINCTROW
X_Transactions.Numero_compte from Transactions WHERE ((X_Transactions.Numero_compte = 'Numero_Compte') AND
(X_Transactions.code_produit = 8))"
Set myRS = CurretnDb.Openrecordset(SQL, DAO.dbopendynaset)


if not myRS.EOF then
'Le contrat d'assurance est déja souscrit pour le client
else
'La référence n'existait pas => Ajout dans la base de données
SQL = "INSERT INTO Produit..."
CurrentDb.Execute SQL
end if


Set myRS = Nothing
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
0
Merci
Avec un dlookup tu peux vite t'en rendre compte.

Regarde dans l'aide Access...

Tu peux faire le test si un des n° existe déjà, ou encore mieux tu peux
définir dans ta table un champ unique comme un numéro de sorte que si
ce mm numéro est donné, l'enregistrement ne fait pas, tout simplement.



Sinon tu peux tester le numéro par dlookup

ex:

if isnull(Dlookup("Numéro","Table ou rq","critère")) then lancer la rq d'enregistrement
TBBUIM
Messages postés
7
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2006
0
Merci
oui mais le probleme c'est qu'il s'agit pas d'un seul produit pour declarer le champ unique.
c'est un formulaire de saisie pour ajouter un produit selectionner a partir d'une liste deroulante et ce qui me concerne c'est juste un et un seul produit que je veux qu'il soit bloquer en affichant un message qui informe l'utilisateur que ce client a deja souscrit pour ce produit(contrat d'assurance).

et ca je vais le mettre ne place quand on finis la saisie du champ numero de compte (test avec un bon evenement /event procedure/requete sql vba etc....
j'ai fait un effort et c'est grace a des participant au forum que j'ai arrivé a mettre en place ce code
Dim oRst as DAO.Records
Dim oDb as DAO.Database Set oDb=CurrentDb Set oRst=oDb.OpenRecordset("select DISTINCTROW
X_Transactions.Numero_compte from Transactions WHERE ((X_Transactions.Numero_compte = 'Numero_Compte') AND
(X_Transactions.code_produit = 8)) quot;,dbOpenDynaset)
If oRst.RecordCount=0 then MsgBox "STOP CONTRAT DEJA SOUSCRIT POUR CE CLIENT", 48
Messages postés
7
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2006
0
Merci
franchement apres avoir chercher dlookup sur le help d'access j'ai trouvé que c'est tres interessant comme fonction et si je veux la mettre en place vis a vis de mes besoins ca va nous donner ce code:X DLookup("[Numero_Compte]", "X_Transactions", "[Code_Produit] 8")
comme ca la fonction va me trouver les numero de compte qui ont un code_produit=8

et il me sort le message stop deja souscrit mais je ne sais pas ou la mettre dans quel evenement
merci pour votre aide