Bonjour tout le monde,
J'aurais voulu savoir s'il est possible d'importer des données d'un fichier (xls ou csv) dans un ClientDataSet. Et si oui, comment faire ?
Merci
Bonjour tout le monde,
J'aurais voulu savoir s'il est possible d'importer des données d'un fichier (xls ou csv) dans un ClientDataSet. Et si oui, comment faire ?
Merci
Je dis peut-être n'importe quoi mais...
As-tu essayé de faire une connexion ODBC de type "Excel Files" et d'ouvrir le fichier à l'aide d'un TADOQuery (Microsoft OLE DB Provider for ODBC Driver) connecté à un TDataSetProvider connecté au TClientDataSet ?
J'ai jamais essayé mais j'aimerais connaître le résultat
Merci, je vais essayer cela demain, voir ce que ça donne en espérant que...
Je viendrais dire quoi
J'y suis pas arrivé avec cette solution.
J'ai essayé avec un ClientDataSet et l'appel à LoadFromFile() d'un clientdataset
mais il me dit "Non corcordance avec le paquet de données"
Salut!Envoyé par Delhio
LoadFromFile ne sert pas à faire ce que tu veux. LoadFromFile ouvre un fichier binaire ou XML et le charge dans le ClientDataSet. Ton fichier il n'est ni binaire ni XML, c'est un fichier Excel.
Je connais 3 façons de remplir un objets TClientdataSet.
- Tu peux le remplir à l'aide de LoadFromFile si tes données concordent (généralement elles proviennent d'un autre ClientDataSet qui a fait SaveToFile). C'est ce que tu as essayé.
- Tu peux ajouter manuellement les colonnes dans le ClientDataSet et faire des Append/Post manuellement pour y insérer tes données ligne par ligne.
- Tu peux connecter le TClientDataSet à un TDataSetProvider (via la propriété ProviderName du TClientDataSet), connecter le TDataSetProvider à un objet TDataSet (un TTable, un TQuery, un TADOQuery, etc.) et ouvrir le ClientDataSet (TClientDataSet.Open()). Quand tu fais ça, le ClientDataSet demande à son provider de lui fournir des données. Ce dernier ouvre donc le DataSet (dans ton cas c'est un query qui lit un fichier Excel), copie les données dans le ClientDataSet et ferme le DataSet.
Je crois que le gros de la tâche est d'ouvrir un Query sur un fichier Excel. Je n'ai pas testé mais je sais qu'une fois fait (une fois que ton ADOQuery est capable d'ouvrir le fichier Excel) c'est un jeu d'enfant que de mettre ça dans un TClientDataSet.
Bon dev!
Tiens, j'ai pris 2 minutes et voici ce qui fonctionne parfaitement sur mon poste.
Mets un composant TADOQuery, TDataSetProvider et TClientDataSet sur ta fiche.
Change la propriété ConnectionString de ADOQuery1 pour :
"C:\Book1.xls", c'est le nom du fichier Excel
Code : Sélectionner tout - Visualiser dans une fenêtre à part Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;DBQ=C:\Book1.xls;DefaultDir=C:;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;";Initial Catalog=C:\Book1.xls
Change la propriété SQL de ADOQuery1 pour :
"Sheet1". c'est le nom de mon premier tableur dans le fichier (Attention! Ça prend le $).
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM [Sheet1$]
Change la propriété DataSet de DataSetProvider1 à ADOQuery1.
Change la propriété ProviderName de ClientDataSet1 à DataSetProvider1.
Change la propriété Active de ClientDataSet1 à true.
...et voilà!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager