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 :

Table en mode insertion


Sujet :

Bases de données Delphi

  1. #1
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut Table en mode insertion
    Bonjour,

    voilà,
    J'ai un problème dans mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     begin
       Open;
       First;
      Insert; //pb ici
       While not Eof do
       begin
          if(Fields[0].AsString=nom_catenaire) And (Fields[2].AsString='contact'+IntToStr(i)) then
           begin
             FieldByName('conducteur_id').AsInteger:=2*i-1;
             Post;
           end;
    Mon problème c'est que la table semble fermer puisque je ne recoit pas la valeur des champs si je fais un showmessage (le test fonctionne si j'enlève le insert, mais plus le post....

    Je débute et j'ai du mal à voir ce qui déraille.

    Merci à tous.

    @+.
    For crying out loud !

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    Il nous faut les informations suivantes
    Version Delphi
    Type d'objet utilisé
    SGBD utilisé

    Par exemple si utilise un ClientDataSet et bien en focntion de ta version de Midas.dll (Avant Delphi 6 ou après) et bien le insert fait un insert ou un append. Or si le insert fait un append (delphi 5) et bien tu es en EOf dès l'insertion.

    Apportes nous donc quelques précisions

    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  3. #3
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    j'utilise Delphi 2005, base SQL.
    J'utilise des ADOQuery pour les requêtes, reliés a des TDataSource.

    Et effectivement j'ai oublié de mettre ma ligne de code initiale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With DataModule1.DataSource1.DataSet do
    merci.
    For crying out loud !

  4. #4
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    ton code n'est pas correct.
    Déjà, le Insert et le Post ne sont pas "symétrique"...

    Voila ton code corrigé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     begin
       Open;
       First;
      //Insert; //pb ici  <-- pas le bon moment
       While not Eof do
       begin
          if(Fields[0].AsString=nom_catenaire) And (Fields[2].AsString='contact'+IntToStr(i)) then
           begin
             Edit; <-- si c'est vraiment un ajout que tu veux ca la méthode est différente
             FieldByName('conducteur_id').AsInteger:=2*i-1;
             Post;
           end;
       Next;
       end
    Ce code va modifier l'enreg courant. Il ne va pas en ajouter.
    Si il faut ajouter, le code est différent, car le le fait d'ajouter un enreg va modifier le curseur courant sur ta table -> la boucle while... n'est plus cohérent.

    Si tu remplaces 'Edit' par 'Insert' ou 'Append', le code compilera, mais à moins que tu contrôles vraiments bien le curseurs et l'index de la table, ta ventilation sera assez aléatoire.


    Dans ce cas, il faut utiliser un 2eme dataset pointant sur la meme table physique et faire l'ajout sur celle ci par exemple, pour ne pas changer le curseur de la table courante.

    (d'ailleurs, y-a-til vraiment qu'une seule table physique en jeu, il n'y a que toi qui le sait...)
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    En réalité j'ai plusieurs tables, mais dans cette partie du programme je me sert que de celle là (d'ailleurs la requête c'est simplement un
    "SELECT * FROM Table" ).

    Et comme je veux simplement modifier mes champs, ton programme marche nickel TicTacToe; merci à toi et à vous tous.

    @+.
    For crying out loud !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2006, 13h45
  2. mettre la date courante dans une table à chaque insertion
    Par zooffy dans le forum Administration
    Réponses: 1
    Dernier message: 21/04/2006, 14h44
  3. Pb d'écriture intempestive dans table avec SQL insert into
    Par pete_shifter dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/11/2005, 11h51
  4. Mettre un DBGrid en mode insertion
    Par n1portki dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/10/2005, 02h07
  5. table en mode insertion et bouton enabled = true
    Par marie253 dans le forum Bases de données
    Réponses: 7
    Dernier message: 09/09/2004, 14h03

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