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 :

g�rer un champ auto-incr�ment ?


Sujet :

C++Builder

  1. #1
    Membre �clair� Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par d�faut g�rer un champ auto-incr�ment ?
    Salut,

    j'aimerai g�rer un champ auto-incr�ment pour cela j'utulise cette fonction:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int __fastcall TForm1::NouvelID(AnsiString Table, AnsiString Clef)
    {
     
        SQLRequeteID->Close(); 
        SQLRequeteID->SQL->Clear();
        SQLRequeteID->SQL->Add("select max(" + Clef + ") as MAX_VALUE from " + Table );
        SQLRequeteID->Open(); 
        int result = SQLRequeteID->FieldByName( "MAX_VALUE")->AsInteger + 1;
        SQLRequeteID->Close(); 
        return( result ) ;
    }
    � l'appel de cette fonction:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int ProchainID= NouvelID('nom', 'Id');/* Id est le champ à gérer et nom le nom du fichier table de ma base de donnée */
    je re�ois le message d'erreur suivant:
    Utilisation incorrecte du mot cl�.
    El�ment: from
    Num de ligne1.
    Merci d'avance pour votre aide.

  2. #2
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Par d�faut
    Bonjour,
    voil� personnellement je fait �a
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int __fastcall TForm1::NouvelID(AnsiString Table, AnsiString Clef)
    {
     
        SQLRequeteID->Close(); 
        SQLRequeteID->SQL->Clear();
        SQLRequeteID->SQL->Add("select tonchamp from " + Table +"Order by tonchamp DESC");
        SQLRequeteID->Open(); 
        int result = SQLRequeteID->FieldByName( "tonchamp")->AsInteger + 1;
        SQLRequeteID->Close(); 
        return( result ) ;
    }
    voil� Bon courage

  3. #3
    Membre �clair� Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par d�faut
    Merci sam83 pour cette solution

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int __fastcall TForm1::NouvelID(AnsiString Table, AnsiString Clef)
    {
     
        SQLRequeteID->Close(); 
        SQLRequeteID->SQL->Clear();
        SQLRequeteID->SQL->Add("select Clef from " + Table +"Order by Clef DESC");
        SQLRequeteID->Open(); 
        int result = SQLRequeteID->FieldByName( "Clef")->AsInteger + 1;
        SQLRequeteID->Close(); 
        return( result ) ;
    }
    j'ai eu une erreur pareille concernant le mot cl� Order:
    Utilisation incorrecte du mot cl�.
    element 7237485Order
    num de ligne 1

  4. #4
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    C'est normal, le nom de ta table et le ORDER sont attach� ensemble! Ajoute un espace! De plus, a moins que ton champ � incr�menter s'appelle "Clef", il faut aussi modifier cette partie.

    Par contre ta table s'appelle apparemment "7237485", est tu s�r que c'est normal et qu'il n'y a pas un probl�me? V�rifie le param�tre Table que tu passe � la fonction voir si il n'y a pas un soucis.

  5. #5
    Membre �clair� Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par d�faut
    Merci sat83 pour la r�ponse
    Citation Envoy� par sat83 Voir le message
    C'est normal, le nom de ta table et le ORDER sont attach� ensemble! Ajoute un espace! De plus.
    oui merci j'ai pas fais attention

    a moins que ton champ � incr�menter s'appelle "Clef", il faut aussi modifier cette partie.
    Clef est le param�tre avec le quel je transmis le nom du champ � incr�menter.
    Par contre ta table s'appelle apparemment "7237485", est tu s�r que c'est normal et qu'il n'y a pas un probl�me? V�rifie le param�tre Table que tu passe � la fonction voir si il n'y a pas un soucis
    je ne sais pas pourquoi, je pense que l'erreur est au niveau du passage des param�tres parce que les deux codes marchent tr�s bien sans passer par la fonction NouvelID.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    SQLRequeteID->Close(); 
        SQLRequeteID->SQL->Clear();
        SQLRequeteID->SQL->Add("select Id from nom Order by Id DESC");
        SQLRequeteID->Open(); 
        int result = SQLRequeteID->FieldByName( "Id")->AsInteger + 1;
        SQLRequeteID->Close();
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    SQLRequeteID->Close(); 
        SQLRequeteID->SQL->Clear();
        SQLRequeteID->SQL->Add("select max(Id) as MAX_VALUE from nom");
        SQLRequeteID->Open(); 
        int result = SQLRequeteID->FieldByName( "MAX_VALUE")->AsInteger + 1;
        SQLRequeteID->Close();

  6. #6
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Effectivement, ca vient probablement de l'appel � la fonction.
    Poste le bout de code o� tu appelle la fonction.

  7. #7
    Membre �clair� Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int ProchainID= NouvelID('nom', 'Id');
    et avec ce code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    AnsiString n=Table1->TableName;
    AnsiString i=Table1->FieldByName("Id")->AsString;
    int ProchainID= NouvelID(n,i);
    j'ai le message d'erreur suivant:
    Fonctionnalit� non support�e

  8. #8
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Les chaines de caract�res doivent �tre entour�es de double-quote:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int ProchainID = NouvelID("nom", "Id");

  9. #9
    Membre �clair� Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par d�faut
    merci sat83 c'est r�solu
    /* mes fautes b�tes b�tes progressent de jour en jour*/

  10. #10
    Membre �clair� Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par d�faut
    juste une question, pourquoi Borland n'accepte il pas ce code:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    AnsiString n=Table1->TableName;
    AnsiString i=Table1->FieldByName("Id")->AsString;
    int ProchainID= NouvelID(n,i);
    merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Conna�tre la valeur d'un champ auto incr�ment�
    Par soltani1 dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 18/05/2006, 14h55
  2. [EJB2.1 Entity] [D�butant] Champs auto-incr�ment� (identity)et EJB
    Par Houbbba dans le forum Java EE
    R�ponses: 9
    Dernier message: 04/04/2006, 19h15
  3. champ auto incr�ment�
    Par Kerod dans le forum Langage SQL
    R�ponses: 6
    Dernier message: 21/09/2005, 17h29
  4. [BCB5][FB 1.5]IBDataSet et champ Auto-incr�ment�
    Par Sitting Bull dans le forum Connexion aux bases de donn�es
    R�ponses: 4
    Dernier message: 21/07/2004, 15h37
  5. [JDO]Hibernate : Mapping d'un champ auto-incr�ment�
    Par brice.antoine dans le forum Hibernate
    R�ponses: 4
    Dernier message: 02/04/2004, 10h36

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