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 :

Tester un champ dans une table mysql


Sujet :

C++Builder

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut Tester un champ dans une table mysql
    Dans mon formulaire d'inscription de nouveau client, j'aimerais tester pour savoir si le nom du client existe déjà....

    Je l'avais dejà fais en php ca donne le code ici
    // verification si le nom est deja pris et insertion des données dans la base de donnée
    $Resultat=mysql_query("SELECT * FROM `utilisateur` WHERE `login` LIKE '$login'");
    if (mysql_numrows($Resultat)==0)
    {
    echo "Merci de vous etre enregistrer.";
    $sql=mysql_query("INSERT INTO `utilisateur` VALUES('$login','$mdp1','$nom','$prenom','$adresse','$localite','$cp','$mail','$telephone')");

    }
    else
    echo "Désolé... ce login est déjà pris.;
    Donc j'ai essayer de l'adpater en c++ mais je suis calé ici :

    $Resultat=mysql_query("SELECT * FROM `utilisateur` WHERE `login` LIKE '$login'");
    if (mysql_numrows($Resultat)==0)

    Comment stocké ma valeur dans une variable et comment la comparer que je ne pense pas que la commande numrows soit inclue dans le c++...

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    TSQLTable ou TSQLQuery ont une propriété RecordCount qu'il te faudrait très certainement utiliser.
    Ainsi, tu pourrais savoir si la requête sur un nom précis renvoie un enregistrement ou non (recordcount > 0) et agir en conséquence.

    N'hésites pas a observer toutes les propriétés et méthodes des objets que tu utilises ... (TSQLmachin_chose et autres...)

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    J'ai essayer ceci mais apprement je n'ai rien dans ma variable resultat

    NewClients->SQLQuery1->SQL->Clear();
    AnsiString sql1("SELECT * FROM `clients` WHERE `Nom` LIKE 'Edit2->Text'");
    NewClients->SQLQuery1 ->SQL->Add(sql1);
    Resultat=NewClients->SQLQuery1->RecordCount;
    NewClients->SQLQuery1->ExecSQL();
    ShowMessage(Resultat);
    if (Resultat==0)
    suite....
    Il m'indique tj 0 ... alors que j'ai plusieurs nom pareil dans ma table

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Il te faut d'abord exécuter ta requête SQL avant de récupérer la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NewClients->SQLQuery1->SQL->Clear();
    AnsiString sql1("SELECT * FROM `clients` WHERE `Nom` LIKE 'Edit2->Text'");
    NewClients->SQLQuery1 ->SQL->Add(sql1);
    NewClients->SQLQuery1->ExecSQL();
    int Resultat=NewClients->SQLQuery1->RecordCount;
    ShowMessage(IntToStr(Resultat));
    if (Resultat==0)
    suite...
    A+

    PS: Utiliser les balises code (# en haut, juste à droite de citation) et non citation lorsque tu postes du code! Ca aura pour but de mettre un peu de couleur

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    merci j'ai trouvé

    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
    void __fastcall TNewClients::Button1Click(TObject *Sender)
    {
    if (Edit2->Text != "")    // test pour savoir si le Nom est rempli
    {
      // test si le nom existe déjà dans la table
      AnsiString nom = Edit2->Text;
      NewClients->SQLQuery1->SQL->Clear();
      AnsiString sql1("SELECT * FROM `clients` WHERE `Nom` LIKE '"+nom+"'");
      NewClients->SQLQuery1 ->SQL->Add(sql1);
      Resultat=NewClients->SQLQuery1->RecordCount;
      NewClients->SQLQuery1->ExecSQL();
    	if (Resultat>0)
    	{
    	// test si le prenom existe déjà dans la table
    	AnsiString prenom = Edit3->Text;
    	NewClients->SQLQuery1->SQL->Clear();
    	AnsiString sql2("SELECT * FROM `clients` WHERE `Prenom` LIKE '"+prenom+"'");
    	NewClients->SQLQuery1 ->SQL->Add(sql2);
    	Resultat=NewClients->SQLQuery1->RecordCount;
    	NewClients->SQLQuery1->ExecSQL();
    		if (Resultat>0)
    		{
    		ShowMessage("Ce client existe déjà");
    		}
    		else
    		{
    			if (((Edit5->Text < '0') || (Edit5->Text > '9')) && (Edit5->Text !=""))  // test pour savoir si le numero ne contient que des chiffres
    			{
    			ShowMessage("Entrer un Numero valide");
    			}
    			else
    			{
    				if (((Edit6->Text < '0') || (Edit6->Text > '9')) && (Edit6->Text != ""))  // test pour savoir si le cp ne contient que des chiffres
    				{
    				ShowMessage("Entrer un Code postal valide");
    				}
    				else
    				{
    				AnsiString nom = Edit2->Text;
    				AnsiString prenom = Edit3->Text;
    				AnsiString adresse = Edit4->Text;
    				AnsiString num = Edit5->Text;
    				AnsiString cp = Edit6->Text;
    				AnsiString ville = Edit7->Text;
    				AnsiString tel = Edit8->Text;
    				AnsiString mail = Edit9->Text;
     
    				// On ajoute cet enregistrement a la table
    				AnsiString sql("INSERT INTO `clients` (`nom`,`prenom`,`Adresse`,`Numero`,`Cp`,`Ville`,`Telephone`,`Mail`) VALUES ('"+nom+"','"+prenom+"','"+adresse+"','"+num+"','"+cp+"','"+ville+"','"+tel+"','"+mail+"');");
     
    				NewClients->SQLQuery1->Close();
    				NewClients->SQLQuery1->SQL->Clear();
    				NewClients->SQLQuery1 ->SQL->Add(sql);
    				NewClients->SQLQuery1->ExecSQL();
     
    				// On affiche un message que le client a bien été rajouter et on reinitialise la table
    				ShowMessage("Nouveau client créer");
    				}
    		   }
    		}
    	 }
         	else
    		{
    			if (((Edit5->Text < '0') || (Edit5->Text > '9')) && (Edit5->Text !=""))  // test pour savoir si le numero ne contient que des chiffres
    			{
    			ShowMessage("Entrer un Numero valide");
    			}
    			else
    			{
    				if (((Edit6->Text < '0') || (Edit6->Text > '9')) && (Edit6->Text != ""))  // test pour savoir si le cp ne contient que des chiffres
    				{
    				ShowMessage("Entrer un Code postal valide");
    				}
    				else
    				{
    				AnsiString nom = Edit2->Text;
    				AnsiString prenom = Edit3->Text;
    				AnsiString adresse = Edit4->Text;
    				AnsiString num = Edit5->Text;
    				AnsiString cp = Edit6->Text;
    				AnsiString ville = Edit7->Text;
    				AnsiString tel = Edit8->Text;
    				AnsiString mail = Edit9->Text;
     
    				// On ajoute cet enregistrement a la table
    				AnsiString sql("INSERT INTO `clients` (`nom`,`prenom`,`Adresse`,`Numero`,`Cp`,`Ville`,`Telephone`,`Mail`) VALUES ('"+nom+"','"+prenom+"','"+adresse+"','"+num+"','"+cp+"','"+ville+"','"+tel+"','"+mail+"');");
     
    				NewClients->SQLQuery1->Close();
    				NewClients->SQLQuery1->SQL->Clear();
    				NewClients->SQLQuery1 ->SQL->Add(sql);
    				NewClients->SQLQuery1->ExecSQL();
     
    				// On affiche un message que le client a bien été rajouter et on reinitialise la table
    				ShowMessage("Nouveau client créer");
    				}
    		   }
    	   }
     
     
     
    }
     
    else
    {
    ShowMessage("Veuillez remplir la case Nom");
    }
     
     
     
    }
    Etant donné que j'utilise 2x les memes instructions a des moments differents es-ce possible de mettre ce code dans une fonction et d'apeller la fonction au moment voulu ?

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Heu, ca ne sert à rien de mettre 2 fois ton code

    As tu lu mon message précédent ???

    Une seule instruction pour tester si il y a un doublon est suffisant, c'est juste qu'il te faut placer ton ExecSQL au bon endroit !

    Revois mon post précent ...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    oui mais je test le nom puis le prenom c'est dans mes bloucles if pour la creation du nom seul et pour la creation du nom + prenom donc 2x les instructions d'encodage

    car je peux avoir un nom seul

  8. #8
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ok, j'ai lu trop vite mais plein de trucs font que ca ne fonctionnera pas :

    - Comme dit précédemment, il te faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NewClients->SQLQuery1->ExecSQL();
    int Resultat=NewClients->SQLQuery1->RecordCount;
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int Resultat=NewClients->SQLQuery1->RecordCount;
    NewClients->SQLQuery1->ExecSQL();
    Car sinon, il te renvoie je sais pas quoi comme résultat, surement toujours 0.

    - Tu ne peux pas faire :

    La tu veux savoir si ta chaine est inférieure à zéro, or, c'est impossible de faire des calculs "mathématiques" avec une chaine !

    Regarde ici

    Voilà pour commencer !

    PS :Renomme tes composants pour plus de clarté

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    ben pourtant chez moi tout marche a merveille

    j'ai tester tous les cas de figurer et mes test sont toujours bon.

    il y a juste quand je veux recuperer la valeur d'un champ et le mettre dans un memo ca ne passe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NewClients->SQLQuery1->SQL->Clear();
    AnsiString sqlref("SELECT * from `clients` ORDER BY RefClient desc LIMIT 1");
    Refer=NewClients->SQLQuery1 ->SQL->Add(sqlref);
    NewClients->SQLQuery1->ExecSQL();
    Memo1->Lines=(Refer);
    Somme= StrToInt(Refer);
    Somme=(Somme+1);
    Refer= IntToStr(Somme);
    il me bloque a la derniere ligne me disant que :
    [BCC32 Erreur] Unit2.cpp(141): E2034 Impossible de convertir 'AnsiString' en 'TStrings *'
    J'ai choisi un Tmemo car on peut aligner le text a droite et non dans un TEdit

  10. #10
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    L'erreur vient d'ici :

    Il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1->Lines->Add(Refer);
    A+

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Merci je me suis inspirer de ta reponse pour faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1->Lines[0].Text=(Somme);
    Marche nickel

    Je passe en résolu

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Bon j'ai encore un petit probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void __fastcall TNewClients::FormActivate(TObject *Sender)
    {
    AnsiString sqlref("SELECT `RefClient` FROM `clients` ORDER BY `RefClient` DESC LIMIT 1");
    NewClients->SQLQuery1->Close();
    NewClients->SQLQuery1->SQL->Clear();
    Refer=NewClients->SQLQuery1->SQL->Add(sqlref);
    NewClients->SQLQuery1->ExecSQL();
    ShowMessage(Somme);
    Somme= StrToInt(Refer);
    Somme=(Somme+1);
    Memo1->Lines[0].Text=(Somme);
    }
    Mon ShowMessage m'indique toujours 0 pourtant j'ai 3 reference dans ma table.
    Lorsque je test le code dans phpmyadmin il m'indique bien la valeur que je souhaite cad la plus grand reference.. hors ici ca ne marche pas.

  13. #13
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Je voudrais pas paraître embêtant mais je vais avoir qq questions:
    1°) dans ton dernier code posté, comment donnes tu une valeur a 'Somme' ?
    J'ai peut être la berlue mais je ne vois ca nulle part, donc si ce n'est pas avant 'ShowMessage(Somme)' ne peut pas t'afficher grandchose et si c'est avant l'execution de la requête, je ne vois pas comment 'Somme' pourrait te donner le 'RecordCount' une fois qu'elle est executée.
    2°) De quels types sont 'Somme' et 'Refer' ?
    3°) A quoi servent ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Refer=NewClients->SQLQuery1->SQL->Add(sqlref);
    //
    Somme= StrToInt(Refer);
    ?
    Surtout pour le coup de l'affectation de 'Refer' (Refer = etc ...)

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    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
     
    String Resultat;
    String Refer;
    Integer Somme;
     
     
     
    void __fastcall TNewClients::FormActivate(TObject *Sender)
    {
    AnsiString sqlref("SELECT `RefClient` FROM `clients` ORDER BY `RefClient` DESC LIMIT 1");
    NewClients->SQLQuery1->Close();
    NewClients->SQLQuery1->SQL->Clear();
    Refer=NewClients->SQLQuery1->SQL->Add(sqlref);
    NewClients->SQLQuery1->ExecSQL();
    Somme= StrToInt(Refer);
    ShowMessage(Somme);
    Somme=(Somme+1);
    Memo1->Lines[0].Text=(Somme);
    }
    Donc voila mon code le showmessage été mal placé mais can e change rien au probleme... a mon avis je stock mal ma requete sql ou je ne la fais pas bien
    mes variables sont definie plus haut

  15. #15
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Re,

    Donc, si tu as bien accès a 'RecordCount' avec ton objet 'TSQLQuery' (c'est bien ca que tu utilises ?), tu dois pouvoir écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Somme = NewClients->SQLQuery1->RecordCount;
    ShowMessage(Somme);
    Et pas besoin, a mon avis, de mettre '+1' a somme: le premier enregistrement - pour RecordCount - est bien '1', etc...
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    En fait je veux reprendre le champ Refclient de ma table et lui ajouter +1

    RecordCount compte le nombre d'enregistrement...

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    j'ai changer ma maniere j'ai fais comme ceci et ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQLQuery1->Active=false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT `RefClient` FROM `clients` ORDER BY `RefClient` DESC LIMIT 1");
    SQLQuery1->Active=true;
    Somme=SQLQuery1->FieldValues["RefClient"];
    Somme=Somme+1;
    Memo1->Lines[0].Text=Somme;

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Ca marche mais uniquement si j'ai une valeur dans ma table sinon il me marque une erreur qu'il ne peut convertir Null en integer

  19. #19
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    D'ou l'intérêt de tester ... soit (au plus simple) par RecordCount (qui doit être > 0), ou bien par qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If (SQLQuery1->FieldValues["RefClient"] != NULL)
    //etc ...
    ou bien par un 'try / catch (...), etc ... par exemple.

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    si je met ceci il rentre dans ma boucle meme si ma table est vide...

    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
    SQLQuery1->Active=false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT `RefClient` FROM `clients` ORDER BY `RefClient` DESC LIMIT 1");
    SQLQuery1->Active=true;
     
    if ((SQLQuery1->FieldValues["RefClient"]) != NULL)
    {
    Somme=SQLQuery1->FieldValues["RefClient"];
    Somme=Somme+1;
    Memo1->Lines[0].Text=Somme;
    }
    else
    {
    Somme=0;
    Memo1->Lines[0].Text=Somme;
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Modifier la valeur d'un champs dans une table mysql en fonction du temps.
    Par VaSss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2010, 11h30
  2. MySQL : Best Practice : Nombre de champ dans une table
    Par Ziquet dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/05/2008, 16h18
  3. Tester l'existence d'un champ dans une table
    Par Raphael_74 dans le forum WebDev
    Réponses: 1
    Dernier message: 29/02/2008, 15h58
  4. [MySQL] Liste de champs dans une table MySQL
    Par Are-no dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/04/2007, 11h13
  5. Tester l'existence d'un champ dans une table
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/09/2005, 11h19

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