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 :

Rafraîchir les données d'une base Access et table ADO


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club Avatar de divil15
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2012
    Messages : 45
    Points : 0
    Points
    0
    Par défaut Rafraîchir les données d'une base Access et table ADO
    Bonsoir
    Comment Rafraîchir les données alternatives post

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 098
    Points : 38 161
    Points
    38 161
    Billets dans le blog
    59
    Par défaut
    Bonjour,

    Close/Open est le plus simple. Pour éviter le scintillement, on encadre généralement ça d'un bloc Disablecontrols/EnableControls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADoQuery1.Disablecontrols;
    ADoQuery1.Close;
    ADoQuery1.Open;
    ADoQuery1.Enablecontrols;
    PS. Avec Firedac c'est légèrement plus court à écrire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FQuery1.Disablecontrols;
    FDQuery1.Open('');
    FDQuery1.Enablecontrols;
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Nouveau Candidat au Club Avatar de divil15
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2012
    Messages : 45
    Points : 0
    Points
    0
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Begin
    Datamodule1.Adorable1.append ;
    Datamodule1.Adorable1.post
    End.
    Le problème est que quand je fais une prévisualisation sur l'état où j'ai inséré des données dans tbl1, l'affichage ne se fait qu'après fermeture/ouverture de mon programme.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 098
    Points : 38 161
    Points
    38 161
    Billets dans le blog
    59
    Par défaut
    Franchement, dans votre première question vous auriez dû être largement plus explicite !
    Même si j'avais encore en mémoire vos questions concernant le fait que vous utilisiez ADO j'vais garder en tête le fait que vous utilisiez une ADOQuery

    Qu'est-ce que vous n'avez pas saisi dans le fait qu'il fallait faire un close/open après le post et qu'il n'y avait qu'à transposé à votre cas particulier
    Il existe peut-être aussi une instruction Refresh qui exécute le Close/Open.
    Le fait que je déteste ADO et donc ne l'ait même pas installé n'arrange rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Begin
    Datamodule1.Adorable1.append ;
    Datamodule1.Adorable1.post;
    Datamodule1.Adorable1.DisableControls;
    Datamodule1.Adorable1.Close;
    Datamodule1.Adorable1.Open;
    // ou Datamodule1.Adorable1.Refresh s'il existe
    Datamodule1.Adorable1.EnableControls;
    End.
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 : 12 836
    Points : 23 249
    Points
    23 249
    Par défaut
    Attention avec un Close/Open, on perd la position du curseur, si c'est important de conserver la position, il faut mémoriser les ID puisque éventuellement faire un Locate, sachant que si un DBGrid est associé malgré le DisableControls/EnableControls, le premier enregistrement visible ne sera pas le même, forcer un défilement est possible mais pas aisé.


    Curieux, on dirait un problème de FlushBuffer mais normalement c'est BDE et non sur ADO ça
    Faudrait regarder les combinaisons de CursorType et CursorLocation voire même LockType pour vérifier que vous n'êtes pas en mode mises à jour groupées qui requiert donc l'utilisation de UpdateBatch, je connais un peu ADO sur SQLServer mais pas du tout sur ACCESS, j'ignore ce que cela supporte ou non.

    Utiliser des TADOTable est toujours un piège, vous devriez plutôt utiliser des TADOQuery avec SQL pour lire SELECT et pour écrire UPDATE/INSERT et songer à utiliser SQL Server Developper Edition car ACCESS n'est pas une solution pour y construire un logiciel autour, faut rappeler que ACCESS fait parti d'une suite bureautique et n'a pas la prétention d'être un SGBD, surtout que ACCESS permet de faire ses propres formulaires pour une utilisation strictement monoposte de petite application interne.

    Je n'évoquerais même pas les Transaction car je ne crois pas que ça existe en ACCESS et que ADO est AutoCommit par défaut.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 098
    Points : 38 161
    Points
    38 161
    Billets dans le blog
    59
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Attention avec un Close/Open, on perd la position du curseur, si c'est important de conserver la position,
    Ce n'était pas demandé .
    Dans ce cas, puisqu'il y a un Datamodule1.Adorable1.Append il faudra un Datamodule1.Adorable1.Last avant le Datamodule1.Adorable1.EnableControls.
    Mais, là encore, comme il n'est pas indiqué s'il y a utilisation d'index ...
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2022, 08h31
  2. Quels contrôles pour extraire les données d'une base Access
    Par Claude_Azoulai dans le forum Visual Studio
    Réponses: 4
    Dernier message: 19/02/2016, 21h35
  3. Copier les données d'une base Access vers SQLServer
    Par Mia28 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/01/2016, 12h15
  4. Exporter les données d'une base access vers Paradox
    Par MonPc dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/07/2008, 21h35
  5. importer les données d'une base access
    Par warraf dans le forum Access
    Réponses: 9
    Dernier message: 08/11/2005, 23h40

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