Clipper/FiveWin - Modificar datos de un DBF

 
Vista:
sin imagen de perfil

Modificar datos de un DBF

Publicado por Christian Villalobos (4 intervenciones) el 25/07/2007 22:17:40
Hola Chicos..

Bueno tambien llevo mi tiempo en este tema de Clipper, y me pasa lo siguiente a lo mejor me estoy ahogando en un vaso con agua pero la verdad no me acuerdo..}

Ejecuto un Dbedit(achoice), para buscar dato especifico de la Base de Datos, mi intencion es una vez que me muestra la Base de Datos y la informacion especifica que buscaba hacer un enter y que me permita modificar ese dato..les juro que no he podido encontrar el comando que me permita realizar esto..

Eternamente agradecido

Clipperiano Christian
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

RE:Modificar datos de un DBF

Publicado por Marcelo W (14 intervenciones) el 26/07/2007 02:09:05
probá haciendo un browse() en vez de achoice o dbedit.
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

RE:Modificar datos de un DBF

Publicado por pepe (39 intervenciones) el 26/07/2007 08:31:38
Toma un ejemplo con un Tbrowse :

/*
Procedimiento : MCLIE.PRG
Mantenimiento clientes
Programado : P.P.
Fecha : 02.02.98
*/

*****************
*** MCLIE.PRG ***
*****************

#Include "Inkey.ch"
#Include "SetCurs.ch"

// Construye las columnas
LOCAL oCol1 := TBColumnNew("CODIGO", FieldBlock("CO_DCLI"))
LOCAL oCol2 := TBColumnNew("NOMBRE", FieldBlock("NO_MCLI"))
LOCAL oCol3 := TBColumnNew("N.I.F.", FieldBlock("NI_FCLI"))
LOCAL oCol4 := TBColumnNew("FAX", FieldBlock("FA_XCLI"))
LOCAL oCol5 := TBColumnNew("Pago", FieldBlock("MO_DOPA"))

LOCAL oBrw := TBrowseDB(2,2,13,77) // Construye el TBrowse

LOCAL cColor := Select("w/n")
LOCAL nKey,oGet,xOldKey,xNewKey
LOCAL bapend1 := {|| Apend1(oBrw) }
LOCAL nCursor := SetCursor(SC_NONE)
LOCAL xText := "Insert = A¤adir Supr = borrar Intro = Editar Esc = Salir"

SetBlink(.F.)
Set(_SET_DELETED, .T.)
Set(_SET_SCOREBOARD, .F.)

cls

DispBox(1,1,14,78,1,"r/w*,gb+/b")
@ 24,7 say xText

select 3
USE clien index nomb

select 5
use numcli
xcodi_go = codigo
select 3

// Efectos especiales

oBrw:colorSpec("r/w*,gb+/b")
oBrw:colSep := " º "
oBrw:headSep := "ÄÒÄ"

// Carga las columnas al TBrowse

oBrw:addColumn(oCol1)
oBrw:addColumn(oCol2)
oBrw:addColumn(oCol3)
oBrw:addColumn(oCol4)
oBrw:addColumn(oCol5)

// Bucle de proceso

select 3

WHILE .T.

nKey := TbStd(oBrw,,bApend1) // Teclas automatizadas

IF nKey == K_ESC
DbCloseArea()
EXIT

ELSEIF nKey == K_DEL
clien->(DbDelete())
IF oBrw:rowPos == 1
oBrw:up()
ENDIF
oBrw:refreshAll()

ELSEIF nKey == K_ENTER

// Proceso de edici¢n del fichero

SetCursor(SC_NORMAL)
do modcli // Llama a rutina modificaciones
@ 15,1 clear to 21,61
oBrw:refreshCurrent()
oBrw:ForceStable()
SetCursor(SC_NONE)

ENDIF

END WHILE

Select(cColor)
SetCursor(nCursor)
CLS
RETURN NIL

// Funci¢n para insertar registros

FUNCTION Apend1(oBrw)
LOCAL GetList := {}
LOCAL xno_mcli := Space(40)
LOCAL xni_fcli := Space(10)
LOCAL xfa_xcli := Space(10)
LOCAL xmo_dopa := Space(2)
LOCAL cColor := SetColor("n/gb,gb+/b")

SetCursor(SC_NORMAL)
Tone(450,1)
Tone(300,1)

DispBox(15,1,21,61,1,"n/gb,gb+/b")
@ 16,2 CLEAR TO 20,60
xcodi_go = xcodi_go+1
@ 16,5 SAY "C¢digo... : "
@ 16,20 say xcodi_go picture "999999"
@ 18,5 say "Nombre... : " get xno_mcli PICTURE "@!";
VALID busc2(xno_mcli)
@ 20,5 SAY "N.I.F. .. : " GET xni_fcli PICTURE "@!"
@ 20,32 SAY "Fax ..: " GET xfa_xcli picture "9999999999"
@ 16,32 say "Pago .: " GET xmo_dopa picture "@!"
READ

IF LastKey() # K_ESC

clien->(DbAppend())
clien->Co_dcli := xcodi_go
clien->no_mcli := xno_mcli
clien->ni_fcli := xni_fcli
clien->fa_xcli := xfa_xcli
clien->mo_dopa := xmo_dopa

do numera

oBrw:refreshAll()
oBrw:forceStable()


ENDIF

SetCursor(SC_NONE)
SetColor(cColor)
@ 15,1 CLEAR TO 21,62
RETURN NIL

// Funcion para verificar duplicados

FUNCTION busc2(cParam)
LOCAL cPant, nCursor, lvalor
SEEK cParam
IF FOUND()
lvalor := .F.
cPant := SaveScreen()
nCursor := SetCursor(0)
@ 18,3 clear to 22,60
DispBox(18,3,22,60,2)
@ 19,5 say "Ya existe en la base de datos"
@ 21,5 say "Asignado a "+ clien->no_mcli
inkey(0)
SetCursor(nCursor)
RestScreen(,,,,cPant)
ELSE
lvalor := .T.
ENDIF
RETURN lValor
* --------------------------------------------*
* --- PROCEDURE NUMERA ---*
* --------------------------------------------*
PROCEDURE NUMERA
select 5
replace codigo with xcodi_go
select 3
return
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

RE:Modificar datos de un DBF

Publicado por Roberto Torres (3 intervenciones) el 17/08/2007 20:11:00
Compañeros si alguien pudo compilar el codigo que puso pepe podrian mandarmelo.

Creo que falto el procedure modcli.

Gracias.
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

RE:Modificar datos de un DBF

Publicado por ANTONIO MARTIN (31 intervenciones) el 31/07/2007 23:22:53
Hola en relación al modo en que trabajas, supongo que tienes una función creada por ti para el manejo del DBEDIT(), en ella se pasa automaticamente el modo y el numero del campo sobre el que se encuentra el cursor, utiliza este valor para saber el contenido que vas a modificar en el momento que evaluas los movimientos del teclado en su modo de excepcion y cuando evalues la tecla ENTER pones lo siguiente:
XVALOR=FIELD(XCAMPO) && XCAMPO lo recibes como parametro en tu funcion
XTIENE=&XVALOR
@ ROW(),COL() GET XTIENE
READ
Apartir de aqui tu manejas si guardas los cambios o no

Nota: Al igual que Pepe, te sugiero que utilices el TBROWSE(), a la larga es mas facil de programas...

Suerte...
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

RE:Modificar datos de un DBF

Publicado por Christian Villalobos (4 intervenciones) el 01/08/2007 21:17:42
Gracias a todos mis colegas clipperianos, me ha servido de mucho sus consejos..ya tengo opertivo el metodo que deseaba incluir y lo hice con Tbrowse()

Saludos Cordiales

Clipperiano Christian
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