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

Delphi Discussion :

Dataset à Tableau (array)


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut Dataset à Tableau (array)
    Salut tout le monde


    J'ai une fonction (mafonction) qui prend en paramètre un tableau d'objets: ces objets sont définis par un constructeur genre: NouvelObjet(ajouter(item1, item2))
    Ce que je voudrais faire c'est extraire les items (item1, item2) d'une base de données (dataset avec deux colonnes: colonneitem1-colonneitem2), créer les objets puis passer le tableau d'objets à ma fonction.Comment dois-je faire?


    Merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Cela ressemble à un modèle d'objet persistant, ... maintenant, il faut gérer les ID des objets, ... on manque un peu de code (ceux de l'objet ancêtre commun aux objets DB) ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouvelObjet(ajouter(item1, item2))
    , cela ne ressemple pas à un constructeur ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Par défaut
    bonjour

    il me semble avoir vu le même post sur le forumBDD
    http://www.developpez.net/forums/sho...d.php?t=328026

    celà risque de disperser les réponses!
    à plus

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut Désolé
    Citation Envoyé par banban54
    bonjour

    il me semble avoir vu le même post sur le forumBDD
    http://www.developpez.net/forums/sho...d.php?t=328026

    celà risque de disperser les réponses!
    à plus
    --> Je savais pas où mettre mon post alors je l'ai mis dans les deux topics qui me semblaient correspondre.
    Désolé: je supprime l'autre post tout de suite

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut Dataset à Array d'objets
    Citation Envoyé par ShaiLeTroll
    Cela ressemble à un modèle d'objet persistant, ... maintenant, il faut gérer les ID des objets, ... on manque un peu de code (ceux de l'objet ancêtre commun aux objets DB) ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouvelObjet(ajouter(item1, item2))
    , cela ne ressemple pas à un constructeur ...
    --> tout à fait d'accord :p j'ai mal choisi l'exemple.
    Oubliez la déclaration de l'objet: ma question est quelles sont les étapes pour passer d'un dataset à un tableau d'objets ?

    Merci pour la réponse rapide (si je savais qu'on me répondrait aussi vite, j'aurais posé ma question plus tôt :p

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut Dataset à Array d'objets
    une piste?

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 123
    Par défaut
    Y a les instantobjects qui vont beaucoup t'aider a ce sujet.

    http://hcesbronlavau.developpez.com/ModelMakerBO/

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    effectivement, le modèle instantobjects, semble intéressant, je l'ai survolé, je n'ai pas testé l'utlisation, personne n'avait répondu à mes questions ICI

    sinon, pour ta question, il te faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TMNBaseObject = class(TPersistent) // MN comme MichelN, trouve ton acronyme pour ne pas mélanger tes objets avec ceux de Delphi ou de lib externe
    ... // fonctionnalité de base, ...
    public
      property TableName: string read FTableName;
    end;
    Ensuite, il te faut une Classe par Table, faisons simple pour le Moment, genre

    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
    TTableOneObject = class(TMNBaseObject)
      // fonctionnalité métier
    public
      constructor ...
    published // as-tu envie de te lancer dans le RTTI ... si oui TPersistent sinon TObject
      property ID: Int64 ...;
      property Champ1: Variant ...
      property Champ2: Variant ...
    end;
     
    constructor TTableOneObject.Create...
    begin
      inherited;
     
      FTableName := 'TableOne'; 
    end;
    Tu veux donc charger une collection (tableau d'objet) ..., maintenant c'est pas difficile, il faut décomposer les Taches ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMNBaseObject.Load(ID);
    cela lance une requête et rempli les Objets, à toi de voir ton modèle de persistance, mais c'est ici peut-être ton problème

    Ensuite tu veux faire une Collection (tu peux faire un TMNBaseObjectCollection)

    TMNBaseObjectCollection hérité d'une TObjectList Par exemple, ou tu ré invente la roue, et tu gère un Array of TObject

    TMNBaseObjectCollection.Load([1, 2]); cela va charger l'item ID 1 et l'Item ID 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TMNBaseObjectCollection.Load(const Identifiants: array of Int64);
    begin
      for I := Low(Identifiants) to High(Identifiants) do
      begin
        Self.Add(TMNBaseObject.Load(Identifiants[I]);
      end;
    end;
    Je voudrais pas te décourager, mais j'ai pondu un modèle de persistant, bon, je ne suis pas fan du principe, mais cela me faisait plaisir de le faire, avec le recul c'est un peu lourd, avec les collègues sont frustés de ne plus faire de DataSet et SQL jamais libéré ... et j'y ai passé un mois, je pense au total, du Provider DB générique (seul MySQl implémenté mais structure pour les autres prêtes), le Moteur Persistant puis le moteur d'affichage, car si plus de DataSet (grave erreur) plus de composant DB ... allez bon UzinaGaz ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut Résolu
    Merci beaucoup pour vos réponses: elles sont très intéressantes (dans un monde parfait où on aurait suffisamment de temps pour faire notre boulot dans les règles de l'art, en optimisant tout ce qui peut l'être, mais hélas, nos patrons sont tous des ******tuuuuttt**** (du moins je suis sûr que le mien en est un)
    J'ai opté pour une solution plus à ma portée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    j := MonDataset.RecordCount;
    MonDataset.First;
    SetLength(MonTableau, j); 
    for i = 0 to j do
     begin
      MonTableau[i] := FonctionQuiAjouteAuTableauApresTraitement(MonDataset.FieldbyName('Champ1').Value, MonDataset.FieldbyName('Champ2').Value, 1);
    MonDataset.Next;
    end
    //et là j'appelle ma fonction qui prend en paramètre un MonTableau
    MaFonction(montableau)
    Encore Merci à tous pour votre aide

  10. #10
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    j := MonDataset.RecordCount;
    MonDataset.First;
    SetLength(MonTableau, j);
    for i = 0 to j -1 do
    ....
    sinon il va y avoir violation..

    à plus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 00h52
  2. [Tableaux] Trier un tableau [array]
    Par clemsouz dans le forum Langage
    Réponses: 2
    Dernier message: 15/05/2006, 13h33
  3. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 13h56
  4. Tableau(Array) sans taill
    Par krfa1 dans le forum ASP
    Réponses: 4
    Dernier message: 21/09/2005, 22h31
  5. tableau array
    Par laclac dans le forum Langage
    Réponses: 8
    Dernier message: 01/09/2005, 11h04

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