Comparaison d'enregistrement de deux tables entre elles en vba sur Access

Signaler
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007
-
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007
-
Bonsoir,






Ca fait pas mal de temps que je suis confrontée a un
problème dont je n’ai pas trouvé la solution sur le forum sauf erreur de ma
part.






Voilà je vous explique j’ai deux tables dont voici la
composition :






Table1 : Num_ip_uti_connex | Num_ip_site_connex |
Heure_debut_connex

Table2 :
Num_ip_uti_deco | Num_ip_site_deco | Heure_fin_deco














Le truc c’est qu’il faudrait que je compare les deux
premiers champ de la table1 a ceux de la table2 tout en sachant que la table2
doit être parcouru séquentiellement car il est possible qu’il se trouve qu’il y
est dans la Table
2 deux fois le même enregistrement car un utilisateur peut se connecter
plusieurs fois au même site .



J’avais pensé a faire une requête SQL du style (désolé je
suis pas au boulot donc je ne me rappelle plus trop ce que j’ai marqué)



SELECT
Num_ip_uti_connex, Num_ip_site_connex FROM Table1 WHERE Num_ip_uti_connex = (SELECT
Num_ip_deco FROM Table2)

AND
Num_ip_site_connex = (SELECT Num_ip_site_deco FROM Table2);







Mais bien sur c’est impossible car ce ne sont pas les mêmes
noms de champs donc on ne peut pas les comparer et aussi car ca ne me permet
pas de parcourir la table séquentiellement.





Donc si vous avez des solutions je suis toute ouïe merci d’avance à bientôt



piou ('<>')

4 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
17
Salut,

Peut-être :
SELECT Num_ip_uti_connex, Num_ip_site_connex FROM Table1, Table2 WHERE Num_ip_uti_connex Num_ip_uti_deco AND Num_ip_site_connex Num_ip_site_deco;

???

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
17
Tu peux rajouter aussi un Group By Num_ip_uti_connex, Num_ip_site_connex.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007

non désolée ca marche pas.

car Num_ip_uti_connex, Num_ip_site_connex ne sont pas des cles primaire
et si j'effectue ta requete ca me l'a lance comme si elle était
parametré.

Comme cle primaire j'ai mi en champ caché Numc pour table1 et Numd pour Table2 en numero automatique.

mais merci quand même.

je continu a reflechir.. obligée de toute manière puis si j'ai la solution je la posterais.

Mais j'ai toujours mes yeux grand ouvert au nouvelles propositions






piou ('<>')
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007

bon j'ai cherché dans ma petite tête et j'ai trouvé ca :



Dim rs, rst As DAO.Recordset

Dim sql, Ssql As String

Dim a, b, c, d, e, f As String



Ssql = " SELECT Num_ip_uti_deco, Num_ip_site_deco, Heure_fin_deco FROM Deconnexion "

sql = "SELECT Num_ip_uti_co, Num_ip_site_co,Heure_début_co FROM Connexion"



Set rs = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)

Set rst = CurrentDb.OpenRecordset(Ssql, dbOpenDynaset)

Do While Not rs.EOF

Do While Not rst.EOF



a = rs.Fields(0)

b = rs.Fields(1)

c = rs.Fields(2)

d = rst.Fields(0)

e = rst.Fields(1)

f = rst.Fields(2)





If a d And b e Then

CurrentDb.Execute ("INSERT INTO CoDeco(
Num_ip_uti, Num_ip_site,
Heure_début_connexion,Heure_fin_connexion,Nom_site ) VALUES ('" & a
& "', '" & b & "', '" & c & "', '" & f &
"', ' '); ")

Else



Do While a <> d Or b <> e



d = rst.Fields(0)

e = rst.Fields(1)

f = rst.Fields(2)



Loop

CurrentDb.Execute ("INSERT INTO CoDeco(
Num_ip_uti, Num_ip_site,
Heure_début_connexion,Heure_fin_connexion,Nom_site ) VALUES ('" & a
& "', '" & b & "', '" & c & "', '" & f &
"', ' '); ")



End If

rs.MoveNext

rst.MoveNext



Loop

Loop



donc voila ca marche a peut pres mais le problème maintenant c'est que ca buge a ce niveau :





Do While a <> d Or b <> e



d = rst.Fields(0)

e = rst.Fields(1)

f = rst.Fields(2)



Loop



la boucle ne s'arrete jamais



help please


piou ('<>')