Favor Necesito Orientacion Urgente

Favor Necesito Orientacion Urgente

Postby Miguel Rivera » Wed Jan 17, 2007 2:58 pm

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 dos campos 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
Miguel Rivera
 
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Postby DanielPuente » Thu Jan 18, 2007 1:03 pm

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 campos caracter de 75 o un campo memo, y si estas editando vas recorriendo los renglones y pisando los que tenes en la base si usastes campos caracter, 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 campos caracter en una base (para una modificacion):
Code: Select all  Expand view  RUN
   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

Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
DanielPuente
 
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina

Postby Miguel Rivera » Thu Jan 18, 2007 2:51 pm

Daniel:

Te pasastes, muchas gracias, es lo que necesitaba.

Eternamente agradecido por tu ayuda,

Miguel Rivera
Miguel Rivera
 
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 30 guests