IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

ExcelApplication et requête SQL


Sujet :

Composants VCL Delphi

  1. #1
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut ExcelApplication et requête SQL
    Salut à tous,

    Je suis en train d'apprendre l'exportation des données vers excel. J'ai crée mon classeur, les colonnes. Maintenant je veux affecter les valeur de la requête à chaque colonne, et c'est là que je me bute.
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    MonClasseur := ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);
    ExcelApplication1.SheetsInNewWorkbook[0]:=8;
    MonClasseur:=ExcelApplication1.Workbooks.Add(EmptyParam,0);
    Monclasseur.Sheets.Add(EmptyParam,EmptyParam,1,xlWBATWorksheet,0);
    MaFeuille:=MonClasseur.Worksheets[1] as _worksheet;
    MaFeuille:=MonClasseur.Worksheets['feuil1'] as _worksheet;
    Query_Sit_Agt.sql.Clear;
    Query_Sit_Agt.sql.Add('Select agent.a_nom as nom, agent.a_prenom as prenom , agent.a_matricule as matricule, agent.a_charge as charge, agent.a_dotation_med as dotation');
    Query_Sit_Agt.sql.Add(', sum(f_charge_sonabel) as f_conso, a_dotation_med - sum(f_charge_sonabel) as f_solde from agent, fiche');
    Query_Sit_Agt.sql.Add('Where fiche.f_Annee = ' + QuotedStr(Edit1.text));
    Query_Sit_Agt.sql.Add('And agent.centre = 362');
    Query_Sit_Agt.sql.Add('And agent.a_matricule = Fiche.a_matricule');
    Query_Sit_Agt.sql.Add('Group by agent.a_nom, agent.a_prenom, agent.a_matricule, a_charge, a_dotation_med') ;
    Query_Sit_Agt.sql.Add('Order by agent.a_matricule');
    Query_Sit_Agt.Open;
    MaFeuille.Cells.Item[1,1].Value:='NOM';
    MaFeuille.Cells.Item[1,2].Value:='PRENOM';
    MaFeuille.Cells.Item[1,3].Value:='DOTATION';
    MaFeuille.Cells.Item[1,3].Value:='CHARGE';
    MaFeuille.Cells.Item[1,4].Value:='CONSO';
    MaFeuille.Cells.Item[1,5].Value:='SOLDE';
    MaFeuille.Range['A2', 'A200'].Value:= Query_Sit_Agt.fieldbyname('nom').AsString;
    MonClasseur.Save(0);
    MonClasseur.SaveAs('c:\tuto\excel.xls',
    EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
    xlNoChange,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
    Mon problèmes se trouve à la ligne en bleu. J'ai remarquer que le même se requête sur toute la colonne jusqu'à la ligne 200. J'ai pris 200 car je connaît à peu près le nombre de lignes ramené par la requête.
    Comment faire de tel sorte à affecter le résultat de la requête à chaque colonne sans problème. Merci pour toute aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    cette question a été abordé là : http://www.developpez.net/forums/d71...tion-feuilles/

    je t'invite à y jeter un coup d'œil et bonne chance.

  3. #3
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    Salut Just-Soft,

    Merci pour le lien. Je l'ai parcouru mais je trouve que c'est une discussion non achevé et lila23 n'a pas trouvé la solution à son problème...
    J'ai essayé d'adapter mon code à celui proposé par ero-sennin mais j'ai des erreurs à la ligne bleu : [Erreur] Unit1.pas(78): Types incompatibles et [Erreur] Unit1.pas(83): Identificateur non déclaré : 'AddValues'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while not Query_Sit_Agt.Eof do
            begin
              if vWorksheet = NIL then
                 //acceder a la première feuillle
                 vWorksheet := vXLWorkbook.WorkSheets['feuil1']
              else
                vWorksheet := vXLWorkbooks.Add;
                 AddValues( vWorksheet );
            end;

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo