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

C++Builder Discussion :

Relier une BD


Sujet :

C++Builder

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 62
    Par défaut Relier une BD
    Bonjour tout le monde, je développe un programme à l'aide de C++ Builder CodeGear 2009, j'ai terminé l'interface mais il m'en reste la base de donnée qui doit être relié avec l'interface ....
    Le travail consiste à :
    -Cliquer sur un bouton, pour en créer un autre dynamiquement, ce qui est fait.
    Chaque bouton créé sera un processus à stocker dans la base de donnée.
    -Cliquer sur un bouton dynamique engendre l'ouverture d'une nouvelle fenêtre où entrer les informations dans des DBEtdit.
    -Un processus se compose de trois types d'enregistrement: Un enregistrement père est requis pour chaque processus, les deux autre sont optionnel (0 ou plusieurs enregistrements enfants, et 0 ou un seul enregistrement mère).
    chaque enregistrement comporte plusieurs information (champs) à remplir dans différentes fenêtre associé à chaque type d'enregistrements.
    J'espère que j'ai bien détaillé mon problème, merci à vous d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    Une petite question comme ça, chiti, c'est un travail pour l'école que tu dois faire ou tu fais ça pour t'amuser?

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 62
    Par défaut
    Non, c'est pas pour l'école, je suis en deuxième année informatique générale, donc, ce genre de trucs est hors de notre porté, et ce n'est pas pour m'amuser non plus !

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Hello
    Chaque bouton créé sera un processus à stocker dans la base de donnée.
    que veut tu stocker en base de donnée le PID qui je le rappelle n'est valable que pendant la durée du process

    Cliquer sur un bouton dynamique engendre l'ouverture d'une nouvelle fenêtre où entrer les informations dans des DBEtdit.
    Quelle est est ton objectif final ?
    Les données sotckées dans ta BD doivent elle être utisées pour recrèer a nouveau les process créés auparavant ?

    Un peu de code que tu a déja crées nous permettrait de mieux d'aider

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 62
    Par défaut
    Voici le code de Form1 (Form principale)


    Unit1.h
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <Menus.hpp>
    #include <DBGrids.hpp>
    #include <Grids.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    	TPageControl *PageControl1;
    	TTabSheet *TabSheet1;
    	TButton *Button1;
    	TButton *Button2;
    	TButton *Button3;
    	TButton *Button4;
    	TButton *Button5;
    	TButton *Button6;
    	//TButton *MonBouton1;
    	TTabSheet *TabSheet2;
    	TPageControl *PageControl2;
    	TTabSheet *TabSheet3;
    	TTabSheet *TabSheet4;
    	TTabSheet *TabSheet5;
    	TTabSheet *TabSheet6;
    	TTabSheet *TabSheet7;
    	TTabSheet *TabSheet8;
    	TMainMenu *MainMenu1;
    	TMenuItem *Fichier1;
    	TMenuItem *Quitter1;
    	TMenuItem *Edition1;
    	TMenuItem *Aide1;
    	TMenuItem *Executer1;
    	TDBGrid *DBGrid1;
    	TDBGrid *DBGrid2;
    	TDBGrid *DBGrid3;
    	TDBGrid *DBGrid4;
    	TDBGrid *DBGrid5;
    	TDBGrid *DBGrid6;
    	void __fastcall Button1Click(TObject *Sender);
    	void __fastcall Button2Click(TObject *Sender);
    	void __fastcall Button3Click(TObject *Sender);
    	void __fastcall Quitter1Click(TObject *Sender);
    	void __fastcall FormCreate(TObject *Sender);
     
     
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
    	__fastcall TForm1(TComponent* Owner);
    	TButton *MonBouton1;
    	TButton *MonBouton2;
    	TButton *MonBouton3;
    	TButton* A;
    	TButton* B;
    	TButton* C;
    	void __fastcall MonBouton1Click(TObject *Sender);
    	void __fastcall MonBouton2Click(TObject *Sender);
    	void __fastcall MonBouton3Click(TObject *Sender);
    	void __fastcall TForm1::MonBouton1MouseMove(TObject *Sender, TShiftState, int, int);
    	void __fastcall TForm1::MonBouton2MouseMove(TObject *Sender, TShiftState, int, int);
    	void __fastcall TForm1::MonBouton3MouseMove(TObject *Sender, TShiftState, int, int);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    Unit1.cpp

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "TBouton.cpp"
    #include "Unit2.h"
    #include "Unit3.h"
    #include "Unit4.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    //---------------------------------------------------------------------------
    TForm1 *Form1;
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
     
    //---------------------------------------------------------------------------
    int creation=1, etape=1, fin=1;
    int leftCre = 300, topCre=0, topEta = 0;
    String trait = "___________________________";
    UnicodeString nom = "Création";
    UnicodeString nom2 = "Etapes";
    UnicodeString nom3 = "Fin";
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    //Ce bouton permet de créer des boutons création autant qu'on veut.
    	if (topEta > topCre)
    		topCre = topEta;
    	topCre += 50;
    	MonBouton1 = new TButton(this);
    	MonBouton1->Left = leftCre;//Definir la position du bouton
    	MonBouton1->Top = topCre;
    	MonBouton1->Parent = Form1;//Définir le conteneur du bouton
    	MonBouton1->Height = 25;
    	MonBouton1->Width = 100;
    	MonBouton1->Caption = "Création"+IntToStr(creation);//Le nommer suivant le nombre de création
    	creation ++;
    	MonBouton1->OnClick = MonBouton1Click;//Gérer l'événement du clique de la souris
    	MonBouton1->OnMouseMove = MonBouton1MouseMove;//Gérer l'evt du mouvement de la souris enfoncée.
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    //Ce bouton permet de créer des bouton étapes autant qu'on veut.
    	etape=creation-1;
    	if (topCre <= topEta)
    		topEta += 50;
    	else
    		topEta = topCre;
    	MonBouton2 = new TButton(this);
    	MonBouton2->Top = topEta ;
    	MonBouton2->Left = leftCre + 150;
    	MonBouton2->Parent = Form1;
    	MonBouton2->Caption = "Etape"+IntToStr(etape);
    	MonBouton2->Height = 25;
    	MonBouton2->Width = 100;
    	TLabel *MonLabel;//Création d'un lien visuel du bouton etapes avec la dernière création
    	MonLabel = new TLabel(this);
    	MonLabel->Top = topCre;
    	MonLabel->Left = leftCre;
    	MonLabel->Caption = trait;
    	MonLabel->Parent = Form1;
    	MonBouton2->OnClick = MonBouton2Click;
    	MonBouton2->OnMouseMove = MonBouton2MouseMove;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    //Ce bouton permet de créer des bouton fin autant qu'on veut.
    	MonBouton3 = new TButton(this);
    	MonBouton3->Left = leftCre + 300;
    	MonBouton3->Top = topEta;
    	MonBouton3->Parent = Form1;
    	MonBouton3->Caption = "Fin"+ IntToStr(etape);
    	MonBouton3->Height = 25;
    	MonBouton3->Width = 100;
    	TLabel *MonLabel;//Création d'un lien visuel du bouton fin avec la dernière étape.
    	MonLabel = new TLabel(this);
    	MonLabel->Top = topEta;
    	MonLabel->Left = leftCre + 150;
    	MonLabel->Caption = trait;
    	MonLabel->Parent = Form1;
    	MonBouton3->OnClick = MonBouton3Click;
    	MonBouton3->OnMouseMove = MonBouton3MouseMove;
    }
    //---------------------------------------------------------------------------
    //La création du bouton Creation se fait normalement, la création du bouton Etape sera
    //Just à coté du dernier bouton Cration qu'on a ajouté, et la création du bouton Fin sera
    //just à coté du dernier bouton Etapes créé.
     
    void __fastcall TForm1::MonBouton1Click(TObject *Sender)
    {
    	A = (TButton*) Sender;
    	Form2->Show();
    	//Afficher la fenêtre "Création"
    }
     
    void __fastcall TForm1::MonBouton2Click(TObject *Sender)
    {
    	B = (TButton*) Sender;
    	Form3->Show();
    	//Afficher la fenêtre "Etapes"
    }
     
    void __fastcall TForm1::MonBouton3Click(TObject *Sender)
    {
    	C = (TButton*) Sender;
    	Form4->Show();
    	//Afficher la fenêtre "Fin"
    }
     
    void __fastcall TForm1::MonBouton1MouseMove(TObject *Sender, TShiftState, int, int)
    {
       // traitement du déplacement du bouton Création
       A = (TButton*) Sender;
       ReleaseCapture();
       SendMessage(A->Handle, WM_SYSCOMMAND, 0xF012, 0);
     
    }
    void __fastcall TForm1::MonBouton2MouseMove(TObject *Sender, TShiftState, int, int)
    {
       // traitement du déplacement du bouton Etape
       B = (TButton*) Sender;
       ReleaseCapture();
       SendMessage(B->Handle, WM_SYSCOMMAND, 0xF012, 0);
     
    }
    void __fastcall TForm1::MonBouton3MouseMove(TObject *Sender, TShiftState, int, int)
    {
       // traitement du déplacement du bouton Fin
       C = (TButton*) Sender;
       ReleaseCapture();
       SendMessage(C->Handle, WM_SYSCOMMAND, 0xF012, 0);
     
    }
     
     
     
    //---------------------------------------------------------------------------
     
     
    void __fastcall TForm1::Quitter1Click(TObject *Sender)
    {
    Form1->Close();
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     
    }

  6. #6
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Ok pour le code
    aprés conpilation de ton code:
    mes constats:
    click sur button1 provoque la création d'un bouton Création incrémenté avec le nombre de click
    le (s)click sur les boutons créés provoque l'affichage de la fenêtre création
    il est possible de déplacer dynamiquement ces boutons

    click sur button2 provoque la création d'un bouton Etape avec une valeur égale au dernier bouton création -1
    le (s)click sur les boutons créés provoque l'affichage de la fenêtre Etapes
    il est possible de déplacer dynamiquement ces boutons

    click sur button3 provoque la création d'un bouton Fin avec une valeur égale au dernier bouton création -1
    le (s)click sur les boutons créés provoque l'affichage de la fenêtre Fin
    il est possible de déplacer dynamiquement ces boutons

    mais je ne vois nulle part la création de process?
    Que veux tu exactement faire avec une base de donnée ?
    veux tu faire de la sérialisation de manière à recréer automatiquement les boutons et evt autres élèments créés dynamiquement à partir d'un fichier

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 62
    Par défaut
    Oui, c'est à peu près ça! Je souhaite que, lors de la connexion avec la base de données, la restauration de tous les boutons déjà créés ... Mais le problème, c'est que je suis arrivé à ce stade, je n'ai pas pu faire plus, ni la base de donnée, ni rien d'autre.

  8. #8
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Dans ce cas pas besoin de base de donnée
    il existe des classes dans la VCL te permettant de faire de la sérialisation
    TFiler,Treader,TWriter
    je te laisse le soin d'étudier l'aide d'embarcadero

    http://docwiki.embarcadero.com/Libra...Classes.TFiler

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  9. #9
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    Dans ce cas pas besoin de base de donnée
    il existe des classes dans la VCL te permettant de faire de la sérialisation
    TFiler,Treader,TWriter
    je te laisse le soin d'étudier l'aide d'embarcadero

    http://docwiki.embarcadero.com/Libra...Classes.TFiler

    cdlt


    Tu y vas pas de main morte, cqfd, y a même pas d'exemple!

    Na, moi je voterais plutôt que chiti y aille avec un bon vieux fichier ini qu'il pourrait structurer de la façon suivante:

    [Components]
    0=ButtonX
    1=ButtonY
    2=ButtonZ

    [ButtonX]
    Caption=Un bouton X
    Top =10
    Left=20

    [ButtonY]
    Caption=Un autre bouton
    Top=50
    ....

    Au démarrage, il lit le fichier INI pour recréer les composants, à la terminaison il parcourt la forme et sauve les propriétés importantes des composants.

  10. #10
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Guyt

    il suffit de faire une petit tour sur le Net
    Goggle Serialisation Deplhi il ya des exemples à adapter
    Embarcadero donne également des exemples et de même sur www.developpez .com

    le But de ce forum n'est pas de pondre des solutions toutes faites mais plutôt de proposer des pistes de résolution à partir d'un code existant non fonctionnel.

    je serai intéressé d'étudier le code que tu nous proposera prochainement pour résoudre le problème de Chiti


    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  11. #11
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    djm,

    Faudrait que je regarde ça de plus près, mais dans la dizaine de solutions que j'ai proposé ici depuis que je fréquente ce forum, aucune n'a été retenue (ni même remarqué, la plupart du temps), alors un gars finit par comprendre que ses solutions ne sont pas pertinentes

    Mais bon, juste pour le plaisir, voici comment je m'y étais pris pour résoudre un problème qui ressemblait à celui de Chiti. En gros, il s'agissait d'un mini environnement de programmation visuel avec un petit langage que j'avais développé pour les besoins très spécifiques du client.

    Les composants (très très customs) que l'utilisateur avait déposés sur sa feuille de programmation étaient donc sauvegardés dans un fichier ini. Si je me limite aux boutons de chiti et qu'il y a eu deux boutons placés sur la forme, le .ini ressemblerait à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [Composants]
    0=Button1
    1=Button2
     
    [Button1]
    Top=20
    Left=100
    Caption="bouton un"
     
    [Button2]
    Top=40
    Left=180
    Caption="bouton deux"
    Voici grosso modo le code de la méthode "ReadUserComponents" qui va récréer les composant à partir du fichier ini:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    void TForm1::ReadUserComponents(AnsiString fileName)
    {
       TIniFile* iniFile ;
       AnsiString keyVal ;
       bool done ;
       int key ;
     
       iniFile = new TIniFile(fileName) ;
       done = false ;
       key = 0 ;
       while (!done)
       {
          keyVal = iniFile.ReadString("Composants",AnsiString(key),"") ;
          done = keyVal.IsEmpty() ;
          if (!done)
          {
             CreateComponent(iniFile,keyVal) ;
             key++ ;
          }
       }
       delete iniFile ;
    }
     
    void TForm1::CreateComponent(TIniFile* iniFile, AnsiString name)
    {
      TButton button ;
     
      button = new TButton(this) ;
      button->Parent = this ;
      button->Name = name ;
      button->Top = iniFile->ReadInteger(name,"Top",0) ;
      button->Left = iniFile->ReadInteger(name,"Left",0) ;
      button->Caption = iniFile->ReadString(name,"Caption","") ;
      button->Visible = true ;
    }
    Pour sauvegarder, bin c'était l'inverse, je parcourais la feuille de programmation pour extraire les propriétés des composants pour sauver ça dans un ini.

    Si c'était à refaire, peut-être bien que je sauverais ça en XML, ça ferait plus moderne.

  12. #12
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Guyt,

    comme indiqué précédement c'est à l'auteur du POST de faire les recherches nécessaires pour trouver une esquisse de solution à son problème, il ne nous appartient pas de fournir un réponse toute cuite.

    Mais parce que je suis bon prince voici un post équivalent marqé résolu
    sur le forum Delphi

    http://www.developpez.net/forums/d936693/environnements-developpement/delphi/composants-vcl/d2007-serialisation-composant/


    ou

    http://www.developpez.net/forums/d22...serialisation/
    PS: merci de respecter mon pseudo qui est DjmSoftware

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  13. #13
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    PS: merci de respecter mon pseudo qui est DjmSoftware

    cdlt
    désolé pour le diminutif, ça se voulait amical, mais je recommencerai pas.

    j'en profite pour vous souhaiter un bel été, quant à moi, c'est la cote ouest des states qui m'attend (je m'en vais faire du windsurf sur la Columbia River, Oregon).

    au plaisir!
    Guyt

  14. #14
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Un excellent été à toi également
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  15. #15
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 62
    Par défaut
    Bonjour tout le monde, je vous remercies pour vos réponses.
    je m'excuse pour le retard, j'e galère un peu avec les examens
    Bon ! Pour la sortie du programme, je souhaite sauvegarder les informations dans UNE BASE DE DONNÉES, rien d'autre, le principe du projet dit ceci !
    C'est qu'il faut ensuite exécuter un certain simulateur pour transformer la sortie vers un fichier Excel, ceci n'est point important pour l'instant, car je n'ai même pas pu faire la base de données.
    Juste une petit point, que vous aller estimer débile, mais j'ai téléchargé beaucoup de fichier qui paraît être l’installable de Paradoxe, ou Oracle ou je sais pas trop moi, mais aucun m'est paru comme celui qu'on utilise à la fac ....
    Pourriez-vous me proposer un logiciel gratuit?!
    J'ai mis un brouillon pour la base de données que je veux créer, j'espère que vous allez me donner votre avis la dessus.
    J'utilise la syntaxe de ORACLE, alors j'espère bien trouver le logiciel correspondant.
    CODE ORCL:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    -- ***********************************************
    --            Table Simulation	
    -- ***********************************************
     
    create table Simulation
    (
    	ID-Simulation INTEGER PRIMARY KEY,
    );
     
    -- ***********************************************
    --            Table Processus	
    -- ***********************************************
     
    create table Processus
    (
    	ID-Processus INTEGER,
    	ID-Simulation INTEGER references Simulation(ID-Simulation),
    	NOM CHAR(50),
    );
     
    -- ***********************************************
    --            Table Création	
    -- ***********************************************
     
    create table Creation
    (
    	ID-CREATION 		INTEGER  	PRIMARY KEY,
    	ID-PROCESSUS 		INTEGER 	references Processus(ID-Processus),
    	NOM 				CHAR(50),
    	TYPE-D_ENTITE 		CHAR(50),
    	TYPE 				CHAR(2)						default RN,
    	VALEUR 				INTEGER		not null		default 1,
    	UNITE 				CHAR(3)						default HRS,
    	ENTITE-PAR-ARRIVEE 	INTEGER		not null		default 1,
    	Max-Arrivée 		INTEGER,
    	);
     
    -- ***********************************************
    --			Table Etape
    -- ***********************************************
     
    create table Etape
    (
    	ID-Etape			INTEGER 	PRIMARY KEY,
    	ID-PROCESSUS 		INTEGER 	references Processus(ID-Processus),
    	NOM 				CHAR(50),
    	UNITE				CHAR(3),
    	DUREE				INTEGER,
    	);
     
    -- **********************************************
    --			Table Fin
    -- **********************************************
     
    create table Fin
    (
    	ID-Fin				INTEGER		PRIMARY KEY,
    	ID-PROCESSUS 		INTEGER 	references Processus(ID-Processus),
    	NOM					CHAR(50),
    	);
     
    -- *********************************************
    --			Table Entité
    -- *********************************************
     
    create table Entité
    (
    	ID-ENTITE			INTEGER 	PRMIARY KEY,
    	TYPE-D_ENTITE		CHAR(50),
    	);
     
    -- *********************************************
    --			Table Ensemble des ressources
    -- *********************************************
     
    create table ENSRES
    (
    	ID-ENSRES			INTEGER		PRIMARY KEY,
    	NOM					CHAR(50),
    	QUANTITE			INTEGER,
    	);
     
    -- *********************************************
    --			Table Ressource
    -- *********************************************
     
    create table RESSOURCES
    (
    	ID-RESSOURCE		INTEGER 	PRIMARY KEY,
    	NOM					CHAR(50),
    	TYPE				CHAR,
    	CAPACITE			INTEGER,
    	);
    Si vous voulez des captures d'écran sur les différentes fenêtres que j'ai créé?
    Cordialement.

  16. #16
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    DjmSoftware
    le But de ce forum n'est pas de pondre des solutions toutes faites mais plutôt de proposer des pistes de résolution à partir d'un code existant non fonctionnel.
    Je suis d'accord avec toi mais la " TFiler,Treader,TWriter " sont tres mal documentes et les exemples ne sont pas legion, de plus si il se lance dans la gestion d'une base de donnees et d'Excel, il n'a apparament pas le niveaux suffisant pour s'en sortir
    J'ai fais une recherche sur le net et trouve un code que j'ai adapte il sauvegarde un TButton dans un fichier et le recupere et l'affiche
    Sur la Form Deux TButtons et deux TLabels
    le .cpp
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "assert.h" // <----- ne pas oublier
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    // lien <a href="http://www.44342.com/cpp-builder-f1297-t123-p1.htm" target="_blank">http://www.44342.com/cpp-builder-f1297-t123-p1.htm</a>
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString filename = "c:\\toto.txt";
    assert(Button1 != NULL);
    assert(Button1->Owner != NULL);
    TFileStream *fs = new TFileStream(filename, fmOpenWrite | fmCreate);
    TWriter *Writer = new TWriter(fs,4096);
    // specify the Root component
    Writer->Root = Button1->Owner;
    // write the component
    Writer->WriteComponent((TComponent*)Button1);
    // return the number of bytes written
    Label1->Caption = Writer->Position;
    delete Writer;
    delete fs;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    AnsiString filename = "c:\\toto.txt";
    assert(Button1 != NULL);
    assert(Button1->Owner != NULL);
    TFileStream *fs = new TFileStream(filename, fmOpenRead);
    TReader *Reader = new TReader(fs,4096);
    // set Root, Owner, and Parent
    Reader->Root = Button1->Owner;
    Reader->Owner = Button1->Owner;
    TControl* Control = dynamic_cast<TControl*>(Button1);
    if (Control)
            {
            Reader->Parent = Control->Parent;
            }
    // remove the existing component
    delete Button1;
    Button1 = NULL;
    // load the stored component
    Reader->BeginReferences();
    try
            {
           ((TComponent*)Button1) = Reader->ReadComponent(NULL);
            }
    __finally
            {
            Reader->FixupReferences();
            Reader->EndReferences();
            }
    // return the number of bytes read
    Label2->Caption = Reader->Position;
    delete Reader;
    delete fs;
    }
    //---------------------------------------------------------------------------
    chiti
    Si tu veux utiliser un base de donnees avec Excel je pense que tu devrais choisir ADO ou SQL ( la je ne suis pas sur )

  17. #17
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 62
    Par défaut
    Non, il ne s'agit pas de base de données avec Excel, mais une base normale, mais après, il faut la stocker dans un fichier Excel,
    Blondelle, u peux pas me donner ton avis sur le code de la BDD que j'ai fournis?
    Et sinon, quelles sont les méthodes spéciale dédiés à la manipulation des base de données en C++ Builder?

  18. #18
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Apparament tu a besion de plusieurs tables, est ce que ces tables sont liees entre elles, ou sont elles independantes?
    Personnellement j'utiliserais les composants ADO bien documentes et relativement facile a utiliser, et une base type Access comme cela tu n'a pas de composants exterieur a importer (pas toujours facile), la base type Access a l'avantage de pouvoir etre cree sans Access (par programme), la chaine de connection permet d'etre installe sur n'importe quel ordinateur
    Un exemple qui cree une base et trois champs, sur la Form un TButton un TADOConnection et un TADOCommand
    le .cpp
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    //dabord tester si la base existe, si non creer la base
     
    // "INITIALISATION DE LA BASE DE DONNEES DOSSIERS DE SOCIETE";
    Variant vADO;
    // chemin de la base extension jusque 2003 .mdb extension apres 2003 .accdb
    AnsiString FileName = ExtractFilePath(Application->ExeName)+"maBdd.mdb";
    // teste d'existance de la base
    if (FileExists(FileName.c_str()))
      {
    Form1->ADOConnection1->Connected = false;
    Form1->ADOConnection1->Close();
    DeleteFile(FileName);
      }
    // "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FileName+";";   jusque 2003
    // "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+FileName+";";  apres 2003
    // on cree une base Access sans Access vide
    //AnsiString provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+FileName+";";
    AnsiString provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FileName+";";
    vADO = Variant::CreateObject("ADOX.Catalog");
    vADO.OleFunction("create", provider.c_str());
    //===========================
    // on connecte avec ADOConnection
            Form1->ADOConnection1->ConnectionString = provider;
            Form1->ADOConnection1->LoginPrompt = false;
            Form1->ADOCommand1->Connection = Form1->ADOConnection1;
    //===========================
    // on cree une Table vide au nom de Dossier
            Form1->ADOCommand1->CommandText = "CREATE TABLE Dossier";
            Form1->ADOCommand1->Execute();
    //===========================
    // on cree le champ ID_Ste defini comme compteur
            Form1->ADOCommand1->CommandText = "ALTER TABLE Dossier ADD ID_Ste COUNTER";
            Form1->ADOCommand1->Execute();
    // on defini le champ compteur ID_Ste en clef primaire
            Form1->ADOCommand1->CommandText = "CREATE UNIQUE INDEX idxPrimary ON Dossier (ID_Ste) WITH PRIMARY";
            Form1->ADOCommand1->Execute();
    // on groupe les champs par Bevel
    // pour le type BOOLEAN utiliser YESNO
            AnsiString ChampSte;
            ChampSte = "ALTER TABLE Dossier ADD Instance YESNO,";
            ChampSte += "Gestdos YESNO";
            Form1->ADOCommand1->CommandText = ChampSte;
            Form1->ADOCommand1->Execute();
    }
    //---------------------------------------------------------------------------

  19. #19
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    hello

    @chiti: la syntaxe employée dans la création de table est peut-être compatible Oracle mais certainement pas Access

    tu peux regarder tu côté de mysql qui est OpenSource ou de SQLLite
    Radstudio offre via DB express la possibilité d'accéder à Mysql.

    Concernant SqlLite il existe également des composants gratuits:
    http://www.aducom.com/cms/e107_plugi...topic.php?3052
    il faut s'incrire sur le site pour télécharger la dernière version

    il te restera ensuite le principal a savoir:
    1. la finalité de ta base de donnée
    2. comment veux tu y accéder


    Non, il ne s'agit pas de base de données avec Excel, mais une base normale, mais après, il faut la stocker dans un fichier Excel,
    pourquoi veux tu stocker 2 fois des données ne s'agit-il pas d'un export de données en vue de faire du reporting ?
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

Discussions similaires

  1. peut-on relier une vue avec une Table?
    Par geof dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 04/03/2008, 16h27
  2. Relier une carte mère et un PC
    Par Flophx dans le forum Matériel
    Réponses: 4
    Dernier message: 29/12/2007, 13h02
  3. comment relier une table qui a deux maîtres
    Par tchimou dans le forum Bases de données
    Réponses: 7
    Dernier message: 07/05/2007, 21h15
  4. Réponses: 1
    Dernier message: 12/04/2007, 19h58
  5. Réponses: 1
    Dernier message: 25/02/2006, 08h30

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