VBA jointure entre table

Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006 - 6 juil. 2005 à 10:49
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 - 6 juil. 2005 à 16:19
Bonjour,

est ce que les jointures suivantes entre les tables sont correcte ? (elle sont faite en VBA sous Outlook)

Je demande cela parce que j'ai une erreur dans mon projet et je crois
bien que c'est le dernier obstacle avant que je termine définitivement
ce projet :D Si elles sont fausses pourriez vous les corriger ? Merci
beaucoup :D



strSQL = "Select [company_name] from Actions, Sites, Companys" & _


"where Actions.[action_siteto] = Sites.[site_id]"
& _


"and Sites.[company_id] = Companys.[company_id]"
& _


"and Actions.[action_dateeche]= '" &
UserForm2.cboDateEche.Value & "' "

35 réponses

fred.toto Messages postés 73 Date d'inscription mardi 10 avril 2001 Statut Membre Dernière intervention 4 mars 2009
6 juil. 2005 à 14:31
Eh ben à peine le tps d'aller manger et hop 18 messages...
Bon alors ile en est ou le petit lol ? il a réussi en fin de compte?
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
6 juil. 2005 à 14:32
ok, je vien de remplacer left outer par inner mais il m'engendre le même problème que ci dessus



[Microsoft][ODBC SQL Server Driver][SQL Server]Les tables ou les
fonctions "Sites" et "Sites" ont le même nom d'exposé. Utiliser les
noms de corrélation pour les distinguer.



Je trouve cela très bizarres
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 14:42
une dernière question avant de t'envoyer ma solution! peuxx tu me dire pourquoi faire la jointure sur Action_siteto tandi que la clé de la table Action est Action_Id?

ptitGrumo
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
6 juil. 2005 à 14:47
parce que action_siteto est une clé étrangère correspondant à site_id dans la table Site
0

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

Posez votre question
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 14:51
Bon voila la requète que je trouve

strSQL = ""
strSQL = strSQL & "SELECT Companys.company_name "strSQL strSQL & "FROM (Actions RIGHT JOIN Sites ON Actions.action_siteto Sites.site_Id) "strSQL strSQL & "RIGHT JOIN Companys ON Sites.compagny_Id Companys.company_id "strSQL strSQL & "WHERE Actions.action_dateeche '" & UserForm2.cboDateEche.Value & "'"

Voila dit moi si ca marche

++

PtitGrumo
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
6 juil. 2005 à 15:00
Cela me fait l'erruer suivante :



Erreur d'execution '3021'

BOF ou EOF est egal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 15:03
Si cela ne marche pas recommence avec INNER JOIN à la place de RIGHT JOIN

Voila

a tout de suite

PtitGrumo plein le sac a d.. :)
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
6 juil. 2005 à 15:07
lol, je vien de faire le test il m'engendre encore la même erreur. et la je zappe vraiment lol
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 15:26
Oui bin
Erreur d'execution '3021'
BOF ou EOF est egal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel

Cela veu dire que la requète est passée sauf que ton RS n'a pas d'enregistrement courant donc quand tu fait :

With rstComp
.MoveFirst

Il bugg c normal!

ajoute cela à ton code:

if not(rstComp.eof and rstComp.bof) then
With rstComp
.MoveFirst
If (.State = adStateOpen) And (Not (.EOF)) Then
Do Until .EOF
strChaine = .Fields("company_name")
lstComp.AddItem strChaine
.MoveNext
Loop
End If
End With
else
msgbox "Aucun enregistrement trouvé dans la table"
end if

voila tien moi au courant

++

PtitGrumo dans le panneau
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 15:28
Fait un test avec une date pour laquelle t'es sur d'avoir un résultat!

++

PtitGrumo
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 15:33
OUPS excuse tu avait déjà fait le test "if"

met le .MoveFirst a l'interrieur du "if" et remplace
And (Not (.EOF))
par
And (Not (.EOF and .BOF))

++

:)
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
6 juil. 2005 à 15:44
j'ai trouvé d'ou provien l'erreur :D en fait, il ne trouvant aucun
enregistrement a cause de la variable. Certainement qu'elle doit avoir
une valuer nulle. Comment puis je faire pour que ma combox est comme
valeur par defaut, le premier enregistrement du champ
action_dateeche ???
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 15:57
Tu es en VB ou en VBA? (vb ou access?)
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
6 juil. 2005 à 16:00
Vba sous Outlook connecté a une base de donnée SQL server
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
6 juil. 2005 à 16:19
Alors vas dans les propriétés et met dans la propriété "Contenu"
SELECT action_Dateeche FROM Actions GROUP BY Action_Dateeche ORDER BY action_Dateeche


Puis va dans l'évènement de ton formulaire On load


et met


cboDateEche = cboDateEche.ItemData(0)

Voilou

++

PtitGrumo Si ca marche Chapeau
0
Rejoignez-nous