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 :

Remplir BDD access a partir de StringGrid


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut Remplir BDD access a partir de StringGrid
    Bonjour
    je veut sauvegarder les données de StringGrid dans une BDD access pour cela j'ai creé un Alias dans ODBC et j'ai utilisée les composants TSession, TDatabase , TTable.
    pour remplir le premier champ "Désignation" de la table qui contient des données de type text j'ai utilisé ce code mais sa marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Form2->Table1->Edit(); // Positionne la table en mode Edition
    for(int j=1;j<14;j++)
    {
      Form2->Table1->FieldByName("Désignation")->AsString=Form2->StringGrid3->Cells[0][j];
    }
    merci d'avance pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    bonjour
    finallement mon probleme dans la conexion entre la BDD access et c++ pas dans le code.
    les etapes que j'ai suivie sont:
    j'ai creer un alias dans ODBC et j'ai selectionné ma BDD cible
    j'ai met le nom de BDD et nom d'alias dans double clique de Database1 apres la propriété connected a true.
    Pour Session1, dans l'inspecteur d'objet, j'ai saisissé le nom de la session et le meme nom dans propriété SessionName de Database1.
    en dernier j'ai relié Table1 à Session1 et Database1 par les propriétés SessionName et DatabaseName BDD,puis j'ai sélectionné la table dans la propriété TableName et j'ai met la propriété activé a true.
    quand je verifié la table je la trouve toujour vide

    est ce il ya quelque qui peut m'aidé ?

  3. #3
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Form2->Table1->Edit(); // Positionne la table en mode Edition
    for(int j=1;j<14;j++)
    {
      Form2->Table1->FieldByName("Désignation")->AsString=Form2->StringGrid3->Cells[0][j];
    }
    devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for(int j=1;j<14;j++)
    {
      Form2->Table1->Append(); 
       Form2->Table1->Edit(); // Positionne la table en mode Edition
      Form2->Table1->FieldByName("Désignation")->AsString=Form2->StringGrid3->Cells[0][j];
    }
    Form2->Table1->Post() ;
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  4. #4
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut merci beaucoup
    c'est bon avec ce code j'ai pouvé remplir ma table mais j'ai un probleme.
    dans ce cas les données de la premiere colonne et la premiere ligne de stringGrid sont fixe et les autres cases changent a chaque operation pour le sauvgardé dans la table je veut la meme chause les données de la premiere colonne de la table fixe et les autres cases changent sa depant de StringGrid
    (MATRICE) merci d'avance pour votre aide

  5. #5
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Dans ce cas, utilise FixedRow = 1 et FixedCol = 1
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  6. #6
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    sa c'est pour StringGrid ,mon probleme est dans la table je veut que le nombre de lignes de la table egale le nombre de lignes de StringGrid parce que a chaque fois que je clique sur le boutton pour remplir la table la copie se fait a nouveau mais moi je veut que les nouveaux données écrase lancien sauf la premiere colonne reste la meme j'espere que j'ai bien détaillé mon souci .merci d'avance

  7. #7
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonjour
    je reformule ma question
    je veut a chaque remplissage de la table je suprrime touts le contenu de la table apres je le remplir a nouveau pour ce la j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int j=1;j<14;j++)
    {
     
    Form2->Table1->Append();
    Form2->Table1->Edit(); // Positionne la table en mode Edition
    Form2->Table1->DataSource->DataSet->ClearFields();
    Form2->Table1->FieldByName("Désignation")->AsString =Form2->StringGrid3->Cells[0][j];
    }
    Form2->Table1->Post() ;
    il provoque une classe d'exception
    merci d'avance pour votre aide

  8. #8
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut ou est le probleme ????
    Bonjour
    pour remplir BDD access a partir de StringGrid j'ai utlisé une façon de a chaque fois supprimer touts les données de la table et la remplir par des nouveaux données pour evité la repetition pour cela j'ai utilsé ce 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
    Table1->First();
    while(!Table1->Eof)
    {
    Table1->Close();
    Table1->EmptyTable();
    Table1->Open();
    }
    for(int j=1;j<14;j++)
    {
     
    Form2->Table1->Append();
    Form2->Table1->Edit(); // Positionne la table en mode Edition
     
    Form2->Table1->FieldByName("Désignation")->AsString =Form2->StringGrid3->Cells[0][j];
    Form2->Table1->Post() ;
    }
    le probleme est ce code fonctionne que a la premiere utilisation si je refais la procedure il donne une repetion les nouveaux données n'ecrase pas l'ancien

    merci d'avance pour votre aide!!!

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Points : 196
    Points
    196
    Par défaut
    Pourquoi tu souhaites absolument supprimer puis recréer le contenu de ta table.
    Pourquoi ne pas faire simplement un update (commande SQL) de tes données ?

  10. #10
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonsoir
    merci kineton pour votre reponse, SVP expliquez moi un peu plus
    merci d'avance pour votre aide

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Points : 196
    Points
    196
    Par défaut
    Si j'ai bien compris tu souhaites supprimer des enregistrements pour les recréer afin d'éviter les doublons.
    En SQL il y a des commandes qui te permettent de mettre à jour des enregistrements (UPDATE) sans avoir à tout supprimer puis tout recréer.
    Je te conseille de chercher un tuto sur le SQL et tu verra à quel point cela est puissant et peut te simplifier la vie.
    Good luck

  12. #12
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    merci kineton
    je veut supprimer touts les enregistrements de la table j'ai utilisé meme sql par ce code et ca marche pas.aidez moi svp
    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
    Form6->Table1->First();
    if(Form6->Table1->RecordCount!=0)
     
     {  Form6->Table1->Active=false;
      AnsiString a;
      a="Delete from Stocks ";
     
      Form6->Query1->SQL->Clear();
      Form6->Query1->SQL->Add(a);
      Form6->Query1->ExecSQL();
     
      Form6->Table1->Active=true;
      Form6->DBGrid1->DataSource->DataSet->ClearFields();
      }
     
    for(int j=1;j<14;j++)
    {
     
    Form6->Table1->Append();
    Form6->Table1->Edit(); // Positionne la table en mode Edition
     
    Form6->Table1->FieldByName("Désignation")->AsString =Form2->StringGrid3->Cells[0][j];
    Form6->Table1->Post() ;
    }
    merci d'avance

  13. #13
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Merci de faire un effort sur l'expression et l'orthographe...c'est assez difficile de vous lire.
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  14. #14
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    bonsoir
    j'ai une table et je veux supprimer tous les enregistrements de cette table d'un seul coup pour les recréer par des nouveaux données afin d'éviter les doublons. voici mon code avec la commande SQL (DELETE)
    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
    Form6->Table1->First();
    if(Form6->Table1->RecordCount!=0)
     
     {  Form6->Table1->Active=false;
      AnsiString a;
      a="Delete from Stocks  ";
     
      Form6->Query1->SQL->Clear();
      Form6->Query1->SQL->Add(a);
      Form6->Query1->ExecSQL();
     
      Form6->Table1->Active=true;
      Form6->DBGrid1->DataSource->DataSet->ClearFields();
      }
     
    for(int j=1;j<14;j++)
    {
     
    Form6->Table1->Append();
    Form6->Table1->Edit(); // Positionne la table en mode Edition
     
    Form6->Table1->FieldByName("Désignation")->AsString =Form2->StringGrid3->Cells[0][j];
    Form6->Table1->Post() ;
    }
    meme avec la commande UPDATE ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a="UPDATE Stocks SET Désignation =NULL ";
    merci d'avance

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/07/2013, 22h22
  2. Remplir un grid a partir d'un table access 2007
    Par irada dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/06/2010, 12h47
  3. Réponses: 3
    Dernier message: 24/05/2010, 20h15
  4. Comment remplir une table access 2003 à partir de VB6
    Par alouca dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/02/2010, 21h59
  5. Réponses: 4
    Dernier message: 09/07/2008, 14h05

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