Page 2 of 3
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 9:06 pm
by wilsongamboa
Rosita buenas tardes
Code: Select all | Expand
function Ponceros( cValor, nCeros )
cValor = strzero( val( cValor ), nCeros )
return .T.
ponga esta funcion en un valid y envie cValor como referencia Poncers( @cValor, 6 )
saludos
Wilson
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 9:29 pm
by Rosita
wilsongamboa wrote:Rosita buenas tardes
Code: Select all | Expand
function Ponceros( cValor, nCeros )
cValor = strzero( val( cValor ), nCeros )
return .T.
ponga esta funcion en un valid y envie cValor como referencia Poncers( @cValor, 6 )
saludos
Wilson
Gracias mi estimado Wilson,no es asi lo que busco , que me rellene 0002-0001-0003-0004 asi de esta manera al momento de teclear en get 2-1-3-4 y obtenga el resultado ceros a la izquierda del que mencione
Gracias
Rosa
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 10:19 pm
by wilsongamboa
Ok le entendi mal
use esto
Code: Select all | Expand
function ValidaMascara( cValor )
local aValores := listasarray( alltrim( cValor ), '-' )
local i
local cResult := ''
//0002-0001-0003-0004
for i = 1 to len( aValores )
cResult += strzero( val( aValores[ i ] ), 4 ) + if( i == len( aValores ), '', '-' )
next
cValor = cResult
return .t.
/***
* ListAsArray( <cList>, <cDelimiter> ) --> aList
* Converierte un string delimitado a un array de elementos
*
*/
FUNCTION ListAsArray( cList, cDelimiter )
LOCAL nPos
LOCAL aList := {} // Defino un array vac¡o
IF cDelimiter = NIL
cDelimiter := ","
ENDIF
//
DO WHILE (nPos := AT(cDelimiter, cList)) != 0
AADD(aList, SUBSTR(cList, 1, nPos - 1)) // Aumento nuevo elemento del array
cList := SUBSTR(cList, nPos + 1)
ENDDO
AADD(aList, cList) // aumento el £ltimo
//
RETURN aList // Retorno el array
llamandolo en un valid por referencia
saludos
Wilson
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 10:23 pm
by ender
rosa te paso un manual de fivewin no es nuevo pero espero que para comprender su metologia te sirva .
https://www.dropbox.com/s/xhbwms3cqdew2 ... N.PDF?dl=0p.d. no es mio y espero que el legitimo dueño no le importe si no retirare el enlace
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 11:20 pm
by Rosita
wilsongamboa wrote:Ok le entendi mal
use esto
Code: Select all | Expand
function ValidaMascara( cValor )
local aValores := listasarray( alltrim( cValor ), '-' )
local i
local cResult := ''
//0002-0001-0003-0004
for i = 1 to len( aValores )
cResult += strzero( val( aValores[ i ] ), 4 ) + if( i == len( aValores ), '', '-' )
next
cValor = cResult
return .t.
/***
* ListAsArray( <cList>, <cDelimiter> ) --> aList
* Converierte un string delimitado a un array de elementos
*
*/
FUNCTION ListAsArray( cList, cDelimiter )
LOCAL nPos
LOCAL aList := {} // Defino un array vac¡o
IF cDelimiter = NIL
cDelimiter := ","
ENDIF
//
DO WHILE (nPos := AT(cDelimiter, cList)) != 0
AADD(aList, SUBSTR(cList, 1, nPos - 1)) // Aumento nuevo elemento del array
cList := SUBSTR(cList, nPos + 1)
ENDDO
AADD(aList, cList) // aumento el £ltimo
//
RETURN aList // Retorno el array
llamandolo en un valid por referencia
saludos
Wilson
Gracias mi estimado Wilson por la ayuda y su tiempo de la aportacion de su codigo,es lo que buscaba,es usted contador ,tiene desarrollado sistema contable ?
Gracias
Rosa
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 11:21 pm
by Rosita
Gracias mi estimado Ender,por el manual la descargo y me pongo a estudiar la forma de programar de fivewin
Gracias de nuevo a los que me ayudaron
Rosa
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 11:23 pm
by wilsongamboa
Rosita buenas tardes
No soy contador soy Ingeniero Electronico dedicado a programar desde hace muuuchos años
Me alegro mucho que le haya servido
Cualquier duda a las ordenes
saludos
Wilson
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 11:25 pm
by Rosita
wilsongamboa wrote:Rosita buenas tardes
No soy contador soy Ingeniero Electronico dedicado a programar desde hace muuuchos años
Me alegro mucho que le haya servido
Cualquier duda a las ordenes
saludos
Wilson
No lo he probado aun,pero gracias amigo Wilson, crei que era contador ,para intercambiar experiencias.
Gracias
Rosa
Re: Soy nueva en este foro
Posted: Wed Aug 19, 2015 11:51 pm
by wilsongamboa
Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Re: Soy nueva en este foro
Posted: Thu Aug 20, 2015 12:13 am
by Rosita
wilsongamboa wrote:Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Gracias mi estimado Wilson, le dejo mi correo y el manual que descargue es interesante puros defines y mas defines .
este es mi correo
rositatun@gmail.comGracias y saludos
Rosa
Re: Soy nueva en este foro
Posted: Thu Aug 20, 2015 8:14 pm
by ACC69
Rosita wrote:wilsongamboa wrote:Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Gracias mi estimado Wilson, le dejo mi correo y el manual que descargue es interesante puros defines y mas defines .
este es mi correo
rositatun@gmail.comGracias y saludos
Rosa
Hola Ing. Rosi buenas tardes como esta, de antemano le envio cordial saludos.
Tarde pero llegue ,te paso la rutina de como rellenar ceros a la izquierda.
Code: Select all | Expand
//------------------------------------------------------------------------------
* FORMATO1 CON GUION 0000-0000-0000-0000 ó SIN GUION 000000000000
FUNCTION FORMATO1(VarCta, Ctaf,lGuion)
Local lcad1, lcad2, lcad3, lCad4, I, cFormCta
I := 0
lcad1 := ""
lcad2 := ""
lcad3 := ""
lcad4 := ""
//Procesa el primer campo de 4 Digitos: 0000- // Nivel 1
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad1 := lcad1 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el segundo campo de 4 Digitos: 0000-0000 // Nivel 2
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad2 := lcad2 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el tercer campo de 4 Digitos: 0000-0000-0000 // Nivel 3
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad3 := lcad3 + SubStr(Ctaf, I, 1)
EndDo
//Procesa el cuarto campo de 4 Digitos: 0000-0000-0000-0000 // Nivel 4
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad4 := lcad4 + SubStr(Ctaf, I, 1)
EndDo
*Nota: Tienes que indicar los 3 '-', ej: 1--, y como resultado: 00001-0000-0000-0000
IF lGuion
cFormCta := STRZERO(Val(lcad1),4) +'-'+ STRZERO(Val(lcad2),4)+'-'+ STRZERO(Val(lcad3),4)+'-'+ STRZERO(Val(lcad4),4)
ELSE
cFormCta := STRZERO(Val(lcad1),4) + STRZERO(Val(lcad2),4) + STRZERO(Val(lcad3),4) + STRZERO(Val(lcad4),4)
ENDIF
*MsgInfo(cFormCta)
RETURN (cFormCta)
Esta es la funcion y como se usa ?:
Aqui desde get:
REDEFINE GET oG_D[01] VAR cCta ID 105 OF oDlg2 BITMAP "AYUDA" PICT "@K ###################";
ACTION ListCat(@cCta,S08,"cCta",oG_D[01]);
WHEN lNew VALID V_Cta()
Function V_CTA()
cCta := FORMATO1("cCta",cCta, .T.) // Si Permite separar guiones
cCta2 := FORMATO1("cCta",cCta, .F.) // No Permite separar guiones
RETURN NIL
Adaptalo a tus necesidades Rosi.
Si alguien la pueda mejorar,seria mejor
Saludos cordiales .
Atte: Adrian C. C.
acc69@hotmail.com
Re: Soy nueva en este foro
Posted: Thu Aug 20, 2015 10:08 pm
by Rosita
ACC69 wrote:Rosita wrote:wilsongamboa wrote:Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Gracias mi estimado Wilson, le dejo mi correo y el manual que descargue es interesante puros defines y mas defines .
este es mi correo
rositatun@gmail.comGracias y saludos
Rosa
Hola Ing. Rosi buenas tardes como esta, de antemano le envio cordial saludos.
Tarde pero llegue ,te paso la rutina de como rellenar ceros a la izquierda.
Code: Select all | Expand
//------------------------------------------------------------------------------
* FORMATO1 CON GUION 0000-0000-0000-0000 ó SIN GUION 000000000000
FUNCTION FORMATO1(VarCta, Ctaf,lGuion)
Local lcad1, lcad2, lcad3, lCad4, I, cFormCta
I := 0
lcad1 := ""
lcad2 := ""
lcad3 := ""
lcad4 := ""
//Procesa el primer campo de 4 Digitos: 0000- // Nivel 1
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad1 := lcad1 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el segundo campo de 4 Digitos: 0000-0000 // Nivel 2
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad2 := lcad2 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el tercer campo de 4 Digitos: 0000-0000-0000 // Nivel 3
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad3 := lcad3 + SubStr(Ctaf, I, 1)
EndDo
//Procesa el cuarto campo de 4 Digitos: 0000-0000-0000-0000 // Nivel 4
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad4 := lcad4 + SubStr(Ctaf, I, 1)
EndDo
*Nota: Tienes que indicar los 3 '-', ej: 1--, y como resultado: 00001-0000-0000-0000
IF lGuion
cFormCta := STRZERO(Val(lcad1),4) +'-'+ STRZERO(Val(lcad2),4)+'-'+ STRZERO(Val(lcad3),4)+'-'+ STRZERO(Val(lcad4),4)
ELSE
cFormCta := STRZERO(Val(lcad1),4) + STRZERO(Val(lcad2),4) + STRZERO(Val(lcad3),4) + STRZERO(Val(lcad4),4)
ENDIF
*MsgInfo(cFormCta)
RETURN (cFormCta)
Esta es la funcion y como se usa ?:
Aqui desde get:
REDEFINE GET oG_D[01] VAR cCta ID 105 OF oDlg2 BITMAP "AYUDA" PICT "@K ###################";
ACTION ListCat(@cCta,S08,"cCta",oG_D[01]);
WHEN lNew VALID V_Cta()
Function V_CTA()
cCta := FORMATO1("cCta",cCta, .T.) // Si Permite separar guiones
cCta2 := FORMATO1("cCta",cCta, .F.) // No Permite separar guiones
RETURN NIL
Adaptalo a tus necesidades Rosi.
Si alguien la pueda mejorar,seria mejor
Saludos cordiales .
Atte: Adrian C. C.
acc69@hotmail.com
Gracias mi estimado Adrian ,se te agradece el ejemplo y la funcion
Rosa
Re: Soy nueva en este foro
Posted: Thu Aug 20, 2015 10:11 pm
by Willi Quintana
Holas,,,
Disculpen, pero seria también fácil, tener 4 variables en 4 GETs, y luego a cada uno rellenar con los ceros a la izquierda (STRZERO(x)) y concatenarlos a una variable...
A1 := A2 := A3 := A4 := SPACE(4)
@ 5, 10 GET A1 PICTURE "9999"
@ 5, 15 GET A2 PICTURE "9999"
@ 5, 20 GET A3 PICTURE "9999"
@ 5, 25 GET A4 PICTURE "9999"
READ
A1 := STRZERO(VAL(A1),4)
A2 := STRZERO(VAL(A2),4)
A3 := STRZERO(VAL(A3),4)
A4 := STRZERO(VAL(A4),4)
AX := A1 + "-" + A2 + "-" + A3 + "-" + A4
@ X,Y SAY AX
RESULTADO 0034-0344-3445-0001
Saludos
Re: Soy nueva en este foro
Posted: Thu Aug 20, 2015 10:18 pm
by Rosita
Willi Quintana wrote:Holas,,,
Disculpen, pero seria también fácil, tener 4 variables en 4 GETs, y luego a cada uno rellenar con los ceros a la izquierda (STRZERO(x)) y concatenarlos a una variable...
A1 := A2 := A3 := A4 := SPACE(4)
@ 5, 10 GET A1 PICTURE "9999"
@ 5, 15 GET A2 PICTURE "9999"
@ 5, 20 GET A3 PICTURE "9999"
@ 5, 25 GET A4 PICTURE "9999"
READ
A1 := STRZERO(VAL(A1),4)
A2 := STRZERO(VAL(A2),4)
A3 := STRZERO(VAL(A3),4)
A4 := STRZERO(VAL(A4),4)
AX := A1 + "-" + A2 + "-" + A3 + "-" + A4
@ X,Y SAY AX
RESULTADO 0034-0344-3445-0001
Saludos
Gracias mi estimado Willi eso si lo tengo en cuenta que es mas facil, pero es mas facil para el usuario capturar en un solo campo con su guion en lugar de capturar en 4 campos y cada campo validar es mas tedioso
Por eso buscaba esa funcioncita .
Se te agradece la ayuda amigo
Gracias
Rosa
Re: Soy nueva en este foro
Posted: Tue Aug 25, 2015 9:00 pm
by AIDA
Hola bienvenida