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 :

utilisation de DBGRID en Reseau


Sujet :

Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut utilisation de DBGRID en Reseau
    Bonjour à tous,
    j'ai une application spéciale supérette jusqu’à là utilisée sur un seul poste et pour les besoins d'agrandissement le client veut créer plusieurs autre poste qui implique la conversion en version réseau.

    mon application utilise un dbgrid pour la mise à jour de la base de données, et je voudrais savoir s'il y aura pas des conflit entre les postes sachant que les saisie se font par N° ticket généré par GEn_id.
    merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    L'utilisation d'un DBGrid pour faire la mise à jour des données d'une base ne me semble pas la meilleure solution. Si cette solution est possible en mono-poste, elle peut devenir rapidement une galère en réseau.

    Il faut également prendre en compte que ce type de composant exige une importation, sur le poste, de la totalité de la table pour permettre la navigation.

    Je pense qu'il vaut mieux créer une fiche pour créer ou modifier une ligne de la table ou des tables nécessaires à la mise à jour. Dès la saisie ou la modification, il est possible d'effectuer un commit ce qui permet aux autres utilisateurs de pourvoir visualiser les derniers enregistrements.

    Par contre, il est possible de faire la saisie d'un ticket comportant plusieurs lignes avec un dbGrid. Il faut simplement bien codifier l'isolation des opérations.

    Pour en dire plus, il faudrait connaître le schéma de ton application et les informations qui sont utilisées dans le dbGrid.

    Bon courage

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut
    bonjour @seabs,

    pour chaque nouveau ticket j'utilise le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    FDM.REQR.SQL.strings[0]:='SELECT GEN_ID(VEN,1) AS NUMERO FROM RDB$DATABASE';
    FDM.REQR.open;
    edit1.text:=reqr.filedbyname('numero).asstring;
    ////             
    Table.sql.strings[0]:='select * from VEN where ticket='''+edit1.text+'''';
    table.open;

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    dans bon nombre de tes sujets , on t'a déjà fait part de nos réflexions au sujet des DBGrids , on t'a répété que les DBgrids doivent surtout être utilisées pour des affichages et , qu'en réseau , évidemment cela pouvait causer de nombreux soucis .

    et je voudrais savoir s'il y aura pas des conflit entre les postes sachant que les saisie se font par N° ticket généré par GEn_id.
    enfin je remarque qu'il y a eu quelques progrès ! j'espère aussi qu'il n'y a plus qu'une seule Base et non plus plusieurs comme au début
    mais si tu nous disais ce qu'affichait la DBGrid , cela nous avancerait !
    - si la dbgrid affiche les Tickets -> oui , il y aura de drôles de choses
    - si la Dbgrid affiche les Lignes du Ticket -> non , il n'y aura pas de problèmes SI et SEULEMENT SI ce même ticket n'est pas "ouvert" ailleurs

    tu peux aussi considérer d'autres manières de faire ,
    par exemple : les tickets sont saisis dans une Globale Temporary Table et ne sont 'mis dans la base' qu'à la validation (paiement)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut
    @SergioMaster,

    Je te remercie beaucoup c'est toi qui m'a donné l'idée de 'GEN_id' . pour le dbgrid j'en suis amoureux, il me facilite le travail.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    pour le dbgrid j'en suis amoureux, il me facilite le travail.
    J'en suis conscient et mes utilisateurs en redemande
    ce que je veux surtout te faire comprendre c'est que dans un environnement multi-user ce n'est pas forcément la meilleure des choses .
    Le DBGrid est une photographie a un instant T d'un DataSource , l'utilisateur ne rafraichit pas cette dernière , le programme pas forcément
    (sauf en gérant les EVENTS et encore c'est pas le top) .
    C'est pour ça que je/on recommande des DBGrids en lecture seule et une 'fiche/zone' de modification à part .
    Cet usage , les utilisateurs le comprendront de plus en plus facilement grâce aux mobiles et tablettes qu'est-ce qu'une DBGrid sinon une liste avec sa fiche de modification
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut
    @sergio master,

    j'ai un champs dans ma table de saisie que j'ai appellé 'UTILISATEUR', qui enrégistre le nom de l'utilisateur. Evidemement l'accée à la base de données se fait par mot de passe propre à chaque utilisateur, ainsi l'utilisateur n'a accé qu'au ventes lui corréspondant donc pas de confit d'accée. Et pour ajouter sur le Dbgrid c'est qu'il s'occupe lui même de l'apport des données et comme tu sais dans une application déstinée pour une supperette ou grande surface l'exigence principale c'est la souplesse de manipulation

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    j'ai un champs dans ma table de saisie que j'ai appelé 'UTILISATEUR', qui enregistre le nom de l'utilisateur. Évidement l’accès à la base de données se fait par mot de passe propre à chaque utilisateur, ainsi l'utilisateur n'a accès qu'auw ventes lui correspondant donc pas de confit d’accès.
    ben ceci peut se faire dans une GTT , et pas besoin de gérer l'utilisateur
    dans une application destinée pour une supérette ou grande surface l'exigence principale c'est la souplesse de manipulation
    Souplesse ne veut pas dire forcément Grille , de plus la saisie se faisant en général par code barre ce n'est pas dans un dBGrid que je fait cela mais plutôt
    dans une zone de saisie , par exemple ainsi : à gauche le ticket , à droite la saisie , de chaque coté des 'actions'
    Nom : Capturer.JPG
Affichages : 392
Taille : 100,3 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut
    Bonjour sergio,

    voici la représentation graphique de ma fiche de saisie, tu comprendrai bien pour quoi j'utilise le Tdbgrid
    Nom : gg.jpg
Affichages : 398
Taille : 107,4 Ko

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    J'ai examiner ton envoi, il me semble possible de traiter la saisie ligne par ligne.

    J'ai une application qui ressemble à la tienne. Personnellement, je procède ainsi :

    J'ouvre un DBGRID sans aucune indication ;
    Pour chaque ligne à saisir, j'ai créé une fiche qui vient se positionner sur la ligne du DBGrid ;
    Lorsqu'elle complète, je valide et commit ;
    La dbGrid est rafraîchie avec les nouvelles données ;
    Ensuite j'ai une validation total du ticket avec une annulation possible.

    Bien entendu, il est possible de modifier une ligne ou de la supprimer

    Comme le dit très bien @SergioMaster, le dbgrid ne sert qu'à visualiser. En pilotant cela avec un query, le trafic sur le réseau est limité au seul besoin du moment.

    Bon après, chacun apporte sa touche personnelle pour permettre une saisie rapide. Dans ce cas, j'ai prévu un pilotage clavier avec + pour un ajout, - pour une suppression et / pour une modification.

    Tout cela permet d'obtenir une rapidité suffisante pour les opérateurs.

    Bien entendu, la mise en place de code barre peut améliorer très nettement la saisie.

    Voilà pour une idée, maintenant à toi de vérifier si cela est applicable à ton cas.

    Bon courage

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut
    bonjour @seabs, je te remercie beaucoup pour tes éclaircissements mais j'ai quelques remarques.
    J'ouvre un DBGRID sans aucune indication
    c'est une idée, mais moi je donne la possibilité à l'utilisateur de revenir en arrière donc le dbgrid doit avoir les données d'un ticket précédent.
    Pour chaque ligne à saisir, j'ai créé une fiche qui vient se positionner sur la ligne du DBGrid
    mais comment avoir la position réelle de la ligne(TOP), j'ai déjà essayé avec l’événement afterpaint, mais il donne pas toujours la position juste.

    en plus pour la suppression d'une ligne , moi j'utilise le Dataset exple:dataset.delete, alors comment remplacer avec une commande sql sachant qu'il s'agit de la suppression d'une ligne d'un ticket.

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    mais moi je donne la possibilité à l'utilisateur de revenir en arrière donc le dbgrid doit avoir les données d'un ticket précédent.
    Moi aussi, et d'ailleurs a tous les tickets , mais pour cela l'utilisateur doit Changer de ticket et donc ma "DBGrid" ne contient que les lignes du ticket en cours
    mais comment avoir la position réelle de la ligne(TOP), j'ai déjà essayé avec l’événement afterpaint, mais il donne pas toujours la position juste.
    pas de "magouille" avec les grilles cela pose toujours des problèmes, une numérotation de Ligne garde l'ordre de saisie , au pire , un hacking de la dbGrid permet de savoir
    quel est la ligne en première position dans la Grille (une DBGrid n'est qu'un stringgrid particulier)
    en plus pour la suppression d'une ligne , moi j'utilise le Dataset exple:dataset.delete, alors comment remplacer avec une commande sql sachant qu'il s'agit de la suppression d'une ligne d'un ticket.
    eh bien moi j'utilise une Query DELETE , après tout les UPDateSQL sont là pour ça

    Quant à ton GUI , perso , j'aurais fait la Grille et en dessous , un panel avec zones de saisie identique à la Grille
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Comment utiliser un DBGRID
    Par nd25 dans le forum Débuter
    Réponses: 6
    Dernier message: 24/11/2008, 10h56
  2. [Débutant] Comment utiliser une DBGrid ?
    Par braecking dans le forum Composants VCL
    Réponses: 4
    Dernier message: 07/02/2008, 18h30
  3. Probleme utilisation des DBGrid
    Par guillaume74960 dans le forum C++Builder
    Réponses: 7
    Dernier message: 26/04/2007, 18h33
  4. UTILISER UN Dbgrid
    Par COSMELUX dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/07/2006, 21h06
  5. [D7] pourquoi utiliser un DBGrid ?
    Par raoulmania dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/11/2005, 15h37

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