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

REMPLIR UNE TABLE OU UNE BASE POUR TEST   



L'auteur

Ludo186
France France
Membre Simple
# 0000000010
enregistré le 13/10/2004

43 ans
FORESTIER Ludovic
37250 Veigné
de la société ATER
Fiche personnelle


Note des membres
pas de note

Contributions > 04 - DBF : Tables

REMPLIR UNE TABLE OU UNE BASE POUR TEST
# 0000000441
ajouté le 27/04/2007 12:54:57 et modifié le 27/04/2007
consulté 5464 fois
Niveau débutant

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

Description
Voici un peu de code qui permet d'insérer des données dans une table sans avoir à connaître les noms des champs et leur type
Code source :
************************************************************
***** Remplissage rapide de table ou d'une base de test
************************************************************


LPARAMETERS tc_File
LOCAL lb_Open

CLOSE DATABASES
CLOSE TABLES

#DEFINE kc_valTxt  "CHAMP TXT"
#DEFINE kc_valMEM  "CECI EST POUR UN CHAMP MEMO"

lb_Open = .T.

IF PCOUNT() = 1 AND VARTYPE(tc_File) = "C"
  lb_Open = OpenFile(tc_File)
ELSE
  lb_Open = .F.
ENDIF

IF !lb_Open
  lc_FilePath = GETFILE('DBC;DBF',"Select DATA","Select",0,"Chose data")
  IF EMPTY(lc_FilePath)
    lb_Open = .F.
  ENDIF
  lb_Open = OpenFile(lc_FilePath)
ENDIF

IF !lb_Open
  RETURN
ENDIF

IF USED('tempdbc')
  SELECT objectName ;
    FROM tempdbc;
    WHERE parentid = 1 AND ObjectType ="Table";
    INTO ARRAY aDataSources
  SELECT tempdbc
  USe
  FOR i= 1 TO ALEN(aDataSources,1)
    lc_Alias = ALLTRIM(aDataSources[i])
    =Rempli(lc_Alias)
  ENDFOR
ELSE
  =Rempli('TEMPTBL')
ENDIF

CLOSE DATABASES
CLOSE TABLES

RETURN


PROCEDURE Rempli
  LPARAMETERS tc_Alias
  LOCAL j, lc_Champ, lc_Valeur
  lc_Champ = ""
  lc_Valeur = ""
  DIMENSION aDataTypes[1]
  STORE "" TO aDataTypes[1]
  IF tc_Alias <> 'TEMPTBL'
    IF USED('TEMPTBL')
      USE IN TEMPTBL
    ENDIF
    USE (tc_Alias) IN 0 ALIAS TEMPTBL
  ENDIF
  SELECT TEMPTBL
  AFIELDS(aDataTypes,'TEMPTBL')
  Cpt = 0
  DIMENSION avAleur(1)
  FOR J= 1 TO ALEN(aDataTypes,1)
    IF EMPTY(aDataTypes[j,17]AND EMPTY(aDataTypes[j,18]AND !aDataTypes[j,2] $ "GQW"
      Cpt = Cpt + 1
      lc_Champ = IIF(EMPTY(lc_Champ), aDataTypes[j,1], lc_Champ + "," + aDataTypes[j,1] )
      DIMENSION avAleur(Cpt)
      avAleur[Cpt] = RecupVAl(aDataTypes[j,2])
    ENDIF
  NEXT J

  FOR K = 1 TO 10
    lc_Valeur = ""
    FOR J = 1 TO ALEN(aValeur,1)
      lc_Valeur = IIF(EMPTY(lc_Valeur), aValeur[j], lc_Valeur + "," + aValeur[J] )
    NEXT J
    lc_Txt = "INSERT INTO TEMPTBL (" + lc_Champ + ") VALUES (" + lc_Valeur + ")"
    &lc_Txt
  NEXT K

ENDPROC

PROCEDURE RecupVal
  LPARAMETERS tc_Type
  LOCAL lv_Return
  lc_Lettre = "abcdefghijklmopqrstuvwxyz"
  DO CASE
  CASE tc_Type $ 'CV'
    lv_Return = "'"SUBSTR(lc_Lettre,INT(1 + 26 * RAND( )),1) +kc_valTxt +"'"
  CASE tc_Type $ 'YBFN'
    lv_Return = "VAL('" + ALLTRIM(STR(1 + 100 * RAND( ))) +"')"
  CASE tc_Type = 'D'
    lv_Return = "CTOD('"+DTOC(DATE())+"')"
  CASE tc_Type = 'T'
    lv_Return = "CTOT('"+TTOC(DATETIME())+"')"
  CASE tc_Type = 'L'
    lv_Return = '.T.'
  CASE tc_Type = 'I'
    lv_Return = "VAL('" + ALLTRIM(STR(INT(1 + 100 * RAND( )))) +"')"
  CASE tc_Type = 'M'
    lv_Return = "'" +kc_ValMem+"' + CHR(13) + '" + kc_ValMem + "'"
  OTHERWISE
    lv_Return = ''
  ENDCASE
  RETURN lv_Return
ENDPROC

PROCEDURE OpenFile
  LPARAMETERS tc_File
  LOCAL lb_Return
  lb_Return = .T.

  DO CASE
    CASE UPPER(JUSTEXT(tc_File)) = "DBF"
      USE (tc_File) IN 0 SHARED ALIAS TEMPTBL
    CASE UPPER(JUSTEXT(tc_File)) = "DBC"
      OPEN DATABASE (tc_File) SHARED
      USE (m.tc_File) AGAIN ALIAS tempdbc
    OTHERWISE
      lb_Return = .F.
  ENDCASE
  RETURN lb_Return
ENDPROC

Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :


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