programme en VB qui coince

programme en VB qui coince - VB/VBA/VBS - Programmation

Marsh Posté le 13-01-2009 à 14:03:21    

j'ai fait un petit traitement pour comparer un a un les champs de 2 tables sous Access , le premier enregistrement commun est marque avec la valeur 1 dans un champ par contre le test ne se continue pas pour les enregistrements suivants
 
je suis paumée
merci de toute aide

Reply

Marsh Posté le 13-01-2009 à 14:03:21   

Reply

Marsh Posté le 13-01-2009 à 14:46:44    

Sans le code, c'est un petit peu difficile de voir ce qui ne va pas.
 
Autrement, il y a la solution d'une requête SQL :

Select t1.champ1
  From la_table1 t1, la_table2 t2
 Where t1.champ1 = t2.champ1

Reply

Marsh Posté le 13-01-2009 à 18:24:38    

merci de ton intervention .en fait il s'agit de comparer plusieurs tables de differents champs a une table de référence et valider par 1 si les enregistrements sont identiques
or le programme qui est fait provoque le marquage d'un premier champ et c'est tout ....même quand le laisse mouliner 2 heures et plus   il doit y avoir une erreur de boucle ou autre et en plus c'est très lourdcomme écriture . je peux te copier le prog si tu es dispo
de toutes facons je te remercie

Reply

Marsh Posté le 15-01-2009 à 10:40:08    

Si tu veux des réponses, pose ton code sur le forum.

Reply

Marsh Posté le 15-01-2009 à 13:32:24    

voila le petit programme qui ne marche pas et ou le compteur ne s"affiche pas ( sur ACCESS )
 
but:
il s'agit de comparer 4 champs "promo1,2,3,4 " d'une table PROMO1 avec 4 champs "A,B,C,D, de la table ANALYSE " et si les 4 champs sont identiques , il faut marquer 1 (nombre) dans le champ CRIT4 de la table ANALYSE avec un compteur pour suivre le traitement
 
 
option Compare Database
Dim MonCompteur
 
Sub LanceTrtPromoParTable()
' PROCEDURE QUI EFFECTUE LE TRAITEMENT PROMO en FONCTION DU PARAMETRE NonTable QUI EST LE NOM DE TABLE QUI CONTIENT LES VALEURS PROMO
'garde
 
Dim MaBase
Dim nbChampsPromoDansTable As Integer
Set MaBase = CurrentDb()
 
    Set MaTablePromo = MaBase.OpenRecordset("table promo4" )
       
    If Not MaTablePromo.EOF Then
        MaTablePromo.MoveFirst
    End If
 
   
        Do Until (MaTablePromo.EOF)
            ' on valorise les variables
            promo1 = MaTablePromo("promo1" )
            promo2 = MaTablePromo("promo2" )
            promo3 = MaTablePromo("promo3" )
            promo4 = MaTablePromo("promo4" )
            ' on lance la procedure qui parcour la table achat
     MonCompteur = MonCompteur + 1
     Form("Deroulement" ).Value = CStr(Date) + "(" + CStr(Time) + " )" + ": " + "Compteur = " + CStr(MonCompteur) + " ; " + vbCrLf + Form("Deroulement" ).Value
     
       SQLUPDATE = "UPDATE ANALYSE SET CRIT4=1 WHERE ((ANALYSE.A = " + CStr(promo1) + " AND ANALYSE.B = " + CStr(promo2) + " AND ANALYSE.C = " + CStr(promo3) + " AND ANALYSE.D = " + CStr(promo4) + " ) OR (ANALYSE.B = " + CStr(promo1) + " AND ANALYSE.C = " + CStr(promo2) + " AND ANALYSE.D = " + CStr(promo3) + " AND ANALYSE.E = " + CStr(promo4) + " ))"
        MaBase.Execute (SQLUPDATE)
     
        MaTablePromo.MoveNext
        Loop
       
End Sub
 
 
 
Private Sub LancePromo_Click()
Call LanceTrtPromoParTable
 
End Sub
 
 
merci pour toute aide
 
Eglantine

Reply

Marsh Posté le 15-01-2009 à 14:29:02    

As-tu tracé ton programme en mode debogage pour voir si ta boucle fonctionne correctement ?
 
Est-ce que tu peux nous copier le contenu de SQLUPDATE après son remplissage lors d'une itération ?
 
Si tes champs sont alphanumériques, je pense qu'il faut mettre des quotes dans ta concaténation de variables pour la jointure :
[...] ANALYSE.A = '" & CStr(promo1) & "' AND [...]
 
Je conseille aussi généralement d'utiliser l'opérateur & plutôt que + pour les concaténations de variables.

Reply

Marsh Posté le 15-01-2009 à 15:40:26    

merci de ta reponse
ce n'est pas moi qui ai ecrit ce code
je le trouve tres lourd j'aurai plus ecrit  
 if promo1 ="A" and promo2 ="B" and promo3 ="C" and promo4 ="D" or
    promo1 ="B" and  promo2 ="C" and promo3 = "D" and promo4 = "E" then
    ANALYSE(CRIT4) = 1
 
honnetement je suis completement paumee sur cette action je ne sais plus comment le rectifier
si tu sais   super  
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed