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 :

Query + réseau


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut Query + réseau
    Bonjour,

    je cherche à faire passer le résultat d'une requete BDE à partir d'une base PARADOX du serveur vers mon client. Comment dois-je encapsuler mes infos pour que tout passe d'un coup? Est-ce possible ou dois-je mettre tous les champs dans un type record (dans lequel je ne mets que des strings) ou y a-t-il un autre moyen?

    Donc, j'exécute une QUERY sur le serveur, et je voudrais afficher sur le client le résultat de cette QUERY.

    Merci d'avance

  2. #2
    Membre chevronné Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Par défaut
    On a du mal a comprendre le sens de ta question c'est pour ça que tu n'as pas de reponse.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    Merci de me le dire...

    J'essaye d'être un peu plus clair :
    1) Je fais une requete avec l'objet TQuery du style2) Je dois afficher le résultat de cette requête dans le programme client --> le faire passer sur le réseau.

    Ma question :
    Y a-t-il moyen de faire passer directement le résultat de cette requête grâce à un objet que je ne connais pas? ou dois-je utiliser une classe qui aura exactement la même structure que ma table interrogée?

    J'espère que je suis plus clair. :o

    Merci de votre aide

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Salut,
    T'es peut etre plus clair, mais je ne comprends pas la demarche :
    Ce n'est pas au serveur de poster la requete, c'est au client !!!

    Voila comment ca fonctionne :
    - Le client envoie sa requete au serveur via par exemple un SQLQuerry.
    - Le serveur, se charge de recevoir la requete du client, de la soumettre au moteur SQL, d'en retirer le resultat et de renvoyer le resultat au client.
    - Le client recois le resultat provenant du serveur, et la met a disposition au travers de composants comme DataSetProvider, SQLTable, ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    oui, c'est tout a fait ca que je veux faire.

    Mais peux-tu me dire comment faire passer le resultat de la requete du serveur vers le client.

    C'est ca que je ne parviens pas à faire... :-(

    Je sais envoyer ma query du client vers le serveur, le serveur exécute bien la requête et affiche (sur le serveur dans une fenetre de log) bien les données, mais je ne parviens pas à les afficher du coté du client.

    Merci d'avance

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Sur le client, qu'est ce que t'utilises comme composant ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    je suis toujours dans ma phase de test, je veux simplement afficher les données d'une table, donc, je peux utiliser TStringGrid par exemple, NON?

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Sans etre mechant, je pense qu'un petit tour par des tutos style "Comment developper des applications bases de donnees" te ferais le plus grand bien. J'ai pas trop le temps de te former non plus, mais la procedure a suivre est la suivante :

    Moi, j'utilise DBExpress, donc les composants suivants :
    (Toujours sur le client ! Le serveur on s'en fiche !)
    Il y a 1 composant TSQLConnection lie a la base de donnee + 4 composants pour lire et ecrire dans 1 table.
    * TSQLTable en renseignant les proprietes SQLConnection = TableName = la table sur laquelle tu veux travailler.
    * TSQLProvider avec DataSet = la TSQLTable precedente.
    * TClientDataSet avec DataSetProvider = le TSQLProvider precedent
    * TDataSource avec DataSet = le TClientDataSet precedent
    (Pour des details sur le role de chaque composant, je te demanderais de te referer a l'aide ou aux divers tutos dedies. Ce que je peux te dire, c'est que cette maniere de proceder est la plus souple et la plus portable.)

    Ensuite, pour AFFICHER tes donnees, dans une fenetre tu y met une TDBGrid avec DataSource = le TDataSource cree un peu plus haut.

    Tu n'as plus qu'a faire ClientDataSet.open pour voir et modifier tes donnees.

    Bon courage.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    c bien gentil de ton aide, mais la connexion à la base de données et l'affichage des données, j'y arrive...

    Ma question porte juste sur le transfert des données du réseau. Y a-t-il moyen de faire passer le DataSource sur le réseau, ou d'une autre méthode faire passer le résultat de ma query sur le réseau.

    Au fait, j'utilise le composant BDE...

    Encore merci de ton aide

  10. #10
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Une TStringGrid ne te permet pas de visionner une base de donnees.
    En tout cas, pas d'origine. Je pense qu'il vaut mieux commencer par utiliser ce qui existe, et ce qui ne demande pas de lourdes transformations.

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Ben ecoute ! je ne comprends pas ce que tu cherches a faire !
    Si tu arrives a afficher tes donnees depuis l'appli client, c'est que tu a bien receptionne le resultat de ta querry ! Qu'est ce que tu veux de plus ???

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    J'ai une base de données qui se trouve sur un pc serveur.

    J'ai un client qui se trouve sur une autre machine et j'aimerais afficher des données de la base de données sur le client en passant pas le réseau.

    C'est tout ce que je demande. J'ai dit que j'arrivais à afficher les données sur le serveur, donc, ma requete, ma connexion à la base de données et tout ca sont bons.

    Mon problème est que je ne parviens pas à passer les données sur le réseau. A chaque fois, il me passe un pointer. Ce qui n'est évidemment pas bon pour une communication TCP/IP.

    Donc, je veux juste savoir comment encapsuler les données pour qu'elles passent effectivement sur le réseau!

  13. #13
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Reprends mon poste precedent.
    OK ton serveur a sa connection et sa requete.
    Sur le client, la procedure est exactement la meme : Connection, Requete, et affichage. Donc recree la connection et la requete sur le client.

    Je crois comprendre ton probleme : tu n'arrives pas a connecter le client au serveur. Je me trompes ?
    La seule chose qui change, c'est la facon de faire la connection, donc de renseigner la propriete DataBaseName de ton TDataBase.
    Pour te connecter a une base distante, tu dois te referer a Paradox pour connaitre son "mode d'acces".
    Par exemple, avec Firebird, pour acceder a une base distante via le reseau, le chemin est le suivant :
    NomDeMonServeur:CheminPhysiqueDeLaBase
    Par ex :
    PosteARoger:C:\Programmes files\Firebird\Firebird1_5\Examples\Employee.fdb

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    Justement non, je ne peux pas me connecter à la database avec mon client. Il n'y a que le pgm serveur qui peut se connecter à la base de données. C'est la raison pour laquelle je dois faire passer les données sur le réseau.

    Tu comprends mieux mon problème maintenant je pense?

  15. #15
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Ben je suis pas sur de comprendre !
    La finalite c'est quoi ?
    Tu as bien une appli sur le client ? Pouquoi tu ne veux pas acceder aux donnees directement depuis le client ?

    ET SURTOUT, pour ce que tu veux faire, je ne pense pas que ce soit possible ! Ou alors, peut etre en passant par un fichier texte que tu cree sur le serveur. Ce fichier refletant le resultat de requete.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    Ben au fait, c un travail que je dois réaliser pour un boulot. Il n'y a que le serveur qui peut accéder à la base de données et qui peut faire des requêtes. Ce n'est pas moi qui veux ca, ce sont les contraintes que l'on m'a mises...

    Je pensais qu'il existait un moyen de faire passer un Dataset ou quoi sur le réseau.

    Mais ca me prend la tete, je ne vois pas comment je peux faire.

    Une idée???

    Merci

  17. #17
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Ben, par definition, dans une relation client serveur, il n'y a que le serveur qui accede directement au fichier renfermant les donnees !

    Pour preuve : essaie de faire ce que je t'ai dit, puis verifie bien que le repertoire ou le chemin du fichier BDD ne soit pas partage. Et tu verras que tu ne pourras pas y acceder directement via l'explorateur. C'est donc bien que cela passe par le SGBD qui lui se charge d'acceder au fichier.
    Par contre, il faut peut etre que tu sois vigilant sur les droits d'acces a ta base (les utilisateurs crees dans le SGBD et les GRANT de la base), mais la je ne suis pas expert, on peut meme dire que j'y connais rien !*

    A voir si ca repond a tes imperatifs. Mais je me repete, je ne vois pas comment faire autrement, les applications base de donnees client/serveur sont faites pour ca !

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Par défaut
    Merci pour ton aide.

    Je crois que je vais essayer ce que tu m'as dit plus haut.

    Je vais écrire le résultat de la requete dans un fichier txt, puis je vais faire passer ce fichier sur le réseau pour le relire sur le client.

    Merci encore pour ton aide...

  19. #19
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    J'ai pense a autre chose : Peut etre que les procedures stockees resoudraient tes pb.
    C'est la procedure stockee qui lance la requete et qui renvoie le resultat avec un curseur.

    A voir.

  20. #20
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    salut
    j'ai toujour faire la meme chose que toi, crée une application serveur sans utlisé une DBase client/seveur comme Interbase
    ce que tu as fait jusqu'a maintenant c'est bien , pour envoyé de serveur vers client c'est a toi de voir,
    deux méthode:
    1- simple transfére de données entre client serveur et c'est a toi de donnée une forme statique de donnée (type record: string+integer +...)
    a la récéption tu doit soit tu prend en charge la totalité de travail en utilisant des simple composant (stringgrid, edit,combon...) ou comme je veux faire (ne se faché pas contre mois les gas,ok?) utlisé une table temporére au j'enregistreles données resu, et bien sur avec des composant dbgrid dbedit liée a cette table

    2-ce que je souhaite faire a la venire c'est utlisé le midwere , alors si tu arive merci de me donnée une signe,
    voir: http://www.overbyte.be/frame_index.html


    bon chance et bon dev

Discussions similaires

  1. [Réseau] Créer une connexion Internet
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/10/2002, 18h01
  2. Réseau Win/Linux
    Par ben91 dans le forum Développement
    Réponses: 2
    Dernier message: 08/09/2002, 23h59
  3. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 15h01
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 16h40

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