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 :

Utilisation 'Controles de données'


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 50
    Points : 44
    Points
    44
    Par défaut Utilisation 'Controles de données'
    Bonjour,

    J'utilise Delphi 2009, ses composants ADO et SQL serveur 2005.

    J'utilise donc :

    TAdoTable.Active := True
    TAdoTable.Append ou Edit (en fonction du besoin)
    ...
    TAdoTable.Post

    Tout cela est super pratique puisqu'on peut les lier avec des DbEdit, DbMemo, etc qui mettent à jour automatiquement la table après un Post.

    Sur des petites tables, pas de problème MAIS sur des tables de + de 5000 enregistrements, un TAdoTable peut mettre jusqu'à 5 secondes pour s'ouvrir (TAdoTable.Active := True).

    Bien sur, il est possible d'utiliser un TQuery et 'insert into' ... JE SAIS.
    Mais on perd le bénéfice des composants DBEdit, DbMemo, etc.

    J'ai essayé de filtrer la Table avant de l'ouvrir (par exemple si ou ouvre la table uniquement pour y inserer un enregistrement) :

    TAdoTable.Filter := 'Auto =1'
    TAdoTable.Filtered:=True
    ou
    TAdoTable.MaxRecords:=1
    puis
    TAdoTable.Active:= True

    Mais le temps d'ouverture est toujours le même.

    Y a t'il un moyen d'utiliser les composants de la rubrique 'Controles de données' en ajout/modification sans passer par un TTable ?

    Merci de vos réponses,

    Cyrille

  2. #2
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut desactive le datasource
    bonjour
    désactiver le datasource avant open (active := true) et réactive le après, ca fait déjà gagner du temps.

    André

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,


    J'ai eu le meme probleme mais sur des tables de + 300 000 enregistrements, il y a pas mal de paramètres à prendre en compte.

    Que comptes-tu faire exactement ?

    Afficher un liste de données (d'enregistrement) ?
    un masque de saisie ? sur tel ou tel enregistrement ?

    Mais tu doit commencer par regarder le composant ADOConnection et régler les différentes propriétés correctement.

    A plus.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 50
    Points : 44
    Points
    44
    Par défaut
    Bonjour à tous,

    Je fonctionne souvent de la facon suivante pour ajouter/modifier un enr. :

    Une fiche apparait avec un composant TTable dessus. Pour un Ajout , TTable.Append et pour une modif, je filtre la table sur l'enr. voulu et TTable.Edit.

    Les composants DbMemo, DbEdit, etc me servent à renseigner ou modifier les valeurs suivant le cas.

    Je ne parcours donc jamais la liste complete des enr. de la Table. Pour cela, j'utilise un TQuery (beaucoup plus rapide).

    Je pense que le TTable lit systematiquement l'ensemble des données de la Table et c'est justement ce que je voudrai eviter car je n'en ai pas besoin.

    Existe t'il un composant qui puisse se connecter Rapidement à une table sur un enr. unique (en modif) ou sur un nouvel enr. (en ajout) et qui permette de le lier aux composants DbMemo, DbEdit, etc afin d'eviter trop de code SQL.

    Rappel de ma problematique : Sur des Tables de + de 5000 enr. , le composant TADOTable met env 10 secondes à s'ouvrir.

    Cordialement,

    Cyrille.

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Un composant TTable récupère toujours l'intégralité des données dans ta table donc si tu as 10 000 enregistrements il te rapatriera tes 10 000 enregistrements sur ton poste puis te les affichera.
    Donc plus tu auras de données plus cela sera long à ouvrir.

    La seule solution est de passer par une requête simple (simple c'est une requete : select * from matable where montruc = machin) qui te permet de ne rapatrier qu'une partie des données.
    Après il est tout à fait possible de faire des append, edit sur cette requête.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  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;

    je me demande toujours quelle est l'utilité d'ouvrir une table lors du lancement d'une application ?
    en plus, on travaille toujours et tout le temps avec un nombre très restreint de données donc pourquoi vouloir tout charger ?

    en résumé, les requêtes semblent une évidence pour ton cas.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

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

Discussions similaires

  1. [Sécurité] controle des données
    Par nath-0-0 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/05/2006, 14h04
  2. Utilisation Base de données simple
    Par Chacks dans le forum Bases de données
    Réponses: 4
    Dernier message: 30/04/2006, 19h31
  3. [Fichier Texte] Est-ce utilisable pour importation données ?
    Par avantoux dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/12/2005, 17h55
  4. utiliser base de donné d'1 autre site
    Par hm19000 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/11/2005, 13h40
  5. [VB.NET] Composant utilisée pour changer donnée access
    Par moust dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2005, 10h44

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