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