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

Bases de données Delphi Discussion :

Si la table est vide pas possible d ajouter une valeur


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut Si la table est vide pas possible d ajouter une valeur
    Bonjour

    Voila mon problème:
    une BD mysql avec plusieur table dont une s appel eleves(ideleve, nom, prenom,etc)

    ca marche sans problème sauf si je remet la table vierge ca plante .
    je suis oblige de faire le 1 enregistrement a la main pour avoir un ideleves a 1

    dans le code je fais un recordcount que j affecte a une variable idel a la quel j ajoute 1 au post.

    Comme je l ai dit c'est ok sauf si la table est vide(recordcount=0;

    comment regler ce probleme.

    Merci
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 654
    Points : 5 209
    Points
    5 209
    Par défaut
    Comme je l ai dit c'est ok sauf si la table est vide(recordcount=0
    J'ai également eu ce genre de problème mais avec une base Access et un lien ODBC utilisé avec les ADO. J'ai remarqué que lorsque la table est vide, mon TQuery ne veux pas exécuter la requête.

    Pour palier à ce problème j'ai mis dans toute mes tables un enregistrement par défaut que je remplis avec des "0" ou des "-" selon le type et lorsque je devais vider la table, j'effaçais tout sauf ce premier enregistrement.

    Ensuite dans toutes ms requêtes il me suffit d'ajouter un "WHERE ID<>0"

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    autres pistes :

    Sélectionner le dernier enregistrement de la table et rajouter 1 au numéro ,
    Code syntaxe FIB,mySQL je ne connais pas : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT FIRST 1 ideleve FROM ELEVES ORDER BY ideleve DESC // ou ASC là jai un doute
    l'avantage , on ne passe pas par recordcount, si numero est null alors la table est vide , autre et non moindre si un enregistrement est supprimé record count ne sera pas égal au dernier numéro utilisé ....

    autre et plus 'propre' utiliser un champ auto-incrémenté (pour MySQL je ne sais pas , mais pour Firebird/Interbase on appelle ça un générateur)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    Bonjour

    Merci pour vos reponse,

    le choix d ajouter un user test afin d avoir un enregistrement, j y avais pense, mais si par megarde tout est efface, ca va merdouiller..

    Il y a des champ auto incremente avec mysql mais je n'ai pas réussi a le mettre en œuvre, et comme je suis pas top delphi je suis reste au vieux composant bde, ttable etc...

    je vais essaye ta méthode avec le select même si je n ai pas tout compris,
    d'ailleurs c'est comme ça que je vais comprendre..

    merci
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    si tu n'est pas trop SQL alors cela donne (avec BDE) du moins a vue de nez aurait dit Cyrano

    Code non testé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var Numero:Integer;
    ...
    Table.Active:=True;
    Table.Last;
    if Table.EOF then Numero=1
                       else Numero:=Table.FieldByname('IdEleve').asInteger+1;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    J'ajoute à ceci qu'il faut toujours tester avec EOF car ISEMPTY pose un problème de synchronisation et y a des fois où la table est vide mais ISEMPTY indique False.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #7
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    Merci je regarde de ca des que je peux, j ai un pet reseau a regle d abord

    merci
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

Discussions similaires

  1. Comment savoir si le champ d'une table est vide?
    Par CleeM dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/07/2007, 12h35
  2. Réponses: 8
    Dernier message: 18/06/2007, 02h39
  3. Tester si une table est vide
    Par rsc dans le forum SQL
    Réponses: 2
    Dernier message: 01/07/2004, 17h25
  4. [JDBC]tester si une table est vide
    Par zozolh2 dans le forum JDBC
    Réponses: 5
    Dernier message: 28/05/2004, 10h17

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