Aller au contenu

Messages recommandés

Posté(e)

Salut je cherche à faire un code me permettant de tester une valeur que je saisi dans une table Access.

 

En fait, je fais apparaitre une boite de dialogue dans laquelle je demande un numéro d'affaire. Tous les numéros d'affaire déjà traité sont stocké dans une base Access, je veux donc savoir si le numéro entrez précedemment fais partie de cette table. S'il en fais partie, çà me retourne une boite de dialogue me le stipulant, si çà n'en fais pas partie çà me l'ajoute.

 

Voici le code à l'heure actuelle :

 

Public dbaffaire As Object

 

Private Sub cmdValiderNumAff_Click()

 

Dim affaire As Recordset

 

Set dbaffaire = OpenDatabase("R:\0-DAO-Gestion\Gestion\gestion.mdb")

Set affaire = dbaffaire.OpenRecordset("Affaire", dbOpenDynaset)

 

If affaire![NumAff] = txtAffaire Then ---> c'est à ce niveau là que je bloque

MsgBox "ok"

Else

affaire.AddNew

affaire![NumAff] = txtAffaire

affaire.Update

 

End If

 

dbaffaire.Close

Set dbaffaire = Nothing

Unload Me

 

End Sub

 

 

 

Merci encore!!

Le DOC

Posté(e)

J'ai une suggestion à faire : le principe est bon, mais tu oublies de parcourir tous les enregistrements de la table Access Affaire. Ta table va contenir plusieurs enregistrements, elle va s'aggrandir au fur et à mesure de son utilisation. Il faut donc parcourir (faire une boucle) afin de rechercher le N° d'affaire saisi (txtaffaire) et pouvoir conclure : OK s'il existe, le créer s'il n'existe pas dans la table.

Voilà le code correspondant :

 

' est une marque de commentaire en VBA

 

Public dbaffaire As Database

 

Sub cmdValiderNumAff_Click()

 

Dim affaire As Recordset

Dim trouve As Boolean

 

'se connecter sur la base de données Gestion.mdb

Set dbaffaire = OpenDatabase("C:\0-DAO-Gestion\Gestion\gestion.mdb")

'Pointer sur la table Affaire

Set affaire = dbaffaire.OpenRecordset("Affaire", dbOpenDynaset)

'Utiliser une variable logique (booleenne) pour indiquer :

' Vrai (true) si le txtaffaire existe dans la table

' Faux (false) si le txtaffaire n'existe pas

trouve = False

 

'Regarder si la table Affaire est vide

If Not (affaire.EOF And affaire.BOF) Then

'La table n'est pas vide

'Se placer sur le premier enregistrement. Il va falloir boucler sur

' tous les enregistrements de la table pour rechercher l'existence

' de txtaffaire

affaire.MoveFirst

Do Until raffaire.EOF

If affaire![NumAff] = txtaffaire Then

' on a trouve le txtaffaire dans la table

MsgBox "ok"

trouve = True

'sortir de la boucle

Exit Do

Else

'Cet enregistrement n'est pas le bon => passer au suivant

affaire.MoveNext

End If

Loop

'As-t-on trouvé txtaffaire ?

If Not trouve Then

'Pas trouvé ==> le créer dans la table

affaire.AddNew

affaire![NumAff] = txtaffaire

affaire.Update

End If

 

End If

 

dbaffaire.Close

Set dbaffaire = Nothing

Unload Me

 

End Sub

 

Bon courage ...

 

Posté(e)

C'est d'un simplicité pour certaine personne quand c'est si compliqué pour d'autre !! :casstet:

 

En fait pour tout t'avouer je pensais bien faire une boucle de ce style car je fais souvent ce type de prog, mais en liason avec Excel, et ne connaissant que tres peu Access, je pensais que comme c'est un tableur, il existait déjà une fonction tout faite pour ce type de manip.

 

Merci beaucoup, vraiment sympas!

 

 

Le DOC

Posté(e)

ca se fait en lisp, ca doit se faire en VBA

 

il existe adolisp de fleming group

qui permet de se connecter via odbc sur tous type de base de donnée

(ca marche même avec MySQL !)

 

http://www.fleming-group.com

 

ensuite une simple requete sql du style

 

select count(monchamp) from mabase where monchamp = mavaleur

 

 

 

 

  • 3 ans après...
  • 2 mois après...
Posté(e)

ce serait peu-être plus simple de "balancer" le n°, si le n° existe réciperer l'erreur et faire en conséquence, sinon continuer le programme...is j'ai bien compris.

Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.

  • 8 mois après...
Posté(e)

Si la table est faite sous Access, le plus simple à mon avis est de mettre dans le champ "Affaire" la propriété "Sans doublon". Ensuite, gérer par "On error goto" sous AutoCAD et tester le numéro de l'erreur retournée.

Il y a aussi une solution dans le code donné sur ce message

 

'Vérifier que l'expression n'existe pas dans la table ExpAng:
Set rstRech = db.OpenRecordset("tabExpAng", dbOpenDynaset)
rstRech.FindFirst ("ExpAng = '" & strTexte & "'")
If rstRech.NoMatch Then 'Si l'expression n'est pas dans la table
rst.AddNew 

 

A replacer dans le contexte !

 

[Edité le 20/11/2008 par OtObOx]

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité