FoxPro/Visual FoxPro - Anexar y incrementar

   
Vista:

Anexar y incrementar

Publicado por Jhean Carlos (127 intervenciones) el 07/11/2007 14:16:16
quetal !!!!!

necesito una ayudita que no puedo realizar.
LOS ANTERIORES APORTES NO ME FUNCIONARON COMO YO QUERIA PERO GRACIAS!!!!!!!
tengo 3 textbox en el que quiero incrementar un valor.
************************************************************************************************
En el primer textbox_1 quiero introducir un codigo como ser:

ERT2345L

Esta es la base para poder anexar o incrementar su valor, en este caso cuando haga un clic en el boton Anexar quiero que este codigo se incremente talvez con SUBSTR(CODIGO) pueda servir como el ultimo valor es "L"pueda funcionar.
----------------------------------------------------------------------------
En el segundo textbox_2 quiero que aparesca asi:

ERT2345L.01

como veras al codigo se ha aumentado o incrementado el ".01"
------------------------------------------------------------------------
En el tercer textbox_3 quiero que aparesca asi:

ERT2345L.02

en este ultimo se ha aumentado el ".02"
****************************************************************************************
como veran se incrementa pero tambien que tal si pongo el codigo en el primer textbox_1
ERT2345L.02

los demas textbox se incremntan como ser en el textbox_2
ERT2345L.03
en el textbox_3
ERT2345L.04

COMO VERAN SE HA*INCREMENTADO COMO PUEDO REALIZAR ESTO?

GRACIAS!!!!!!!!!!!!!!111
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Anexar y incrementar

Publicado por neo (1601 intervenciones) el 07/11/2007 15:36:57
Yo que tu, lo que haria primero es tener separado los caracteres de los numéricos, y en especifico el numérico y para eso crearía un textbox de tipo numérico para se autoincremente al darle un click en un boton u otro evento que desees, ejemplo:

Thisform.clave_num.value=01

*En un boton del evento click prueba esto:

Thisform.texto2.value=Thisform.texto1.value+ALLTRIM(STR(Thisform.clave_num.value))

Thisform.clave_num.Value=Thisform.clave_num.Value+1
Thisform.Refresh

Thisform.texto3.value=Thisform.texto1.value+ALLTRIM(str(Thisform.clave_num.value))

Thisform.refresh

Note;
Solo me falta el cero ("01") porque en numérico nunca toma el valor "0"
Es decir, que el resultado sería asi:
ERT2345L. 1 y no asi ERT2345L.01

Suerte►
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Anexar y incrementar

Publicado por enrique (1041 intervenciones) el 07/11/2007 17:57:51
proba lo siguiente

incremento=0
if "."$thisform.text1.value
thisform.text2.value = subst(thisform.text1.value,1,at(".",thisform.text1.value,1))+;
padl(allt(str(val(subst(thisform.text1.value,at(".",thisform.text1.value,1)+1))+1)),2,"0")
thisform.text3.value = subst(thisform.text1.value,1,at(".",thisform.text1.value,1))+;
padl(allt(str(val(subst(thisform.text1.value,at(".",thisform.text1.value,1)+1))+2)),2,"0")
else
thisform.text2.value = allt(thisform.text1.value)+"."+padl(allt(str(incremento+1)),2,"0")
thisform.text3.value = allt(thisform.text1.value)+"."+padl(allt(str(incremento+2)),2,"0")
endif
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Anexar y incrementar

Publicado por Luighi (105 intervenciones) el 07/11/2007 21:52:13
haberlo dicho antes...
bueno, ahora estas siendo mas explicito

crea un prg y ponle cualquier nombre
por ejemplo: incrementar
y copiale el codigo que sigue a continuacion:

****
para cTexto, cSeparador, nAnchura
priv all
if set('talk')='ON'
set talk off
cTalk='ON'
else
cTalk='OFF'
endif
if type('cTexto')#'C'
cTexto=''
endif
cTexto=allt(cTexto)
if type('cSeparador')#'C' or empt(cSeparador)
cSeparador='.'
endif
cSeparador=left(cSeparador,1)
if type('nAnchura')#'N' or nAnchura<1
nAnchura=2
endif
n=at(cSeparador,cTexto) && posición del separador
cTexto=left(cTexto,iif(n>0,n-1,len(cTexto)))+cSeparador+tran(iif(n>0,val(subs(cTexto,n+1)),0)+1,'@l '+repl('9',nAnchura))
set talk &cTalk
retu cTexto
****

luego en la ventana de comandos escribe:
? incrementar('ERT2345L')
y podras ver que el resultado que arroja es ERT2345L.01
y si escribes:
? incrementar('ERT2345L.01')
el resultado sera: ERT2345L.02
y si escribes:
? incrementar('ERT2345L.98')
el resultado sera: ERT2345L.99
y si quieres ir mas lejos, escribe:
? incrementar('ERT2345L.99','',3)
y veras: ERT2345L.100
y un poco mas:
? incrementar('visual foxpro.8','',1)
entonces veras: visual foxpro.9
y es mas... quizas no te guste el punto como separador, quieres el guion
entonces podrias escribir:
? incrementar('revolucion.francesa-1788','-',4)
finalmente foxpro arrojaria: revolucion.francesa-1789

atendiento al problemita...
en el boton de comando que tienes al cual llamaste: Anexar, solo deberias incluirle el siguiente codigo:

thisform.textbox_2.value=incrementar(thisform.textbox_1.value)
thisform.textbox_3.value=incrementar(thisform.textbox_2.value)

como veras el prg lo hace todo
para eso los creamos

saludos colega
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar