Salut,
je suis entrain de réaliser une application avec borland c++ builder 6 dans un réseau local et j'ai une base de données paradox 7 dans le serveur et le composant DBgrid dans la partie client.
comment manipuler DBgrid avec les sockets?
Merci.
Version imprimable
Salut,
je suis entrain de réaliser une application avec borland c++ builder 6 dans un réseau local et j'ai une base de données paradox 7 dans le serveur et le composant DBgrid dans la partie client.
comment manipuler DBgrid avec les sockets?
Merci.
Merci de poser des questions précises,pour espèrer obtenir des réponses convenables:lahola:
Un bout de code,une explication du problème en rapport avec le code posté , un tour du côté de la FAQ ou des codes sources, avant de poster t'aiderons a obtenir de l'aide
Merci
Sache que Paradox se manipule parfaitement via un partage de fichier Windows ou Samba !
C'est probablement un exercice scolaire, l'utilisation du TCP\IP doit être fait par le programme
Il faut commencer par découper la problématique !
* Il faut savoir lire une Table (voir TTable\TQuery)
* Il faut savoir communiquer (voir TClientSocket\TServerSocket ou TTCPClient\TTCPServer, il y a aussi Indy ou ICS)
* il faut définir un protocol d'échange, un TClientDataSet peut founir un outil de sérialization !
Voici un scénario possible !
* Client :
- DBGrid + DataSource + ClientDataSet
On peut utiliser un TMemoryStream pour alimenter le ClientDataSet via la fonction LoadFromStream
1- le client demande la visualition d'une Table et envoie la commande sous format texte : "OPEN:TABLE:LeNomDeMaTable"
2- le server reçoit la demande, analyse la demande, créé un objet TTable avec TableName contenant "LeNomDeMaTable.db" lié à un TDatabase qui défini l'alias
3- Le TTable créé est relié à un TDataSetProvider et ClientDataSet, tu ouvres ce dernier, avec SaveToStream(XML), tu obtiens une version sérializée de la Table, tu renvoie un buffer comme "DATA:TABLE:LeNomDeMaTable:<xml datapacket ...>
4- le client reçoit la réponse, analyse et découpe le Buffer, un LoadFromStream du TClientDataSet !
Le tour est joué !
Très simpliste, pas très performant mais l'idée est là !
on pourrait imaginer une autre forme de commande comme "RUN:SQL:SELECT * FROM LeNomDeMaTable", qui utiliserait un TQuery à la place d'un TTable pour récupérer moins d'enregistrement !
Ensuite avec Midas, il est possible de développer son propre DataSetProvider pour gérer l'utilisation de paquets de données !