Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2010, 09h50   #1
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
Par défaut Verifier existance attribut

Bonjour,

je post enfin mon message apres avoir consulté la Faq access, vba.. en vain.
Pourtant je sais que ma question ne sortira pas de l'ordinaire, mais je n'ai pas trouvé de sujet similaire sur le forum.

Donc ma question est simple; J'a developpé un formulaire via Access qui concerne un ajout d'enregistrement de produit dans une base Access.
Tout fonctionne a merveille et les divers contrôles on été fait ( en VBA ). Malgré tout cela il manque un dernier contrôle qui est de savoir si le nouvel enregistrement n'existe pas déja dans la table, même le champs dans lequel l'update va être effectué.

Doit on passé par une requête SQL en dur dans le code VBA, ou plutôt appeler une requête préalablement construite via Access ou ... existe t-il d'autres manières ?

Merci, et encore désolé si cette question vous a été posé de manière redondante.
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h13   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 080
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 080
Points : 11 615
Points : 11 615
Bonjour,

4 manières.

1) la requete dans vba, si celle-ci est dynamique (c'est apparement le cas).

2) la requete objet. En dynamique cela oblige à mettre des réf vers le formulaire :
- forms.monform.moncontrole
- tenir compte des Null dans les controle (controle non saisi)
C'est peut être un peu lourd.

3) l'utilisation du recordset DAO (voir le tuto sur DAO).

4) pour un nombre restreint de champs (2, 3) un index peut faire l'affaire.

Donc suivant le nombre de champ à controler on utilisera l'une ou l'autre méthode.

Si tu dois comparer plusieurs champs DAO est peut être plus simple à mettre en oeuvre.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h27   #3
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
Merci. J'utilise déja 3 recordset car mon formulaire met a jour 3 tables. Je vais utiliser la méthode d'injection SQL directement dans le VBA.
Ensuite je vais écrire
Code :
Set Rs = CurrentDb.OpenRecordset(sql)
Puis effectuer mon controle.

Merci
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h51   #4
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
Je souhaite juste vous déposer ma requête car je ne suis pas sûr de la synthaxe.
Code :
1
2
 
sql = "SELECT * FROM [maTable] WHERE [maTable.monChamps] =  client-id "
client-d = variable champ texte , saisie de l'utilisateur a partir du formulaire.
Edit :
Code :
sql = "SELECT * FROM [maTable] WHERE [maTable.monChamps] =  'client-id' ;"
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h48   #5
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 080
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 080
Points : 11 615
Points : 11 615
Comme ceci plutot.
Code :
1
2
 
sql = "SELECT * FROM [maTable] WHERE [maTable.monChamps] = " & me.controleId & ";"
Il y a un tuto sur le debogage des requetes en VBA.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 12h11   #6
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
J'ai rectifié.
Cela dit j'ai maintenant un problème de Data type.
J'ai consulté la doc rédigé par Caféine ( http://cafeine.developpez.com/access...ugprint/#LVI-C )
J'ai vu que pour une chaine il faut utiliser des simples quotes, et Access me retourne l'erreur 3464 " Data Type dismatch".
Je ne comprend pas car le champ est "text" dans la table.

Edit : C'est bon, ca fonctionne, erreur de quote car c'est une variable dynamique.
Résolu.

Merci
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h20.


 
 
 
 
Partenaires

Hébergement Web