FoxPro/Visual FoxPro - Incrementar numeracion

 
Vista:

Incrementar numeracion

Publicado por sebastian (244 intervenciones) el 05/09/2012 17:52:27
Hola programadores, ayuda porfavor estoy tratando de contar los registros de mi tabla y mostrar en text pero no lo hace pueden ayudarme envio el codigo.

SELEC max(registro_codigo) as ncontar from tabla into cursor contando
mostrar = val(ncontar)+1
thisform.text1.value = +"L - "+padl(alltrim(str(mostrar)),5,"0")

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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Incrementar numeracion

Publicado por Fidel (657 intervenciones) el 05/09/2012 23:39:16
Si el campo registro_codigo es numérico, el único error es val(ncontar), puesto que ncontar es un numérico.
Si el campo registro_codigo es String, puede haber problemas si ese campo contiene campos con letras u otros caracteres.
En este caso puedes solucionarlo con:
SELEC max(registro_codigo) as ncontar from tabla into cursor contando where Val(registro_codigo)#0
mostrar =iif(vartype(nContar)="N",ncontar,Val(nContar))+1 && analizará ambos tipos de resultados.
thisform.text1.value = +"L - "+padl(alltrim(str(mostrar)),5,"0")
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

Incrementar numeracion

Publicado por sebastian (244 intervenciones) el 06/09/2012 00:11:56
Ok gracias voy a intentarlo
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
sin imagen de perfil

Incrementar numeracion

Publicado por Juan Manuel Cruz (512 intervenciones) el 06/09/2012 12:04:22
Parece evidente que tu "registro_codigo" es un alfanumérico que empieza con la coletilla "L - ". Parece.

Personalmente, preferiría tener una tabla de contadores, en vez del inseguro (sobretodo en multiusuario) método de buscar el mayor y sumarle uno.

Pero bueno, volviendo a tu pregunta, a lo mejor esto te funciona:

***-----------------
* Selecciona el mayor
SELECT max(registro_codigo) as ncontar from tabla into cursor contando

* El substring quita la coletilla previa "L - ", convierte a numérico y suma uno
Mostrar = VAL(SUBSTRING( CONTANDO.ncontar, 5)) + 1

* Formatea el resultado poniendo la coletilla y justificando a 5 ceros el contador
Thisform.text1.value = +"L - "+TRANSFORM( Mostrar, "@L 99999" )
* Pregunta: ¿y cuando tu contador llegue a 99,999? Porque este es su límite aparente actual.

Use in contando
***-----------------
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
sin imagen de perfil

Incrementar numeracion

Publicado por victor perez (278 intervenciones) el 07/09/2012 21:56:10
Hola,

El sistema de incremento tal y como lo tienes es muy vulnerable sobretodo en sistema multiusuario.

Mejor es que tengas una pequeña base de datos con el contador que se incrementa cuando se graba el registro. Como el grabar ocurre en un tiempo muy pequeño no hay riesgo que se graben dos registros con el mismo numero.

O bien, tambien puedes hacer que el programa verifique si el numero asignado (contador) ya existe y lo incremente en uno. Y vuelva a buscar, eso te asegura que el numero nunca sera repetido.

En mi programa, en el sistema de pacientes tengo esa opcion de busqueda para verificar que el numero no ha sido asignado ya que se pueden crear nuevos registros desde varias computadoras. Pero en el caso de la facturacion, no lo tengo puesto que solo se factura desde un solo terminal.

Un saludo,


Victor,
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
sin imagen de perfil

Incrementar numeracion

Publicado por Melisa (22 intervenciones) el 26/10/2013 01:17:05
Hola...yo necesito hacer lo mismo.... pero tampoco se como hacerlo..mi campo es numerico..
donde tengo que escribir la programacion que propuso sebastian? en el form? en que procedure?

SELEC max(registro_codigo) as ncontar from tabla into cursor contando
mostrar = val(ncontar)+1
thisform.text1.value = +"L - "+padl(alltrim(str(mostrar)),5,"0")

tengo que crear un cursor tambien?
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