begin process at 2010 02 09 18:06:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Foxpro

 > 

Divers

 > 

Aide et documentation

 > 

Sql server from FoxPro


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Sql server from FoxPro

samedi 19 août 2006 à 16:31:30 | Sql server from FoxPro

kiratme


Bonjour TOUT le monde

j'ai une tres grosse BD ( 2.000.000 records)  et je l'ai repassé (importer dans un serveur sql server)
ceci m'a resolu pas mal de problemes
mais voila j'ai un problermr technique j'aimerai acceder a des tables  
et les parcourir (pour des maj ) genre :

do while not eof()
   
   && traitement

   skip
enddo

merci d'avnce
dimanche 20 août 2006 à 12:57:51 | Re : Sql server from FoxPro

MichelAtoutFox

Membre Club
Réponse acceptée !

Bonjour,

quelle version de FoxPro utilises-tu?

Pour accéder à des tables stockées sur un serveur SQL, tu peux utiliser les vues, ou bien le SQL Pass-Through, ou bien les Cursor Adapter (VFP9)

De toutes façons, je te conseille d'utiliser plutot un SCAN / ENDSCAN pour parcourir un curseur, plutot qu'un do while not eof() / skip.

dimanche 20 août 2006 à 19:14:18 | Re : Sql server from FoxPro

kiratme

Merci bcp
samedi 26 août 2006 à 18:59:20 | Re : Sql server from FoxPro

kiratme

Bonjour

voici un squelette d'un programme

pouvez vous m'aider a le finir pour avoir qlq chose qui tourne 
merci d'avance  



&& debut prg

wserver='MQIS'

wlog='sa'

wpswd=''

 

&&STORE SQLCONNECT(wserver, wlog, wpswd) TO gnConnHandle

STORE SQLCONNECT

(wserver) TO gnConnHandle

IF

gnConnHandle <= 0

=

MESSAGEBOX ('Cannot make connection', 16, 'SQL Connect Error')

RETURN

ELSE

= MESSAGEBOX ('Connection made', 48, 'SQL Connect Message')

ENDIF

 

&& Acces to table ???

&& j'aimerai pouvoir accesder a des tabes ou query avec des alias comme des tables en Foxpro

 

 

SCAN

&& acces to field ???

&& genre SCatter memvar  ou VIA les alias

 

&& update table /field ???


LOOP

ENDSCAN



Et encore merci

dimanche 27 août 2006 à 15:19:49 | Re : Sql server from FoxPro

MichelAtoutFox

Membre Club

Quelle technique veux-tu utilser ? les vues ou bien SQL Pass-through?

Pour les vues, il te faut créer un database. Dans ce database, tu ne crées pas de table, mais une connexion à ton serveur SQL (l'assistant va très bien pour ça dans un premier temps). Ensuite (toujours avec l'assistant), tu crées dans ce database tes vues sur les tables de ta base de donnée SQL. Ces vues "contiennent" la requète SQL (le query), et portent un nom que tu vas utiliser exactement comme si c'était une table :

use mon_dbc!ma_vue alias toto in 0
select toto
scan
...<tout ce que tu veux>...
endscan

par sécurité (par exemple si tu utilises une identification user dans SQL, et que tu ne veux pas stocker de pw dans ton dbc fox), tu peux utilser une autre connexion que celle qui est définie dans ton dbc avec USE ma_vue CONNSTRING...

Avec SQL Pass-through, les choses sont une peu plus compliquées à écrire, parce que tu vas stocker ta requète dans une chaine de caractère, que tu vas "passer" à ton serveur SQL par la commande SQLEXEC ; ton serveur SQL va exécuter cette requète et te retourne le résultat dans un curseur dont le nom est le 3ème paramètre de la commande SQLEXEC. Tu fais ce que tu veux ensuite sur ce curseur..
Quelques exemples tirés de l'aide deVFP9:
******************
CLEAR
LOCAL lnConn
LOCAL lnPercent AS Int  && Input parameters must be typed.
LOCAL lnOutput
lnPercent = 50
lnOutput = 0

* Make connection, assuming a local trusted connection.
lnConn = SQLCONNECT('local')
IF m.lnConn > 0  && Success.

   * Set the active database to PUBS.
   SQLEXEC(m.lnConn, 'use pubs')

   * Execute SELECT statement.
   SQLEXEC(m.lnConn, 'SELECT * FROM authors', 'PubAuthors')
   BROWSE
 
   * Execute INSERT statement, get value of identity field.
   SQLEXEC(m.lnConn, "INSERT INTO JOBS (job_desc, min_lvl, max_lvl);
       VALUES ('Developer',75,150)")
   SQLEXEC(m.lnConn, "SELECT SCOPE_IDENTITY()", "job_id")
   ? "ID for added Job is " + LTRIM(STR(job_id.exp))

   * Execute DELETE statement. Get number of records affected.
   SQLEXEC(m.lnConn, "DELETE FROM JOBS WHERE job_desc ='Developer'")
   SQLEXEC(m.lnConn, "SELECT @@ROWCOUNT", 'rowcount')
   ? rowcount.exp, "record(s) deleted"

   * Call a stored procedure with no parameters.
   SQLEXEC(m.lnConn, 'sp_who', 'activeusers')
   BROWSE

   * Execute stored procedure with an INPUT parameter.
   SQLEXEC(m.lnConn, 'exec byroyalty ?lnPercent','HalfOffAuthors')
  
   * Create temp stored procedure with OUTPUT parameter and call it.
   SQLEXEC(m.lnConn, "CREATE PROCEDURE #MyProc @outparam int OUTPUT AS;
      SELECT @outparam=100")
   SQLEXEC(m.lnConn, "exec #myProc ?@lnOutput")
   ? m.lnOutput
  
   * Create a temp stored procedure with INPUT and OUTPUT parameters
   * and call it.
    SQLEXEC(m.lnConn, "CREATE PROCEDURE #MyProc2 " + ;
                      "@inputparam INT, " + ;
                      "@outparam int OUTPUT " + ;
                      "AS SET @outparam=@inputparam*10")
    SQLEXEC(m.lnConn, "exec #myProc2 ?lnPercent, ?@lnOutput")
    ? m.lnOutput

   * Get version information.
   SQLEXEC(m.lnConn, 'SELECT @@VERSION','SQLVersion1')
   ? STRTRAN(SQLVersion1.Exp,CHR(0)) 

   * Disconnect.
   SQLDISCONNECT(m.lnConn)
ELSE
   ? "Unable to connect to SQL Server"
ENDIF
RETURN
*********************

Il existe un excellent livre sur la question "Taming Visual FoxPro'SQL" que l'association AtoutFox vient de traduire en français. Tu le trouveras ici: http://www.hentzenwerke.com

ATTENTION AU LOOP DANS LE SCAN ! ça n'est pas une faute de syntaxe, mais je ne suis pas certain que tu en aies vraiment besoin (tu veux vraiment réexécuter tes instructions sur le même enregistrement??)

lundi 28 août 2006 à 18:05:31 | Re : Sql server from FoxPro

kiratme

Hi

j'ai essaye la connexion via odbc (vue) c'est effectivement très facile
le seul hic : impossible de faire des maj type  ::

replace all Adresse wtih 'A'

ou
scatter memvar
&& calcul
.
.
.
.

gather memvar

les info  sont accessible en mode Read 
   , pas moyen de faire des update

je vais essaye de faire un essai avec SQL Pass-through et mettre des "stored procedure" pour faire les update

@+


 
mardi 29 août 2006 à 08:23:52 | Re : Sql server from FoxPro

MichelAtoutFox

Membre Club
Regarde les propriétés de ta vue (critères de mise à jour - Update criteria en anglais).

Il te faut cocher la case Envoyer mises àjour, et pour chaque champ, décider ceux qui doivent être mis à jour.
mercredi 25 octobre 2006 à 20:02:31 | Re : Sql server from FoxPro

Azraelinou

Membre Club

Euh, bonjour tout d'abord, et si je peux me permettre, il suffit de faire des SQLEXEC(Handle (Integer), Query (String)) pour faire un update des données et surtout, faire autre chose que de simples requêtes de SELECT. par exemple tout simplement appeler une SP, une vue ou meme modifier la structure d'une table...

En éspérant que malgré mon retard dans le sujet, ça puisse aider quelqu'un dans un futur ou quelqu'un utilisera encore Fox ;-)...
jeudi 26 octobre 2006 à 09:10:54 | Re : Sql server from FoxPro

MichelAtoutFox

Membre Club
Bonjour Azraelinou,

et merci de tes conseils.... mais dis moi, Visual FoxPro, tu connais vraiment? Et les settings de SQLSETPROP qui permettent d'aller au delà du "il suffit de..?"

Et oui, dans le futur de SQL server, on utilisera encore beacoup FoxPro, parceque c'est le frontal d'accès le plus rapide pour accéder aux données.


Cette discussion est classée dans : sql, server, from, foxpro


Répondre à ce message

Sujets en rapport avec ce message

foxpro et sql server [ par BOUALLEG ] j'ai réalisé une application de gestion de la caisse d'un magasin, j'ai utilisé: foxpro comme lgge de prommation et sql server comme gestionnaire de b Transfère données vers sql 2005 [ par zuddap ] bonjour a tous voila on m'a confier la charge de transférer les donnée contenu dans un fichier table foxpro dans les table correspondante sous sql 200 sql et installshield [ par hab162002 ] bonjour, j'ai un probleme avec sql server, j'ai concu une application client serveur qui marche tres bien dans mes 2 poste, foxpro est  installe dans interroger table foxpro par odbc par sql en excluant les records deleted [ par beaProd ] BonjourJ'interroge des tables foxpro, via le driver odbc, par Select Sql, dans un programme en vb.net 2.0. Si des lignes ont été modifiées elles appar migration sql vers foxpro [ par tmcuh ] Bonjour je dois migrer 200 bases de données sql contenant à peu de choses près 4 tables chacune. Avant de me lancer dans la programmation pure et dure Visual FoxPro 6 et SQL serveur [ par cyrileur ] Bonjour;Je veux utiliser foxpro sur une base sql serveur ( avec ODBC ). Actuellement j'arrive à me connecter à ma base avec Accès. J'arrive à faire de Affichage des données provenant d'une base sql server different d'un poste à l'autre. [ par feeling__ ] Bonjour à tous !Voila j'ai developpé un utilitaire en fox pro qui attaque une base sql server et mon souci c'est que sur mon poste (post de dev) l'aff SQL - "delete from" ne fonctionne pas ;'( [ par highmasterc ] Bonjour à tous. Alors voila, dans mon code, j'utilise une table nommmée table2 (c'est une "free table").J'execute deux requêtes SQL sur cette table qu Ordre dans une liste déroulante (foxpro 2.6) [ par ebol ] Bonjour Que dois- je rajouter dans  mon programme pour voir  à l’écran une liste dérou Visual foxpro et access [ par steboy ] Bonjour, Je dois récupérer dans une table DBF des données d'une table access. <P class=MsoNo


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales