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 :

Mise à jour d'une Base Access


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Mise à jour d'une Base Access
    Bonjour,

    Voilà mon chtit problème, j'aimerai tout simplement modifier un champ de ma base de donnée sour borland c++ builder 5.

    Voilà le morceau de programme ou je voudrai modifier ma base. De modifier la première ligne de la colone 'b' par le contenu de 'cpp'. Qu'est ce qu'il faut pour rentrer en édition dans la base et la modifier?


    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
    // ouverture connexion, bdd et table
                    masession->Open();
                    Database1->Open();
                    Table1->Open();
     
     
                    Table1->First;       /*Envoie des caractéristiques vers la bdd*/
     
            	Table1->FieldByName("b")->AsString=cpp;
     
     
            // on ferme connexion, bdd et table
                    Table1->Close();
                    Database1->Close();
                    masession->Close();
    Merci pour votre aide!

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    bonjour,

    tu dois passer la base en mode "ajout" ou "edition" pour sa tu utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1->Append(); // ajout dans la base un nouvelle enregistremet
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1->Edit(); //edition  d'un  enregistrement  de la base
    puis pour validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1->Post(); //ecriture dans la table
    de plus attention
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1->First; // tu te place sur le 1er enregistrement de ta base
    bon courage

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci!! je vais essayer ça!!


  4. #4
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon j'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Table1->Edit();      
     Table1->FieldByName("b")->AsString=cpp;
     Table1->Post();
    En mettant une nouvelle valeur, en fait il me supprime ce qu'il y a dans le champ sans me le remplacer par la nouvelle. Est ce qu'il vaudrait mieux effacer d'abord le champ pour ensuite la remplir ou est ce que ça vient d'autre chose?

    Merci!

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Quel est le type de ta variable "cpp" ? Peut-être est-ce simplement un problème de cast: il n'arrive pas à traduire ta variable en Variant et elle est considérée comme vide...

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    La variable cpp est dans une classe et est de type char pointeur:

    ->Comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private:	// Déclarations utilisateur
            AnsiString line;
    public:		// Déclarations utilisateur
            __fastcall TForm1(TComponent* Owner);
            char *cp,*cpp,*cp2;

    ->Après je récupère la valeur que je tape dans Edit1 que je range dans cpp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cpp = new char[ Edit1->Text.Length() + 1 ];
    strcpy( cpp, Edit1->Text.c_str() );
    merci

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    test avec cette ligne la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1->FieldByName("b")->Value=cpp;

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non ça marche pas non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Table1->Edit();     
    Table1->FieldByName("b")->Value=cpp;
    Table1->Post();

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Es-tu sûr que cpp contient une valeur?

    C'est bête, mais as-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1->FieldByName("b")->Value="toto";
    Ce qui est étrange à mes yeux, c'est qu'il vide le champs (donc l'accès est ok) mais sans y mettre la nouvelle valeur.

    Moi j'utilise aussi un pointeur sur un char à partir d'un AnsiString et ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      AnsiString Value;
      ...
      dbRecords->Edit();
      *fld=dbRecords->FieldByName(myRecord->Child[i]->Name.c_str());
      fld->AsString=Value.c_str();
      if (fld->AsString=="") fld->Clear(); 
      dbRecords->Post();

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Me revoici!

    Désolé pour le retard de réponse, avec les grêves à Paris en ce moment, je pouvais pas aller en cours pour continuer mon projet... Enfin bref j'ai réussi à récupérer mon projet et je le bosse chez moi...

    Donc j'ai essayé, avec "toto" et il me remplissait bien ma base de donnée! c'était une bonne idée, donc comme quoi mon problème venait bien de "cpp" et maintenant le problème est résolu! j'avais un problème avec Edit, je remplissais "cpp" par un Edit .... vide!!! donc voilà, j'ai changé tout ça et maintenant ça fonctionne!!

    Je vous remercie pour tout!!!

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

Discussions similaires

  1. Mise à jour d'une base access
    Par smix13 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/03/2009, 11h59
  2. Réponses: 3
    Dernier message: 27/01/2009, 20h56
  3. Mise a jour d'une Base Access depuis fichier CSV sous IDE DEplphi
    Par LE MAHJONG dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/10/2008, 19h42
  4. Mise a jour d'une base distante [clos]
    Par vinzrsi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/09/2005, 13h37
  5. mise a jour d'une base a partir d'une autre base
    Par seb3099 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/06/2004, 08h20

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