L'auteur
Ludo186 France Membre Simple # 0000000010 enregistré le 13/10/2004 49 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é 9991 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é ...