ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

apprecord rajeuni   



L'auteur

eddymaue
Canada Canada
Membre Simple
# 0000000075
enregistré le 26/10/2004
Maue Eddy
j8j 8j8 Gatineau
de la société Formatek
Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation > Tableaux / Array

apprecord rajeuni
# 0000000148
ajouté le 19/02/2005 07:47:39 et modifié le 30/03/2005
consulté 3820 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0

Description
Une façon différente de faire. En plaçant la structure des tables sources (t1,t2) dans des tables (tblStruc1,tblStruc2). J'ai pu me servir de fonctions native de Vfp (Index on, Set Relation to, Scan et Insert into) beaucoup plus performante que les Ascan(),les boucles for et les copies multiples de données. Par contre je ne crois pas mon code fonctionne pour les version 4 et moins. Me semble qu'il n'y a pas eu de version 4...
Code source :
= CrerTable()
= apprecor("t1","t2")
* basé sur une idée d'Aumeric
********************
*AUMERIC :
*Cette fonction permet d'importer   dans la table fic1 , l'engeristrement en cours de la table fic2
*Les champs identiques (noms et structures, sont importés
* les deux tables doivents être ouvertes
*******************
Function apprecor
   Lparameters tcTbl1,tcTbl2

   Local lcOldTbl,cmd
   m.lcOldTbl = Alias()

   Select(m.tcTbl2)
   Copy Structure Extended To tblStruc2
   Use tblStruc2 In 0
   Select tblStruc2
   Index On Alltrim(field_name)+"."+field_type Tag fld

   Select (m.tcTbl1)
   Copy Structure Extended To tblStruc1
   Use tblStruc1 In 0
   Select tblStruc1
   SET RELATION TO
   SET RELATION TO ALLT(Tblstruc1.field_name)+"." +Tblstruc1.field_type INTO Tblstruc2 ADDITIVE
   SET STEP ON
   cmd1 = ""

   SCAN
      cmd1 = cmd1+ IIF(EMPTY(ALLTRIM(tblStruc2.Field_name)),"",IIF(EMPTY(cmd1),"",",")+"."+ALLTRIM(field_name))
   endscan
   cmd = "Insert into "+m.tcTbl1 +" ("+STRTRAN(cmd1,".","")+") values ("+STRTRAN(cmd1,".",m.tcTbl2+".")+")"

   &cmd

Endfunc

PROCEDURE CrerTable()
Set Step On
Close Databases
Set Step Off
Set Safety Off
Create Table t1 free(;
   c1 c(10), c2 c(12), n1 N(6,2), i1 i ,d1 d)
Insert Into t1 (c1 , c2 , n1 , i1  ,d1 ) Values (Sys(2015),Sys(2015),5.2,7,Date())
Create Table t2 free(;
   c2 c(12), c1 c(14),d2 d)
Insert Into t2 (c2,c1,d2) Values ;
   (Sys(2015),Sys(2015),Date())






Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2018.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0