question pour spécialistes d'access et excel

Le
eric.zzzz
Bonjour,
Voici mon code :
Private Sub Commande81_Click()
Dim qd As QueryDef
Dim Chaine
On Error GoTo Commande81_Click_Err
Chaine = "SELECT IndGSdo.Niv, IndGSdo.Code, IndGSdo.TypDipl,
IndGSdo.GSNdo, IndGSdo.GSdo, IndGSdo.GSNda, IndGSdo.GrpSpec,
IndGSdo.Lib, IndGSdo.DateOuv, IndGSdo.Dat1reSes, IndGSdo.DatDernSes,
IndGSdo.TxSpecial, IndGSdo.EffTotalEntrants, IndGSdo.DontPartScol,
IndGSdo.PublDansScol, IndGSdo.EffScol "
Chaine3 = "FROM IndGSdo WHERE IndGSdo.GSdo=[Formulaires]!
[Form_IndicGSdorigine]![GSdo]"
Chaine = Chaine & Chaine3
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", Chaine)
DoCmd.TransferSpreadsheet acExport, 8, "Requete_Temporaire", "D:
BafTableautest", True, ""
Call Shell("excel.exe D:BafTableautest", 1)

Là, ça marche sans problème; mais si je rajoute une chaine2 :
Chaine = "SELECT IndGSdo.Niv, IndGSdo.Code, IndGSdo.TypDipl,
IndGSdo.GSNdo, IndGSdo.GSdo, IndGSdo.GSNda, IndGSdo.GrpSpec,
IndGSdo.Lib, IndGSdo.DateOuv, IndGSdo.Dat1reSes, IndGSdo.DatDernSes,
IndGSdo.TxSpecial, IndGSdo.EffTotalEntrants, IndGSdo.DontPartScol,
IndGSdo.PublDansScol, IndGSdo.EffScol, "
'(NB : en réalité, dans chaine2, il y a plusieurs champs, j'ai mis un
seul champ juste pour tester)
Chaine2 = "IndGSdo.IPA07 "
Chaine = Chaine & Chaine2
Chaine3 = "FROM IndGSdo WHERE IndGSdo.GSdo=[Formulaires]!
[Form_IndicGSdorigine]![GSdo]"
Chaine = Chaine & Chaine3
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", Chaine)
DoCmd.TransferSpreadsheet acExport, 8, "Requete_Temporaire", "D:
BafTableautest", True, ""
Call Shell("excel.exe D:BafTableautest", 1)
Là, le DoCmd s'exécute, je constate que la requete_temporaire est bien
créée, mais après, le code "saute" à la gestion d'erreurs et j'ai un=

message vbOkOnly :"Trop de champs définis"

Merci d'avance si qqu'un a une idée
Eric
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
Pierre CFI [mvp]
Le #6356141
bonjour
tu as un critére extérieur dans ta req

Bonjour,
Voici mon code :
Private Sub Commande81_Click()
Dim qd As QueryDef
Dim Chaine
On Error GoTo Commande81_Click_Err
Chaine = "SELECT IndGSdo.Niv, IndGSdo.Code, IndGSdo.TypDipl,
IndGSdo.GSNdo, IndGSdo.GSdo, IndGSdo.GSNda, IndGSdo.GrpSpec,
IndGSdo.Lib, IndGSdo.DateOuv, IndGSdo.Dat1reSes, IndGSdo.DatDernSes,
IndGSdo.TxSpecial, IndGSdo.EffTotalEntrants, IndGSdo.DontPartScol,
IndGSdo.PublDansScol, IndGSdo.EffScol "
Chaine3 = "FROM IndGSdo WHERE IndGSdo.GSdo=[Formulaires]!
[Form_IndicGSdorigine]![GSdo]"
Chaine = Chaine & Chaine3
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", Chaine)
DoCmd.TransferSpreadsheet acExport, 8, "Requete_Temporaire", "D:
BafTableautest", True, ""
Call Shell("excel.exe D:BafTableautest", 1)

Là, ça marche sans problème; mais si je rajoute une chaine2 :
Chaine = "SELECT IndGSdo.Niv, IndGSdo.Code, IndGSdo.TypDipl,
IndGSdo.GSNdo, IndGSdo.GSdo, IndGSdo.GSNda, IndGSdo.GrpSpec,
IndGSdo.Lib, IndGSdo.DateOuv, IndGSdo.Dat1reSes, IndGSdo.DatDernSes,
IndGSdo.TxSpecial, IndGSdo.EffTotalEntrants, IndGSdo.DontPartScol,
IndGSdo.PublDansScol, IndGSdo.EffScol, "
'(NB : en réalité, dans chaine2, il y a plusieurs champs, j'ai mis un
seul champ juste pour tester...)
Chaine2 = "IndGSdo.IPA07 "
Chaine = Chaine & Chaine2
Chaine3 = "FROM IndGSdo WHERE IndGSdo.GSdo=[Formulaires]!
[Form_IndicGSdorigine]![GSdo]"
Chaine = Chaine & Chaine3
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", Chaine)
DoCmd.TransferSpreadsheet acExport, 8, "Requete_Temporaire", "D:
BafTableautest", True, ""
Call Shell("excel.exe D:BafTableautest", 1)
Là, le DoCmd s'exécute, je constate que la requete_temporaire est bien
créée, mais après, le code "saute" à la gestion d'erreurs et j'ai un
message vbOkOnly :"Trop de champs définis"

Merci d'avance si qqu'un a une idée...
Eric
eric.zzzz
Le #6356101
On 2 avr, 12:37, "Pierre CFI [mvp]" wrote:
bonjour
tu as un critére extérieur dans ta req


Peut-tu être plus précis, je n'ai pas compris...(je n'ai fait que
rajoute le champ IPA07 ...)

Pierre CFI
Le #6356071
dans la req que tu fais, il y a uncritére qui est la valeur d'un champ de
formulaire et çà en vba çà passe pas, pour étre sur tu mets un critére en
"dur" , et tu testes

--
Pierre CFI

On 2 avr, 12:37, "Pierre CFI [mvp]" wrote:
bonjour
tu as un critére extérieur dans ta req


Peut-tu être plus précis, je n'ai pas compris...(je n'ai fait que
rajoute le champ IPA07 ...)

eric.zzzz
Le #6356061
Je ne sais pas si tu as vu que j'avais écrit : "Là, ça marche sans
problème; mais si je rajoute une chaine2 ..."
Donc, ça marche même avec un critère extérieur. ça ne marche plus
quand je rajoute la chaine2
Gilbert
Le #6356051
Bonjour,

As-tu essayé d'exécuter ta requête "Requete_Temporaire" pour vérifier ?

--
Cordialement,

Gilbert


news:
Bonjour,
Voici mon code :
Private Sub Commande81_Click()
Dim qd As QueryDef
Dim Chaine
On Error GoTo Commande81_Click_Err
Chaine = "SELECT IndGSdo.Niv, IndGSdo.Code, IndGSdo.TypDipl,
IndGSdo.GSNdo, IndGSdo.GSdo, IndGSdo.GSNda, IndGSdo.GrpSpec,
IndGSdo.Lib, IndGSdo.DateOuv, IndGSdo.Dat1reSes, IndGSdo.DatDernSes,
IndGSdo.TxSpecial, IndGSdo.EffTotalEntrants, IndGSdo.DontPartScol,
IndGSdo.PublDansScol, IndGSdo.EffScol "
Chaine3 = "FROM IndGSdo WHERE IndGSdo.GSdo=[Formulaires]!
[Form_IndicGSdorigine]![GSdo]"
Chaine = Chaine & Chaine3
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", Chaine)
DoCmd.TransferSpreadsheet acExport, 8, "Requete_Temporaire", "D:
BafTableautest", True, ""
Call Shell("excel.exe D:BafTableautest", 1)

Là, ça marche sans problème; mais si je rajoute une chaine2 :
Chaine = "SELECT IndGSdo.Niv, IndGSdo.Code, IndGSdo.TypDipl,
IndGSdo.GSNdo, IndGSdo.GSdo, IndGSdo.GSNda, IndGSdo.GrpSpec,
IndGSdo.Lib, IndGSdo.DateOuv, IndGSdo.Dat1reSes, IndGSdo.DatDernSes,
IndGSdo.TxSpecial, IndGSdo.EffTotalEntrants, IndGSdo.DontPartScol,
IndGSdo.PublDansScol, IndGSdo.EffScol, "
'(NB : en réalité, dans chaine2, il y a plusieurs champs, j'ai mis un
seul champ juste pour tester...)
Chaine2 = "IndGSdo.IPA07 "
Chaine = Chaine & Chaine2
Chaine3 = "FROM IndGSdo WHERE IndGSdo.GSdo=[Formulaires]!
[Form_IndicGSdorigine]![GSdo]"
Chaine = Chaine & Chaine3
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", Chaine)
DoCmd.TransferSpreadsheet acExport, 8, "Requete_Temporaire", "D:
BafTableautest", True, ""
Call Shell("excel.exe D:BafTableautest", 1)
Là, le DoCmd s'exécute, je constate que la requete_temporaire est bien
créée, mais après, le code "saute" à la gestion d'erreurs et j'ai un
message vbOkOnly :"Trop de champs définis"

Merci d'avance si qqu'un a une idée...
Eric
eric.zzzz
Le #6356031
On 2 avr, 17:47, "Gilbert"
Bonjour,

As-tu essayé d'exécuter ta requête "Requete_Temporaire" pour vérif ier ?


Evidemment..O:))
J'ai réglé le probl en diminuant la longueur des chaines : j'ai
remplacé DatDernSes par DatDer, EffTotalEntrants par EfTot, etc.
J'en déduis qu'on est limité...

Michel_D
Le #6355971
Bonjour,

On 2 avr, 17:47, "Gilbert"
Bonjour,

As-tu essayé d'exécuter ta requête "Requete_Temporaire" pour vérifier ?


Evidemment..O:))
J'ai réglé le probl en diminuant la longueur des chaines : j'ai
remplacé DatDernSes par DatDer, EffTotalEntrants par EfTot, etc.
J'en déduis qu'on est limité...


Tu peux utiliser un alias pour la table car tu dois être limité sur la
longueur de la chaîne (peut-être 255 caractères), fait afficher la
longueur pour en avoir le coeur net.

L'exemple avec un alias :
Chaine = "SELECT T1.Niv, T1.Code, etc ...
[...]
Chaine3 = "FROM IndGSdo AS T1 WHERE T1.GSdo=[Formulaires]! etc ...


eric.zzzz
Le #6355821
On 2 avr, 18:39, Michel_D
Bonjour,

Tu peux utiliser un alias pour la table car tu dois être limité sur la
  longueur de la chaîne (peut-être 255 caractères), fait afficher la
  longueur pour en avoir le coeur net.

L'exemple avec un alias :
Chaine = "SELECT T1.Niv, T1.Code, etc ...
[...]
Chaine3 = "FROM IndGSdo AS T1 WHERE T1.GSdo=[Formulaires]! etc ...


Merci, je ferais un essai...

eric.zzzz
Le #6353041
Tu peux utiliser un alias pour la table car tu dois être limité sur la
  longueur de la chaîne (peut-être 255 caractères), fait afficher la
  longueur pour en avoir le coeur net.


Effectivement, ça ne marche que si la longeur du code SQL est < 255.
J'ai l'impression qu'il n'y a aucune solution dans ce cas là...

Publicité
Poster une réponse
Anonyme