FoxPro/Visual FoxPro - Ayuda con registro automatico

 
Vista:

Ayuda con registro automatico

Publicado por CESARSIMON (13 intervenciones) el 18/06/2009 04:39:16
que tal a todos. tengo una duda hace algunos dias atras tenia dudas de como generar un registro automatico con los datos de un combo( en este combo contiene proveedores ejemplo, INTEL, SAT,TOSHIBA,ETC..) y tengo un cuadro de texto(donde se mostrarian los codigos) por ejemplo selecciono INTEL en el combo cuando pierda el enfoque o algo similar este me muestre en el cuando de texto lo siguiente= INTE-0001esto es lo que quiero que realize, ya pude solucionarlo
....ahora tengo un boton donde guarda este numero de registro en una tabla y cuando lo guarde borra el cuadro de texto todo esto por el momento esta bien, el numero lo ingreso manualmente ( el cuadro de texto es tipo caracter)

pero ahora lo que quiero hacer es que: NO SE SI SE PUEDA Y ESPERO EXPLICARME
ESTO SERIA EN EL COMBO Y TENDRIA QUE VERIFICAR
cuando DE CLIC en el boton guardar lo guarde(esto si ya esta si guarda), ahora para un nuevo registro busque el ultimo registro y le sume uno
por ejemplo si el ultimo que guardo fue INTE-0001
que solo tome 0001 y le sume 1 el cual seria 0002
y cuando seleccione el proveedor por ejemplo TOSHIBA asta ahora lo muestre en el texto el cual
seria TOSH-0002 y asi sucesivamente

este codigo es para que extraiga las primeras cuatro letras del proveedor
cuando selecciono el proveedor hasta ahora me muestre en el texto...
DO case
case thisform.combo2.value=thisform.combo2.value
if thisform.combo2.value=thisform.combo2.value then
thisform.text1.value=left(thisform.combo2.value,4)+"-"+right(thisform.text1.value,10)
ENDIF
ENDCASE

esta otra parte de codigo lo habia echo para que le sumara uno mas pero como el registro que almacena es tipo caracter me tira logicamente el error de incompatibilidad de datos....
* close all tables&&
* use "c:compumercaderia.dbf"&&
* go bottom
* thisform.text1.value= cod +1&& cod es donde almacena todos los registro: INTE-0001

espero alguien pueda ayudarme gracias..
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:Ayuda con registro automatico

Publicado por es_binario (757 intervenciones) el 18/06/2009 15:37:49
podrias intentar con algo asi:

SELECT MAX(VAL(RIGHT(cve_mercaderia,4)) as maximo FROM tabla_mercaderia WHERE LEFT(cve_mercaderia,4) = LEFT(Thisform.Text1.Value,4)

Saludos
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:Ayuda con registro automatico

Publicado por Jose Gamboa (33 intervenciones) el 18/06/2009 16:31:42
Esta funcion te podria servir, funciona asi
clavenueva = GENNEWID("tabladondebuscar", "campo_id", "valorquebusca")
la funcion devuelve 9 caracteres de los cuales los ultimos 3 son numericos osea se van incrementando en relacion al valor que busca, el valor que se devuelve se formatea despues del for t=1 to 999 <<< por eso 3 digitos al final
PROCEDURE GenNewId
LPARAMETERS nTable, Ord_id, ValBusca
oldSel = SELECT(nTable)
oldRec = RECNO(nTable)
oldVBusca = ValBusca
contBusca = 0
nTable = TRANSFORM( nTable, "@!T" )
Ord_id = TRANSFORM( Ord_Id, "@!T")
ValBusca = TRANSFORM( ValBusca, "@!T")
IF !EOF().And.!BOF()
DIMENSION vBuscados[1,3]
SELECT &nTable.
LOCATE FOR ValBusca $ &nTable..&Ord_Id.
DO WHILE FOUND()
contBusca = contBusca+1
DIMENSION vBuscados[contBusca,3]
vBuscados[contBusca,1] = RECNO()
vBuscados[contBusca,2] = &nTable..&Ord_Id.
vBuscados[contBusca,3] = VAL(RIGHT(&nTable..&Ord_Id.,3))
CONTINUE
ENDDO
FOR t=1 TO 999
vNewKey = PADR(SUBSTR(ValBusca,1,6),6,"0") + TRANSFORM(t,"@L 999")
IF ASCAN(vBuscados,vNewKey) # 0
LOOP
ELSE
EXIT
ENDIF
ENDFOR
ELSE
vNewKey = PADR(SUBSTR(ValBusca,1,6),6,"0")+TRANSFORM(1,"@L 999")
ENDIF
IF RECNO(nTable) # OldRec
GO OldRec IN &nTable.
ENDIF
IF EMPTY(ValBusca)
vNewKey = GenNewId(nTable, Ord_id, TRANSFORM(vNewKey, "@!"))
ENDIF
RETURN TRANSFORM(vNewKey, "@!")
ENDPROC
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