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

Firebird Discussion :

Existe-t'il une validation à demander apres INSERT ?


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Existe-t'il une validation à demander apres INSERT ?
    Bonjour,

    Je débute avec IB, tout se passe cependant relativement bien mais j'ai un problème que je ne comprend pas :

    Je crée un nouvel enregistrement dans une table avec la procédure SQL INSERT sous Delphi 2007 à l'aide d'une IBQUERY. Nota : Comme il n'existe pas le type COUNTER comme dans ACCESS j'utilise précédemment une IBTABLE et sa fonction last pour connaître le N° du dernier enregistrement que j'incrémente pour l'affecter à ma PRIMARY KEY déclarée INTEGER

    ExecSQL s'effectue sans problème. Si je ferme mon logiciel, aucun problème l'enregistrement est créé je peux le lire dans IBConsole.

    Mais si dans la foulée je crée un nouvel enregistrement sans quitter le logiciel et que veux appliquer une nouvelle fois la procédure INSERT pour effectuer ce second enregistrement l'enregistrement précédent n'est pas créé ! et naturellment IB m'adresse une erreur sur PRIMARY KEY car IBTABLE Last n'a pas comptabilisé le précédent enregistrement

    Ais-je oublié d'appliquer une procédure SQL qui valide le premier enregistrement dans la table ? Si Oui laquelle ?

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Pourquoi tu n'utilises pas un générateur ? Ils sont spécifiquement dédié à fournir une valeur pour ta PK.

    @+ Claudius.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut j'veux bien mais comment
    Je viens d'ACCESS et de la bureautique !
    C'est déja pas mal que j'ai pu créer uen base IB, mais les générateurs connais pas !

    Voici un exemple d'une table de ma base :
    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
     
     //WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Création de la table BATCH
      IbQuery1.Close;
      req := 'CREATE TABLE BATCH ('+
             ' BATCH_NO INTEGER NOT NULL, '+       // Clé primaire
             ' BATCH_PRODUCT INTEGER NOT NULL, '+    // Pointeur sur Product
             ' BATCH_CREATOR INTEGER NOT NULL, '+ // Pointeur sur Operator
             ' BATCH_QUANTITY INTEGER NOT NULL, '+ // Quantité en unité de production
             ' BATCH_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP, '+// Date de création
             ' BATCH_NAME VARCHAR(32) NOT NULL, '+ // Nom de série du lot
             ' BATCH_USED BOOLEAN DEFAULT TRUE, '+      // booléen de supression logique
             ' CONSTRAINT PK_BATCH PRIMARY KEY(BATCH_NO) '+
             ')';
      IbQuery1.SQL.Clear;
      IbQuery1.SQL.Add(req);
      IbQuery1.ExecSQL;
    Peux-Tu me donner en exemple le code source pour créer ce génératerur ?

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Re,

    Citation Envoyé par colorid Voir le message
    Peux-Tu me donner en exemple le code source pour créer ce génératerur ?
    Je te conseille pour commencer de consulter ce chapitre de la FAQ IB/FB.

    Je pense que y verra plus clair après.

    @+ Claudius

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Ok ca marche
    Merci c'est assez clair. Je vais m'en occuper de suite

  6. #6
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 50
    Par défaut
    j'ajoute que l'outil ibexpert (gratuit) te fera ton generateur en 3 coup de clic
    et tellement d'autre manip aussi,

    franchement IB sans IBexpert c'est comme aller à Dièpe sans voir la mer.

    bonne soirée
    julien

  7. #7
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Citation Envoyé par colorid Voir le message
    Bonjour,

    Je débute avec IB, tout se passe cependant relativement bien mais j'ai un problème que je ne comprend pas :

    Je crée un nouvel enregistrement dans une table avec la procédure SQL INSERT sous Delphi 2007 à l'aide d'une IBQUERY. Nota : Comme il n'existe pas le type COUNTER comme dans ACCESS j'utilise précédemment une IBTABLE et sa fonction last pour connaître le N° du dernier enregistrement que j'incrémente pour l'affecter à ma PRIMARY KEY déclarée INTEGER

    ExecSQL s'effectue sans problème. Si je ferme mon logiciel, aucun problème l'enregistrement est créé je peux le lire dans IBConsole.

    Mais si dans la foulée je crée un nouvel enregistrement sans quitter le logiciel et que veux appliquer une nouvelle fois la procédure INSERT pour effectuer ce second enregistrement l'enregistrement précédent n'est pas créé ! et naturellment IB m'adresse une erreur sur PRIMARY KEY car IBTABLE Last n'a pas comptabilisé le précédent enregistrement

    Ais-je oublié d'appliquer une procédure SQL qui valide le premier enregistrement dans la table ? Si Oui laquelle ?
    Je crois bien qu'il vous manque un COMMIT pour valider par le serveur IB l'insertion que vous faite.
    Ceci dit, votre méthode est potentiellement créatrice de conflits, le mieux est bien de créer pour chaque table un champ auto-incrémenté.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/07/2012, 14h31
  2. Récupérer une clé primaire après insertion
    Par Cyrano dans le forum SQL
    Réponses: 6
    Dernier message: 16/02/2009, 15h55
  3. VB.NET vs C# vs Java ou existe-t-il une vie après Visual Basic 6 ?
    Par B-Pascal dans le forum Débats sur le développement - Le Best Of
    Réponses: 32
    Dernier message: 05/07/2007, 12h46
  4. Affichage d'une image après insertion dans une base
    Par leloup84 dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 16h34
  5. Rafraichir dbgrid apres insertion d'une donnée ds une table
    Par gizmorambo dans le forum Bases de données
    Réponses: 7
    Dernier message: 11/01/2005, 16h03

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