Lire 2 tables sql et en faire 1 tabel foxpro

MVTNV Messages postés 19 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 20 janvier 2008 - 19 janv. 2008 à 15:41
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 - 20 janv. 2008 à 14:39
Bonjour,

Je voudrais lire en foxpro 2 tabels sql qui se trouvent sur 2 differantes serveurs internet.
Les 2 tabels sql doivent devenir 1 tabel sur le serveur dans notre bureaux.

Les 2 tabels sql contiennent chaqu'un le disponible de ce pay.

Maintenant comme ces 2 pays sont les plus grands producteurs de ces articles en Europe nous voudrions simmultannement rendre visible le disponible totale de ces 2 tabels dans 1 tabel.

Serveur 1
Tomates, tailles, nombre, prix
Pommes, tailles, nombre, prix

Serveur 2
Tomates, tailles, nombre, prix
Poires, tailles, nombre, prix

Serveur dans notre bureau
Pommes, tailles, nombre, prix
Poires, tailles, nombre, prix
Tomates, tailles, nombre, prix
Tomates, tailles, nombre, prix

Je pense que ça doit être possible mais je me demande comment?
Un tabel je peut lire mais 2 tabels sur 2 differantes serveur internet et en même temp, la je ne sais plus.

Quelqu'un peut m'aider?

Salutations distinguées,

Marc

3 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
20 janv. 2008 à 12:35
Bonjour,

comment fais-tu pour "lire" ta table sur le serveur1?
le résultat de cette lecture, c'est quoi? un curseur foxpro, ou une table sur ton disque local?

ce que tu veux, c'est tout simplement l'union des 2 résultats. Donc pour quoi ne pas utiliser la clause UNION d'une requète SQL?
0
MVTNV Messages postés 19 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 20 janvier 2008
20 janv. 2008 à 13:41
Bonjour Michel,

Je fais en foxpro

Connstr = [driver={MySQL ODBC 5.1 Driver};Server= IP;DATABASE=NOM;UID=USER;PWD=MOT DE PASSE;OPTION=1]
h= Sqlstringconnect(Connstr)
SQLExec(h,"Select * from nom de la table";"nom du variable que vous voulez selectionner")
Select nom du variable que vous voulez selectionner
Browse

Et je obtient un table lisible en foxpro ou je peut selectionner une ligne et utiliser le contenant de la ligne.

La clause Union je ne connais pas

Est-ce que vous pourriez me donner un peux plus de renseignement s.v.p.?

Salutations distinguées,

Marc
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
20 janv. 2008 à 14:39
pour bien préciser, il faut d'abord comprendre que SQLEXEC ne te donne pas une table, mais un curseur.

une table en foxpro, c'est un fichier dbf sur un disque. un curseur, c'est un jeu d'enregistrement extrait d'une table, ou créé par un SQLEXEC comme dans ton cas, ou par une vue.

le 3ème paramètre de ton SQLEXEC, celui que tu appelles "nom du variable que vous voulez sélectionner", c'est justement le nom du curseur qui sera créé, on parle aussi d'alias.

ton 1er SQLEXEC (sur ton serveur1) va donc te retourner le résultat dans un cursor1, le 2ème (vers le serveur2) va te retourner son résultat dans un cursor2 (il te faut juste lui donner un nom différent du 1er), et il te reste seulement à assembler les 2 dans un curseur final en utilisant la clause UNION (regarde l'aide de VFP sur ce sujet, ou bien achète le livre de Tamar Granor "Domptez les SQL de FoxPro", il est traduit en français, ou bien regarde l'aide sur ce sujet sur sqlpro.developpez.com)
Si tu préfères utiliser seulement du code foxpro pour obtenir ton curseur résultat final, c'est possible en utilisant un append from.
0
Rejoignez-nous