Numerar registros

441 views
Skip to first unread message

Pablo Sebastian Vera

unread,
Jan 30, 2020, 10:44:52 PM1/30/20
to Comunidad de Visual Foxpro en Español
Hola a todos. Como les va?
Estoy dando mis primeros pasos en VFP y necesito de su ayuda si son tan amables.
Tengo un DBF con los campos
Transacc N(10), unidadesvta, orden

Necesito darle un orden segun la transaccion. Para la misma transaccion se debería repetir ese orden.
Sería así

Transacc unidades orden
12345678 100 1
98765443 50 2
34567890 2 3
34567890 5 3
34567890 10 3
90123987 1 4
56129856 3 5

Gracias pornsu ayuda

Saludos cordialed



HernanCano

unread,
Jan 30, 2020, 11:45:43 PM1/30/20
to Comunidad de Visual Foxpro en Español
Pablo:

Cuando estamos estudiando, debemos aplicar los conocimientos que nos entrega el profesor.
Eso no es difícil de lograr, pero debes esforzarte.

*!* , Transacc N(10), unidadesvta, orden
*!* , Transacc  unidades  orden
*!* ,12345678 ,  100    ,    1
*!* ,98765443 ,   50    ,    2
*!* ,34567890 ,    2    ,    3
*!* ,34567890 ,    5    ,    3
*!* ,34567890 ,   10    ,    3
*!* ,90123987 ,    1    ,    4
*!* ,56129856 ,    3    ,    5

local M.nNum, M.lOtro, M.cTransacc
close databases all

use UN.DBF shared
blank all fields ORDEN

M
.nNum = 0
M
.lOtro = .t.

go top
M
.cTransacc = TRANSACC

do while !eof()
   
   
if M.lOtro
      M
.nNum = M.nNum + 1
      M
.lOtro = .f.
   endif
   
   replace ORDEN
with M.nNum
   
   skip
   
   
if M.cTransacc <> TRANSACC
      M
.cTransacc = TRANSACC
      M
.lOtro = .t.
   endif
   
enddo

acti scre
brow nomo

**

Pablo Flores

unread,
Jan 31, 2020, 6:26:38 AM1/31/20
to publice...@googlegroups.com
Hola, puedes usar un índice para que lo resuelva por vos.
Generar el índice por única vez.
Use archivo.dbf exclu

Index On str(transacc)+str (orden,3) tag transacc additive
Y luego cada vez que quieras utilizar ese orden debes hacer
Use archivo.dbf  order transacc  
De esta manera no altera los datos reales sino trabajas sobre una vista que te da el orden ya establecido.
Para encontrar una transacción al buscarla debes usar el comando o funcion "seek", ya que está utiliza dicho índice por lo que es más rapido.


Saludos


From: publice...@googlegroups.com <publice...@googlegroups.com> on behalf of Pablo Sebastian Vera <ver...@gmail.com>
Sent: Friday, January 31, 2020 12:44:52 AM
To: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Subject: [vfp] Numerar registros
 
--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/publicesvfoxpro/72863b4b-3d6b-4dc5-bb3b-413f49a3a16f%40googlegroups.com.

Víctor Hugo Espínola Domínguez

unread,
Jan 31, 2020, 2:32:19 PM1/31/20
to publice...@googlegroups.com
Otra solución usando SCAN:

Local lnNum As Number, ;
lnTransacc As Number

Select 0
Use Transacciones

lnNum   = 0
lnTransacc = 0

Scan
    If Transacc <> m.lnTransacc
        lnNum        = m.lnNum + 1
        lnTransacc = Transacc
    Endif

    Replace Orden With m.lnNum
Endscan

Browse
Use

Saludos,
Víctor.
Lambaré - Paraguay.



HernanCano

unread,
Jan 31, 2020, 6:45:26 PM1/31/20
to Comunidad de Visual Foxpro en Español
Qué bien, Víctor!!

En un sólo IF hacer los dos "cambios".

Gracias.

vagui...@yahoo.com.mx

unread,
Feb 1, 2020, 9:18:14 PM2/1/20
to Comunidad de Visual Foxpro en Español
close all
use mi_tabla
index on transacc to temp
copy to temp
zap
append from temp
repl all orden with recno()

Pablo Sebastian Vera

unread,
Feb 16, 2020, 10:29:56 PM2/16/20
to Comunidad de Visual Foxpro en Español
hola.
Perdón por no contestar antes pero tuve algunos problemas familiares

Gracias por sus respuestas fueron muy útiles

Hernan: no estoy estudiando, ya me recibí hace varios años (de contador y licenciado en administración de empresas). Pero desde octubre de 2019 se me dio por este mundo de la programación. Un poco para resolverme algunas tareas manuales y otro poco porque me empezó a gustar.
Soy autodidacta en el tema. Si bien se lo que quiero hacer, me imagino como resolverlo....pero eso no puedo llevarlo a la práctica, no puedo escribir el código aún.

Tengo algunas preguntas mas, así tontas como la que hice antes, pero no se si las puedo hacer ahora.

Carlos Miguel FARIAS

unread,
Feb 17, 2020, 6:16:37 AM2/17/20
to Grupo Fox
Hola Pablo: También soy contador, como consejo básico, si hace tampoco que empezaste en programación, sugiero amablemente que trates de desarrollar en otra herramienta que no sea visual foxpro. La herramienta es excelente pero hace 13 años que no salen versiones nuevas. Por más que han hecho compiladores de 64 bits (conversores) no me han contestado la pregunta acerca de qué pasará cuando los sistemas operativos dejen de soportar 32 bits, como desarrollar si el IDE no funciona.
En otro post, alguien están ofertando de pago Harbour, que es software libre y además hace 9 que no tiene versiones nuevas.
Saludos: Miguel

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Pablo Sebastian Vera

unread,
Feb 18, 2020, 7:45:48 PM2/18/20
to Comunidad de Visual Foxpro en Español
Hola Miguel, gracias por tu respuesta.
Estoy mirando con cariño python. También pensé en .Net (#C) pero creo que se me complica en esta etapa. 
Python lo vi mas accesible para mi y bastante potente.

No obstante, arranque por VFP porque acá en la empresa hay 2 sistemas hechos en vfp que trabajan con dbfs. Y la verdad, es que no se hoy como pasar ese dbf a otra cosa (un mariadb/mysq o algún otro motorl), hacer cambios y volver a grabar eso en los dbf. Con VFP me pareció mas fácil todo eso.


Saludos
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

Carlos Miguel FARIAS

unread,
Feb 19, 2020, 5:57:15 AM2/19/20
to Grupo Fox
Desde python puedes trabajar con DBF, al menos con datos del tipo manejado por fox DOS y con los de vfp puede haber algún inconveniente con los específicos de esa versión. Base de datos sugiero postgresql o mariadb (mysql es de Oracle y para ciertos niveles de uso hay licencia de pago). En Python puedes trabajar con TKinter (incluida en Python), wxpython o pyside, todas grátis. Las dos últimas muy potentes (más que las posibilidades de Fox). TKinter es limitada pero mucho más simple. O puedes trabajar con Flask (sistemas chicos a medianos) o Django (medianos hasta lo que se te ocurra).

En cuanto a los datos, si usas fox, lo puedes solucionar con una sentencia SQL

SELECT Transacc  unidades  orden FROM tuTabla ORDER BY 1, 3 INTO CURSOR miLista && (o lo que sea)

Esta solución te funciona en fox para dos o visual, y en cualquier moto de base de datos.
Lo único que varía es como abres la tabla (y si la tabla es parte de una bd nativa).

En realidad, el SQL es un 95% estandar en todos los casos. O sea que trabajes con Fox, Python o casi cualquier otro SGBD o lenguaje, usar SQL te da respuesta con alta compatibilidad.
Aún en el caso que trabajes con fox, sugiero montar todos tus accesos a datos usando instrucciones SQL, porque si a futuro necesitas migrar a otro lenguaje, tu lógica de datos no cambia.
Por otra parte con una sentencia SQL he llegado a reemplazar más de 200 líneas de código dbase estándar.
Saludos: Miguel

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/80dc376d-a6e1-467a-937a-84be16ab8f1f%40googlegroups.com.

Dario Alberto Becerra Begazo

unread,
Feb 21, 2020, 11:27:33 AM2/21/20
to Comunidad de Visual Foxpro en Español
Te recomiendo el FireBird, tiene muchas facilidades y tiene para crear generadores y así poder enumerar registros llamando a una función.
Reply all
Reply to author
Forward
0 new messages