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

 Delphi Discussion :

Append ou Insert quel est votre choix?


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Append ou Insert quel est votre choix?
    Bonjour à tous

    Voilà j'utilise pour insérer des enregistrements au sein d'une table DBASE IV le code suivant:

    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
    procedure TFSaisie.AjoutButton2Click(Sender: TObject);
    begin
      if Typecombo.Text <> '' then
        begin
         datamodule3.TabMission.Open;
         datamodule3.TabMission.append;
         datamodule3.TabMission.Fieldvalues['MATRICULE']:=datamodule3.personnel.Fieldvalues['MATRICULE'];
         datamodule3.TabMission.Fieldvalues['NOM']:=datamodule3.personnel.Fieldvalues['NOM'];
         datamodule3.TabMission.Fieldvalues['PRENOM']:=datamodule3.personnel.Fieldvalues['PRENOM'];
         datamodule3.TabMission.Fieldvalues['FONCTION']:=datamodule3.personnel.Fieldvalues['FONCTION'];
         datamodule3.TabMission.Fieldvalues['DEPT']:=datamodule3.personnel.Fieldvalues['DEPT'];
         datamodule3.TabMission.Fieldvalues['DATE_DEB']:=StrToDate(DateMaskEdit.Text);
         datamodule3.TabMission.Fieldvalues['DATE_FIN']:=StrToDate(DateMaskEdit2.Text);
         datamodule3.TabMission.Fieldvalues['TYPE']:=TypeCombo.text;
         datamodule3.TabMission.post;
         end;
     
    end;
    Je me suis documentée sur les 2 procédures: Append et Insert et il semblerais que je ne sois pas obligée de commencer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datamodule3.TabMission.Open;
    Je voudrais juste savoir si le fait de garder cette instruction ne risque pas de générer de mauvaises surprises, ou au contraire de l'enlever risquerais de faire débouler des erreurs du genre : ensemble fermé ou encore la table n'est pas en mode Insertion...
    Merci +++

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 665
    Points : 25 462
    Points
    25 462
    Par défaut
    Il faut toujours ouvrir la table avant une manipulation de lecture\écriture, voir le champ Active ...

    Après, si tu fais un Open systèmatiquement, mieux vaut faire un close aussi, cela risque par contre d'être plus lent

    en DBase ou Paradox, on ouvre les tables plus usités de l'application dans le OnCreate du DataModule, et on les ferme à sa destruction, ... je dis ça par c'est ce que j'ai vu, ce n'est pas le mieux (mais le plus pratique), si l'on veut faire du multi-utilisateur avec DBase, il vaut mieux ouvrir le minimum de temps que possible ...

  3. #3
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Oui, mais si je remplace les 2 instructions suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    datamodule3.TabMission.Open;
    datamodule3.TabMission.append;
    Par celles ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    datamodule3.TabMission.First;
    datamodule3.TabMission.Insert;
    Car en fin de compte j'aurais besoin que les enregistrements soient insérés au début de ma table, je vois que ça marche parfaitement sans pour autant ajouter une instruction pour l'ouverture de la table...

    Est ce que cela risque de créer des problèmes à l'avenir , Dans le cas de : Multi-utilisateurs , ou encore des accès différents en écriture et en lecture à partir de 2 fiches simultanément ouvertes qui risquerait de générer des erreurs ???

    Merci+++++

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 665
    Points : 25 462
    Points
    25 462
    Par défaut
    tu devrais relire l'aide, chaque fonction a une utilité propre, consulte aussi les Tutoriels du Forum, et les Exemples fourni avec le CD de Delphi, ...

    Open est un équivalent de Active := True, cela peut être mis via l'inspecteur d'Objet, comme je l'ai dit, Open est au moins appelé une fois dans l'application, avec son close qui va Avec
    Append ou Insert ajoute tout deux un enregistrement, il est juste géré différement dans la table en fonction de l'index, personnellement, je n'utilise que Append (parce que c'est le 1er que l'on m'a appris depuis je n'ai pas changé)
    D'ailleurs, il facile de voir la différence entre ces deux fonctions, lorsque l'on a une DBGrid, si l'on appuye sur Insert cela lance la fonction Insert, et lorsqu'on ajoute une ligne avec la touche fleche bas alors que l'on est sur la dernière ligne, cela lance Append ... mais essaye avec un TClientDataSet, tu verras que Insert ou Append ça fait pareil, pour les tables SQL cela ne change rien non plus, moi sous paradox n'ayant eu que des tables avec au moins un AutoInc comme clé primaire, je n'ai jamais non plus eu de différence ...
    First c'est pour déplacer le curseur au début de la table

    Sinon, pour DBase, il y a les composants Apollo, ils sont nettement plus performants que ceux du BDE avec un langage de requête particulier (le SQL via BDE étant bcp trop lent sur DBase), et cette lib, te posera bcp moins de problème pour du multi-utilisateur ...

  5. #5
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Merci pour tes explications!!!

    C compris, j'utiliserais de toute façon le APPEND comme tu me l'as appris!!!

    Merci!!!++++++

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    un petit alors ?

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

Discussions similaires

  1. Quel est votre version préférée de windows ?
    Par netah25 dans le forum Windows Serveur
    Réponses: 114
    Dernier message: 21/04/2009, 20h43
  2. [Archive] Quel est votre langage de programmation préféré ? (2004..2008)
    Par Idelways dans le forum Débats sur le développement - Le Best Of
    Réponses: 403
    Dernier message: 04/02/2009, 00h56
  3. Quel est votre livre préféré sur Java ?
    Par Ricky81 dans le forum Général Java
    Réponses: 138
    Dernier message: 25/11/2006, 03h42
  4. Quel est votre outils de statistique préféré?
    Par jexl dans le forum Statistiques
    Réponses: 2
    Dernier message: 21/11/2005, 13h11
  5. Informaticiens de ce forum, quel est votre métier ?
    Par Bidouille dans le forum Emploi
    Réponses: 46
    Dernier message: 21/07/2005, 12h12

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