[Access] création d'une entrée si non existan

Résolu
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   -  
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous :)

Voilà je me trouve dans une impasse et je n'arrive pas à trouver la solution.

Je me trouve avec un formulaire qui me sert, à partir d'un numéro de prise, à retracer le chemin réseau (ex. la prise 6234A est alimentée par le port 7 du switch 10). Donc mon formulaire est fait de la facon suivante :

J'ai d'abord un groupe d'options qui me selectionne l'etage (du RDC au 7e), puis un deuxième groupe d'options qui me selectionne la zone (de 1 à 4 selon l'etage), une zone de texte où on entre le n° de prise à 2 chiffres et enfin un 3e groupe d'option pour le doublage eventuel de la prise (A ou B), le tout forme mon numéro de prise complet (ex. 6234A) qui est stocker dans une zone de texte sous forme de variable.
Ensuite j'ai un bouton de recherche qui, grace à une requete, me trouve les infos sur la prise (n° de switch + port).

L'image qui suit sera plus claire :
http://hebergement-images.voiloo.net/membres/viewimg.php?img=575f87ad5c63e6ae73f6286d4c65b5b5.jpg

Maintenant ce que je désire faire, c'est que si la prise saisie n'existe pas dans ma table T_PRISE, que mon formulaire me propose de la créer et d'entrer les infos correspondantes (n° du switch et le port dont dépend la prise ainsi qu'une eventuelle remarque). Comment faire ?? car je bloque totalement sur ce point

D'avance merci...
A voir également:

10 réponses

blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

il faut ajouter les éléments dans les différentes tables (en respectant l'ordre défini par les relations éventuelles entre tables : intégrité référentielle)

En gros : ouvrir un recordset sur chaque table, et appliquer la méthode addnew.
0
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
Bonjour et merci pour ta réponse Blux

Je ne la comprends pas exactement, donc si tu pouvais me donner 2-3 précisions lol.

Quand tu dit qu'il faut ajouter les éléments dans les différentes tables, tu parles des elements que je veux entrer lors de la création d'une prise non existante ?? si c'est le cas, sache que ces infos sont toutes dans ma table T_PRISE. Bref je suis pas sur de bien comprendre lol. Dans tous les cas, je n'ai pas de relation avec intégrité réferentielle car je fais mes relations directement à partir des requetes. Ca va peut etre te faire monter au plafond mais on m'a conseillé de faire ça, ce qui evite des soucis et j'ai vu que c'est tout a fait faisable donc...

pour ce qui est d'ouvrir un recordset sur chaque table, et appliquer la méthode addnew, ouai ok mais là ça ne me parle pas du tout lol, je vais un peu chercher sur le Net pour comprendre de quoi tu me parles, mais ca devient un peu technique pour ma pauvre personne...

@ plus tard et merci :)
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Si toutes tes infos sont présentes dans une table, alors un simple INSERT INTO devrait suffire...
0
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
Ok jessairai mais ce que je ne comprends pas, c'est comment dire à access de prendre ma variable Resultat (qui est la concaténation qui donne le n° de prise à rechercher dans le formulaire) et de la comparer au champ Prise de ma table T_PRISE. Ensuite lui dire que si le numero de prise recherché se trouve dans T_PRISE alors afficher les infos, et sinon ouvrir une msgbox qui me dit que la prise n'existe pas et de me proposer de la créer.

Parce que, si je comprend bien, ta solution me dit comment créer la prise si elle n'existe pas mais je vois pas comment faire la comparaison entre une variable et l'enregistrement d'un champ d'une table...

PS. faut que j'arrete d'ecrire des romans lol, ça doit pas etre sympa pour toi de lire ca
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Regarde les fonctions dlookup et dcount, tu trouveras sûrement ton bonheur...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
J'ai un peu chercher l'utilisation de la fonction DLookup (que je n'ai pas parfaitement comprise) et j'aimerai te soumettre mon resultat pour que tu m'aides à comprendre ce qui ne va pas !

Lorsque je fait, indifferemment ce test :

Dim var As Variant

var = DLookup("[Prise]", "T_PRISE", "[Prise] = [Resultat] ")
 OU
var = DLookup("[Prise]", "R_ESSAI", "[Resultat]=[Prise]")
msgbox var


dans ce cas, lorsque j'entre un num de prise existant, il me renvoi le num en question, par contre lorsque j'entre un num de prise qui n'existe pas, il me sort une erreur "Utilisation incorrecte de Null".

Et lorsque je rajoute :

If var = Null Then
MsgBox "faux"
Else
MsgBox "ok"
End If


il me ressort à tous les coups la msgbox OK !!

je pense vraiment etre pas loin mais je comprend plus trop lol...
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
dlookup te renvoie un résultat : si rien n'est trouvé, alors var se retrouve avec une valeur non stable...
Il faut donc utiliser dcount, ça te renverra 0 si la prise n'existe pas et 1 si elle existe.

Pour ce qui est de tester 'null', ça se fait via une fonction :
If IsNull(var) then
--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
Je vais tester mais est ce que mon premier code c'est à dire :

Dim var As Variant

var = DLookup("[Prise]", "T_PRISE", "[Prise] = [Resultat] ")
 OU
var = DLookup("[Prise]", "R_ESSAI", "[Resultat]=[Prise]")
msgbox var


te parait bon ?? sachant que [ Resultat] est une Zone de texte où est affichée la variable Calcul (qui calcul le num de prise dans le formulaire
0
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
Oublie mon post précédent car je croi avoir trouvé !!!!

j'aimerais juste que tu me confirme qu'il n'y a pas d'erreur de syntaxe ou un quelconque defaut dans mon code !!

Dim var As Variant

var = DLookup("[Prise]", "R_ESSAI", "[Resultat]=[Prise]")

If IsNull(var) Then
MsgBox "faux"
Else
MsgBox "ok"
End If


dis moi que c'est bon pleaseeeeee !!! mais si ça ne l'est pas me le dit pas pour me faire plaisir lol
J'ai juste un doute sur "[Resultat]=[Prise]" car Resultat est une zone de texte où est contenu une variable et Prise est le champ de ma requete tiré de la table T_PRISE

J'ai juste besoin d'une confirmation que le code est bon car je doute sur les [ ]

merci :-)
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Je n'ai pas pour habitude de dire ce que les gens veulent entendre :-)

Ici, tu veux mettre dans 'var' la valeur du champ "Prise" de la table/requête "R_ESSAI" lorsque "Prise" a la même valeur que le champ "Resultat" de la table "R_ESSAI" (champ qui ne doit pas exister, je suppose), donc la valeur n'est pas trop bien précisée !!!

Je mettrais plutôt :
var = DLookup("[Prise]", "R_ESSAI", "[Prise] = '" & Resultat.Value &"'")
ou
Resultat.Text
Sachant que les [] ne sont obligatoires pour ACCESS que lorsque les noms contiennent des espaces...
0
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
Lol et, entre nous, c'est bien de ne pas dire aux gens ce qu'ils veulent entendre !! :p

ba ne fait R_ESSAI n'est pas une table mais une requete que j'ai créée spécialement pour cette etape. Et le champ Resultat n'est contenu dans aucune table et/ou requete, c'est simplement le nom de la zone de texte où apparai le resultat de la varaible Calcul de mon fromulaire et c'est ce que je veux comparer : comparer le champ Prise de la table T_PRISE (ou plutot de la requete R_ESSAI) avec la variable calcul stockées dans la zone de texte Resultat
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Je n'ai rien dit d'autre, j'ai interprété par rapport au code que j'ai vu...
0
mat67000 Messages postés 400 Date d'inscription   Statut Membre Dernière intervention   13
 
bien sur on est d'accord Blux.

Je voulais simplement récapituler afin qu'on soit d'accord tous les deux :-)

J'ai testé ta solution :

var = DLookup("[Prise]", "R_ESSAI", "[Prise] = '" & Resultat.Value &"'")


et cela fonctionne aussi, donc je vais laisser ça car ça me parait beaucoup plus propre !!
je clos le topic et un sincère merci à toi. Ca fait deux fois que tu m'aides et deux fois que j'arrive à ce que je veux grace à toi donc MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI !!!!

ouppsss désolé pour le flood :p

merci encore !!
0