Page 1 of 1
Favor Necesito Orientacion Urgente
Posted: Wed Jan 17, 2007 2:58 pm
by Miguel Rivera
Hola Amigos:
Tengo que solucionar un problema urgente y se trata de lo siguiente:
. Debo tener un Browse en pantalla que me permita ingresar lineas de largo de 75, la cual llevara una columna con un correlativo mas esta columna de largo de 75, que permitira ingresar un escrito, esta debera permitir Agregar lineas, como eliminar o insertar en alguna parte del parrafo, quiero manejarlo en una base de datos, con los _ antes descrito mas un folio que identifica a una persona.
Se puede hacer de esta forma ?, alguien tiene un codigo parecido para poder ver.
Desde ya se los agradezco,
Miguel Rivera
Posted: Thu Jan 18, 2007 1:03 pm
by DanielPuente
Miguel:
Si, claro que se puede, tendrias que utilizar una fuente de ancho fijo, como courier new. Al momento de editar los renglones podes utilizar gets con el tamaƱo justo para que entren los 75 caracteres con esa fuente de ancho fijo si no son muchos renglones y sino un get memo. Luego de editar si estas en un alta haces el append en _ de 75 o un campo memo, y si estas editando vas recorriendo los renglones y pisando los que tenes en la base si usastes _, recorriendo los registros existentes y los renglones y agregando al final si los renglones tipeados son mas que los registros o borrando los registros finales en el caso inverso.
Ejemplo con get memo y _ en una base (para una modificacion):
Code: Select all
REDEFINE GET oNotaRef VAR cNotaRef ID 112 FONT oFont5 MEMO OF oDlg
Al momento de grabar:
LLOSTKTR->(DBGOTOP())
MOVREPAR->(DBGOTOP())
FOR I:=1 TO MLCOUNT(cNotaRef,50)
IF MOVREPAR->TIPO == 'N' // PISO RENGLON DE NOTA DE REF
IF MOVREPAR->(DBRLOCK())
REPLACE MOVREPAR->RENGLON WITH MEMOLINE(cNotaRef,50,i)
MOVREPAR->(DBUNLOCK())
ENDIF
ELSE
DO WHILE MOVREPAR->TIPO # 'N' .AND. !MOVREPAR->(EOF())
MOVREPAR->(DBSKIP())
ENDDO
IF MOVREPAR->(EOF())
MOVREPAR->(DBAPPEND()) // NO HAY MAS RENGLONES DE NOTA DE REF, LOS AGREGO
REPLACE MOVREPAR->NUM WITH OT:VREMITO
REPLACE MOVREPAR->TIPO WITH 'N'
REPLACE MOVREPAR->MCAN WITH LLOSTKTR->MCAN
REPLACE MOVREPAR->RENGLON WITH MEMOLINE(cNotaRef,50,i)
REPLACE MOVREPAR->MPRE WITH LLOSTKTR->MPRE
REPLACE MOVREPAR->IMPORTE WITH LLOSTKTR->IMPORTE
MOVREPAR->(DBUNLOCK())
ENDIF
ENDIF
MOVREPAR->(DBSKIP())
NEXT
// SI QUEDAN RENGONES DE NOTA DE REF SOBRANTES LOS BORRO
IF !MOVREPAR->(EOF())
DO WHILE !MOVREPAR->(EOF())
IF MOVREPAR->TIPO == 'N'
IF MOVREPAR->(DBRLOCK())
MOVREPAR->(DBDELETE())
MOVREPAR->(DBUNLOCK())
ENDIF
ENDIF
MOVREPAR->(DBSKIP())
ENDDO
ENDIF
Posted: Thu Jan 18, 2007 2:51 pm
by Miguel Rivera
Daniel:
Te pasastes, muchas gracias, es lo que necesitaba.
Eternamente agradecido por tu ayuda,
Miguel Rivera