[VBA] et requête SQL

Le
HD
Bonjour,

En VBA, j'ai une requête pour obtenir des données mon souci est que je ne
comprend pas un résultat

C'est une requête assez simple avec une jointure entre deux tables

Si j'utilise cette requête :
Req = "SELECT dossiers.RaisonSociale, MAX(Factures.datefac) AS
Date_derniere_Facture FROM bdd.dbo.dossiers dossiers, bdd.dbo.Factures
Factures WHERE Dossiers.NEnreg úctures.NEnregDos GROUP BY
dossiers.RaisonSociale"
J'obtiens bien ma liste de dossiers avec la dernière date de facture mais
si je veux tout les champs de la table dossiers :
Req = "SELECT dossiers.*, MAX(Factures.datefac) AS Date_derniere_Facture
FROM bdd.dbo.dossiers dossiers, bdd.dbo.Factures Factures WHERE
Dossiers.NEnreg úctures.NEnregDos GROUP BY dossiers.RaisonSociale"
Là, je me retrouve avec une page vide

Pour la connexion entre Excel et SQL j'utilise:
With
ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN½DCpta;Description½DCpta;UIDª;PWD="
& MdP & ";APP=Microsoft Office
2003;WSID­MINFO;DATABASE½d;LANGUAGE=Français;NetworkÛMSSOCN;Regional=yes",
Destination:=Range("A1"))
.CommandText = Req
.Name = "Liste Dossiers"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With

Hum je sais que mon souci est limite hors sujet sur le newsgroup Excel
mais là c'est du VBA et du SQL et sur le newsgroup SQL je serais sûrement
également limite

Merci pour votre aide
--
@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22100281
Bonjour,

Pour obtenir le code et le texte de ta requête,
tu lances l'enregistreur de macro et tu exécutes manuellement
ta requête utilisant MsQuery. Je ne suis pas certain pour Excel 2007,
mais c'est vrai pour les autres versions d'Excel.




"HD" hsb1qh$r85$
Bonjour,

En VBA, j'ai une requête pour obtenir des données... mon souci est que je ne
comprend pas un résultat...

C'est une requête assez simple avec une jointure entre deux tables...

Si j'utilise cette requête :
Req = "SELECT dossiers.RaisonSociale, MAX(Factures.datefac) AS
Date_derniere_Facture FROM bdd.dbo.dossiers dossiers, bdd.dbo.Factures
Factures WHERE Dossiers.NEnreg úctures.NEnregDos GROUP BY
dossiers.RaisonSociale"
J'obtiens bien ma liste de dossiers avec la dernière date de facture... mais
si je veux tout les champs de la table dossiers :
Req = "SELECT dossiers.*, MAX(Factures.datefac) AS Date_derniere_Facture
FROM bdd.dbo.dossiers dossiers, bdd.dbo.Factures Factures WHERE
Dossiers.NEnreg úctures.NEnregDos GROUP BY dossiers.RaisonSociale"
Là, je me retrouve avec une page vide...

Pour la connexion entre Excel et SQL j'utilise:
With
ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN½DCpta;Description½DCpta;UIDª;PWD="
& MdP & ";APP=Microsoft Office
2003;WSID­MINFO;DATABASE½d;LANGUAGE=Français;NetworkÛMSSOCN;Regional=yes",
Destination:=Range("A1"))
.CommandText = Req
.Name = "Liste Dossiers"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With

Hum... je sais que mon souci est limite hors sujet sur le newsgroup Excel...
mais là c'est du VBA et du SQL et sur le newsgroup SQL je serais sûrement
également limite...

Merci pour votre aide
--
@+
HD
HD
Le #22101221
Pour obtenir le code et le texte de ta requête,
tu lances l'enregistreur de macro et tu exécutes manuellement
ta requête utilisant MsQuery. Je ne suis pas certain pour Excel 2007,
mais c'est vrai pour les autres versions d'Excel.


Arfff... c'est vrai que je n'ai pas pris l'habitude d'utiliser MsQuery...
alors que c'est effectivement bien pratique pour constituer rapidement une
requête... en tout cas, ça m'a permi de voir que pour que tout mes champs
apparaissent il faut qu'ils soient tous dans le GROUP BY.... j'ai fait un
copier/coller des champs à afficher que j'ai placé dans le GROUP BY (sauf le
MAX(datFac)) est maintenant tout ressort bien...

Merci à toi MichDenis lol
--
@+
HD
HD
Le #22128171
J'ai put voir où était le souci... Il faut préciser chaque champs que l'on a
à l'affichage dans le GROUP BY... si il en manque un ça coince...

--
@+
HD
Publicité
Poster une réponse
Anonyme