|
Requetes sur fichier XLS importé |
Iniciado por sverin, 18,oct. 2004 20:05 - 3 respuestas |
| |
| | | |
|
| |
Publicado el 18,octubre 2004 - 20:05 |
Au secours !
Je cherche un exemple de code d'importation d'un fichier EXCEL, permettant la création automatique d'un fichier HF
Exemple : 1 L'utilisateur choisit un fichier EXCEL 2 L'utilisateur clic sur bouton "IMPORT" 3 Le code génére un fichier HF 4 Des requetes travaillent sur ce fichier HF 5 L'utilisateur edite des etats basés sur ces requetes
Je sais pas si je suis claire, ou si c'est compliqué, mais je ne trouve rien !!! |
| |
| |
| | | |
|
| | |
| |
Publicado el 19,octubre 2004 - 11:48 |
Salut,
Le problème est intéressant. J'espère que tu trouveras une solution satisfaisante. Voici la mienne.
Si je comprend bien, le fichier Excel est quelconque. On ne connait pas sa structure. Donc forcément, c'est la même chose pour le fichier HF, il ne peut pas être décrit dans une analyse.
Voici ce qui me semble réalisable dans ce contexte:
- décrire une connexion OLEDB avec HDecritConnexion sur le provider hOLEDBAccess2000 - ouvrir la connexion avec HouvreConnexion A ce stade, on peut manipuler le fichier Excel, mais on ne connait pas sa structure, donc - utiliser XLSouvre, xlsNbColonne, XLSTitreColonne, XLSTypeColonne pour récupérer la structure. - construire une requête SQL - exécuter cette requête avec HexecuteRequeteSQL et le paramètre HrequêteSansCorrection.
Dans cette solution, on a plus besoin d'un fichier HF.
Ciao Pat http://wdgotcha.atspace.com |
| |
| |
| | | |
|
| | |
| |
Publicado el 19,octubre 2004 - 16:47 |
Merci à toi Pat
Mais existe t-il une fonction plus simple, du type VBA:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "NomTableCréée", "EmplacementFichier\Nomfichier.xls", EnteteColonne = False, range
J'ai suivi ton conseil mais rien ne se passe :
Sais_Fic = Champ de saisie (chemin du fichier\Nom du fichier.xls) ConnectXLS = Nom de ma connexion Tableimport = Table mémoire dans laquelle je décris mon fichier EXCEL ReqClient = Nom de la requete que je créé Table1 = Table mémoire dans laquelle je voudrais afficher le resultat de ma requete _________________________________________________ ReqClient est une Source de Données
SI PAS HDécritConnexion("ConnectXLS","","",Sais_Fic,hOledbAccess2000,,hOledbExcel2000) ALORS Erreur(HErreurInfo()) SINON HOuvreConnexion("ConnectXLS") Sablier SI HExécuteRequêteSQL(ReqClient,"SELECT * FROM tableimport") ALORS HLitPremier(ReqClient) SI PAS HEnDehors(ReqClient) ALORS FichierVersTableMemoire(Table1, ReqClient) FIN FIN FIN
Sablier(Faux) |
| |
| |
| | | |
|
| | |
| |
Publicado el 19,octubre 2004 - 18:15 |
Salut Sébastien,
Dommage que tu te sois arrêté, tu y étais presque ...
Voici ce que j'ai testé et qui marche :
ReqClient est une Source de Données
SI PAS HDécritConnexion("ConnectXLS","","","export.xls","",hOledbExcel2000,hOLecture) ALORS Erreur(HErreurInfo()) SINON HOuvreConnexion("ConnectXLS") // pour voir le nom de la table ici c'est A$ // je n'ai pas mis le code pour extraire ce nom Trace(HListeFichier("ConnectXLS")) SI HExécuteRequêteSQL(ReqClient,"ConnectXLS",hRequêteSansCorrection,"SELECT * FROM [A$]") ALORS HLitPremier(ReqClient) SI PAS HEnDehors(ReqClient) ALORS ConstruitTableFichier(Table1,ReqClient,taRemplirTable) FIN SINON Erreur(HErreurInfo()) FIN FIN
ciao Pat http://wdgotcha.atspace.com |
| |
| |
| | | |
|
| | | | |
| | |
|