Page 1 of 1
Como puedo generar archivos temporales facturacion en red
Posted: Thu Sep 27, 2007 1:19 pm
by devwin2010
Estimado Colegas
Alguien tiene un ejemplo sencillo de como generar dbf temporales
en distintas pcs en red , poque si comparto el archivo lo que facture
en una terminal , se lo ve de las demas, y en realidad c/u factura
articulos distintos
desde ya muchas gracias
devwin2010@yahoo.com.ar
Posted: Thu Sep 27, 2007 1:44 pm
by QAZWSX2K
yo particularmente genero esos archivo temporales con el nombre del usuario o del pc, asi no se cruzan nunca, luego ya debes saber como con dbcreate, etc...
Posted: Thu Sep 27, 2007 2:03 pm
by wilsongamboa
yo tengo algo como esto
espero te sirva
Code: Select all
aDbf := { {'Codigo','C',12,0},;
{'Descrip','C',30,0},;
{'Cantidad',N,12,0},;
{'Precio',N,14,2},;
{'Subtotal',N,14,2} }
cDbf := GenTMP( 'Dbf', 'Dbf' )
dbcreate( cDbf, aDbf )
use ( cDbf ) new alias Camello exclusive
//aca tendrias este archivo para el browse de facturacion y
//seria independiente
....
...
// luego de usarlo lo puedes borrarç
select ( Camello )
( Camello )->( dbclosearea() )
ferase( cDbf )
function GenTMP( cBas, cTer )
Local cDir_Tmp := '\tmp\' //directorio de los temporales
Local i := 0
Local cFile
Local Fp
While ++i <= 240000
cFile := cDir_Tmp + cBas + alltrim( str( i ) ) + '.' + cTer
if !file ( cFile )
Fp := fcreate( cFile )
fwrite ( Fp, 'nada' )
fclose ( Fp )
end
end
Return cFile
Saludos
Posted: Thu Sep 27, 2007 2:43 pm
by Biel EA6DD
Los temporales los creo en el PC cliente, y una forma sencilla de implementarlo con funciones FiveWin seria.
Code: Select all
LOCAL cFilename,aFields,cRdd
cFileName:=cTempFile(GetEnv("TEMP"),"DBF")
aFields:={.... //estructura dbf
cAlias :='alias'
dbCreate(cFileName,aFields,cRdd)
USE (cFileName) ALIAS cAlias NEW VIA ( cRDD )
cTempFile crea un nombre de fichero que no existe
GetEnv("TEMP") Devuelve el directorio temporal de windows.
Posted: Thu Sep 27, 2007 2:46 pm
by Vital
Yo lo tengo asi :
FUNCTION CreaTemporal1(cFile)
Local aTempora := {}, nFile
DO WHILE .T.
nFile := cTempFile()
nFile := SubStr(nFile,1,At(".",nFile)-1)
IF Len(nFile)>6
nFile := SubStr(nFile,1,6)
ELSE
nFile := nFile+Replicate("0",6-Len(nFile))
ENDIF
nFile := "TM"+nFile+".DBF"
IF File(nFile)
Loop
ENDIF
EXIT
ENDDO
AADD(aTempora,{"PRODUCTO","C",16,0})
AADD(aTempora,{"NOMBRE" ,"C",35,0})
AADD(aTempora,{"CANTIDAD","N",10,2})
AADD(aTempora,{"PRECIO" ,"N",10,2})
AADD(aTempora,{"IMPORTE" ,"N",10,2})
DbCreate(nFile,aTempora)
nFile := SubStr(nFile,1,8)
RETURN nFile
Posted: Thu Sep 27, 2007 3:44 pm
by Marcelo Via Giglio
Hola,
siendo que es poca informacion, por que no utilizas un array en lugar de un DBF o un RDDARRAY
solo es una idea
saludos
Marcelo
Posted: Thu Sep 27, 2007 5:06 pm
by Armando
Mis dos centavitos:
Puedes utilizar un array y tal vez el proceso sea más rápido perooooooo si se trata de un punto de venta donde existe la posibilidad de que tengas que mantener cuentas abiertas mientras se revisa algo, pero debes iniciar a cobrar al siguiente cliente, yo te recomiendo que manejes DBFs, otra situación que te obliga a usar DBFs es cuando haya una falla de corriente eléctrica, al reiniciar deberas volver a registrar todos los productos que ya habias registrado hasta el momento de la falla de corriente (Normalmente la falla viene en el ultimo producto
) mientras que si utilizas DBFs podrás recuperar esa información.
Por alternativas no te podras quejar, jeje
Saludos