Ejemplo dbEdit - Harbour - xEdit

Ver el tema anterior Ver el tema siguiente Ir abajo

Ejemplo dbEdit - Harbour - xEdit

Mensaje  bitcof el Miér Feb 03, 2010 11:27 pm

El siguiente ejemplo desarrollado con Harbour - xEdit


El codigo fuente lo muesto mas adelante.
La estructura del archivo se tiene que crear en base al arreglo para el dbedit



La programacion esta hecha para funcionar en RED

El metodo de busqueda permite encontrar cualquier palabra en distintos campos del registro
Ejemplo: un codigo de barras, una descripcion, una palara, cualquier cadena de caracteres.






Codigo fuente:

/*
* Proyecto: tabla_dbedit
* Fichero: Module1.prg
* Descripción: Browse con dbEdit a file e_mtoart.dbf
* Autor: Juan Hernandez Medina.
* e-mail: juan_hm@hotmail.com
* Fecha: 01/02/2010
*/

function main()
* Configuramos ambiente:
set date british
set delete on
set device to screen
set exact ON
set century ON
set exclusive off // red
set printer off
set printer to PRN
set scoreboard on

setmode(25,80)
Clear

Public g_answer, g_buscar
g_answer = 0
g_buscar = space(35)

select 1
use E_MTOART.DBF

declare campos[16]
campos[01] = 'CLAVE'
campos[02] = 'PRODUCTO'
campos[03] = 'PRECIO'
campos[04] = 'CTOART'
campos[05] = 'CLASIFICA'
campos[06] = 'CONTROL'
campos[07] = 'CTRL_EXI'
campos[08] = 'EXISTENCIA'
campos[09] = 'MAXIMO'
campos[10] = 'MINIMO'
campos[11] = 'ULTVTA'
campos[12] = 'ULTCOM'
campos[13] = 'DESCUENTO'
campos[14] = 'FILPAK'
campos[15] = 'PROVEE'
campos[16] = 'NOMPRO'

SET COLOR TO BG+
@21,01 say '[Enter] Consultar/Editar [Del] Borrar [F5] Agregar Nuevo registro '
@22,01 say '[F10] Buscar [Esc] Salir juan_hm@hotmail.com'
set color to
wSombra(1,1,19,78)
dbEdit(2,2,18,77,campos,'Func')
clear all
quit

return nil


FUNCTION FUNC
parameters mode, pos
private campo_act,salva,vop
campo_act = campos[pos]

do case
case mode = 0 // estado de inactividad
return(1)
case mode = 1 // se intenta sobrepasar el principio bof()
tone(300,2)
return(1)
case mode = 2 // se intenta sobrepasar el final eof()
tone(300,2)
salva = savescreen(10,30,13,50)
wSombra(10,30,12,49)
vop = ' '
setcursor(2)
@11,32 say 'Agregar (S/N):' get vop picture '@!' valid vop$'SN'
read
setcursor(0)
restscreen(10,30,13,50,salva)
if vop = 'S'
NUEVO_REG()
endif
return(2)

case mode = 3 // tabla vacia
tone(300,2)
@23,15 say 'Tabla de datos vacia, pulse cualquier tecla para salir'
inkey(0)
return(0)

case lastkey() = 27 // Esc - Salida del dbEdit
return(0)

case lastkey() = 28 // F1 - Ayuda dbEdit
save screen to d_tmp
tone(300,2)
wSombra(15,10,17,70)
@16,12 say 'Ayuda no disponible...'
wait''
rest screen from d_tmp
return(1)

case lastkey() = -4 // F5 Alta
NUEVO_REG()
return(2)

case lastkey() = 7 // Del - Borrar Registro
BORRA_REG()
return(2)

case lastkey() = 13 // Enter - Modifica
EDITA_REG()
return(2)

case lastkey() = -9 // F10 - Buscar
BUSCA_REG()
return(2)

otherwise
return(1)
endcase


return nil

FUNCTION FORM_REG
wSombra(2,3,21,77)

@04,5 say ' Clave:'
@05,5 say ' Producto:'
@06,5 say ' Precio:'
@07,5 say ' Costo:'
@08,5 say ' Clasificacion:'
@09,5 say ' Control de almacen:'
@10,5 say 'Control de existencia:'
@11,5 say ' Existencia:'
@12,5 say ' Maximo:'
@13,5 say ' Minimo:'
@14,5 say ' Ultima venta:'
@15,5 say ' Ultima compra:'
@16,5 say ' Descuento:'
@17,5 say ' Paquete:'
@18,5 say ' Proveedor:'
@19,5 say ' Nombre Proveedor:'

RETURN NIL

FUNCTION EDITA_REG
save screen to d_retorna
FORM_REG()
@2,7 say ' Consulta/edicion de registro '

* Inicializa variables
w_clave = space(20)
w_produ = space(30)
w_preci = 0
w_costo = 0
w_clasi = space(10)
w_almac = space(10)
w_ctrle = space(01)
w_exist = 0
w_maxim = 0
w_minim = 0
w_venta = ctod(' / / ')
w_compr = ctod(' / / ')
w_descu = 0
w_paque = space(12)
w_prove = space(03)
w_nombr = space(45)

* Asigana campos a variables
w_clave = CLAVE
w_produ = PRODUCTO
w_preci = PRECIO
w_costo = CTOART
w_clasi = CLASIFICA
w_almac = CONTROL
w_ctrle = CTRL_EXI
w_exist = EXISTENCIA
w_maxim = MAXIMO
w_minim = MINIMO
w_venta = ULTVTA
w_compr = ULTCOM
w_descu = DESCUENTO
w_paque = FILPAK
w_prove = PROVEE
w_nombr = NOMPRO

@04,29 say w_clave
@05,29 say w_produ
@06,29 say w_preci pict '$999,999.99'
@07,29 say w_costo pict '$999,999.99'
@08,29 say w_clasi
@09,29 say w_almac
@10,29 say w_ctrle
@11,29 say w_exist
@12,29 say w_maxim
@13,29 say w_minim
@14,29 say w_venta
@15,29 say w_compr
@16,29 say w_descu
@17,29 say w_paque
@18,29 say w_prove
@19,29 say w_nombr

do while .t.
ARS()
do case
case g_answer = 1 // guardar
br()
replace CLAVE with w_clave
replace PRODUCTO with w_produ
replace PRECIO with w_preci
replace CTOART with w_costo
replace CLASIFICA with w_clasi
replace CONTROL with w_almac
replace CTRL_EXI with w_ctrle
replace EXISTENCIA with w_exist
replace MAXIMO with w_maxim
replace MINIMO with w_minim
replace ULTVTA with w_venta
replace ULTCOM with w_compr
replace DESCUENTO with w_descu
replace FILPAK with w_paque
replace PROVEE with w_prove
replace NOMPRO with w_nombr
qb()

case g_answer = 2 // Editar
setcursor(2)
@04,29 get w_clave pict '@!'
@05,29 get w_produ pict '@!'
@06,29 get w_preci pict '$999,999.99'
@07,29 get w_costo pict '$999,999.99'
@08,29 get w_clasi pict '@!'
@09,29 get w_almac pict '@!'
@10,29 get w_ctrle pict '@!'
@11,29 get w_exist pict '999,999,999.999'
@12,29 get w_maxim pict '999,999,999.999'
@13,29 get w_minim pict '999,999,999.999'
@14,29 get w_venta
@15,29 get w_compr
@16,29 get w_descu pict '99.99%'
@17,29 get w_paque pict '@!'
@18,29 get w_prove pict '@!'
@19,29 get w_nombr pict '@!'
read
setcursor(0)
loop
case g_answer = 3 // Salir sin guadar
endcase
exit
enddo
rest screen from d_retorna

RETURN NIL

FUNCTION NUEVO_REG
save screen to d_retorna
FORM_REG()
@2,7 say ' Registro nuevo '

* Inicializa variables
w_clave = space(20)
w_produ = space(30)
w_preci = 0
w_costo = 0
w_clasi = space(10)
w_almac = space(10)
w_ctrle = space(01)
w_exist = 0
w_maxim = 0
w_minim = 0
w_venta = ctod(' / / ')
w_compr = ctod(' / / ')
w_descu = 0
w_paque = space(12)
w_prove = space(03)
w_nombr = space(45)

do while .t.
setcursor(2)
@04,29 get w_clave pict '@!'
read

if w_clave = space(20)
exit
endif

@05,29 get w_produ pict '@!'
@06,29 get w_preci pict '$999,999.99'
@07,29 get w_costo pict '$999,999.99'
@08,29 get w_clasi pict '@!'
@09,29 get w_almac pict '@!'
@10,29 get w_ctrle pict '@!'
@11,29 get w_exist pict '999,999,999.999'
@12,29 get w_maxim pict '999,999,999.999'
@13,29 get w_minim pict '999,999,999.999'
@14,29 get w_venta
@15,29 get w_compr
@16,29 get w_descu pict '99.99%'
@17,29 get w_paque pict '@!'
@18,29 get w_prove pict '@!'
@19,29 get w_nombr pict '@!'
read
setcursor(0)
ARS()
do case
case g_answer = 1 // guardar
br()
replace CLAVE with w_clave
replace PRODUCTO with w_produ
replace PRECIO with w_preci
replace CTOART with w_costo
replace CLASIFICA with w_clasi
replace CONTROL with w_almac
replace CTRL_EXI with w_ctrle
replace EXISTENCIA with w_exist
replace MAXIMO with w_maxim
replace MINIMO with w_minim
replace ULTVTA with w_venta
replace ULTCOM with w_compr
replace DESCUENTO with w_descu
replace FILPAK with w_paque
replace PROVEE with w_prove
replace NOMPRO with w_nombr
qb()
exit
case g_answer = 2 // Editar
loop
case g_answer = 3 // Salir sin guadar
exit
endcase

enddo
rest screen from d_retorna
setcursor(0)

RETURN NIL

FUNCTION BORRA_REG
tone(300,2)
save screen to d_retorna
FORM_REG()
@2,7 say ' Borrar registro '

* Inicializa variables
w_clave = space(20)
w_produ = space(30)
w_preci = 0
w_costo = 0
w_clasi = space(10)
w_almac = space(10)
w_ctrle = space(01)
w_exist = 0
w_maxim = 0
w_minim = 0
w_venta = ctod(' / / ')
w_compr = ctod(' / / ')
w_descu = 0
w_paque = space(12)
w_prove = space(03)
w_nombr = space(45)

* Asigana campos a variables
w_clave = CLAVE
w_produ = PRODUCTO
w_preci = PRECIO
w_costo = CTOART
w_clasi = CLASIFICA
w_almac = CONTROL
w_ctrle = CTRL_EXI
w_exist = EXISTENCIA
w_maxim = MAXIMO
w_minim = MINIMO
w_venta = ULTVTA
w_compr = ULTCOM
w_descu = DESCUENTO
w_paque = FILPAK
w_prove = PROVEE
w_nombr = NOMPRO

@04,29 say w_clave
@05,29 say w_produ
@06,29 say w_preci pict '$999,999.99'
@07,29 say w_costo pict '$999,999.99'
@08,29 say w_clasi
@09,29 say w_almac
@10,29 say w_ctrle
@11,29 say w_exist
@12,29 say w_maxim
@13,29 say w_minim
@14,29 say w_venta
@15,29 say w_compr
@16,29 say w_descu
@17,29 say w_paque
@18,29 say w_prove
@19,29 say w_nombr

wSombra(21,25,23,55)
@22,27 say 'Borrar registro? (S/N):'
w_borra = space(01)
setcursor(2)
@22,52 get w_borra pict '@!' valid w_borra$'SN'
setcursor(0)
read
if w_borra = 'S'
br()
delete
skip -1
qb()

endif
rest screen from d_retorna

RETURN NIL

FUNCTION BUSCA_REG
* El siguiente metodo de busqueda permitira buscar
* cualquier palabra contenida en los campos: CLAVE, PRODUCTO,
* CLASIFICA, CONTROL, FILPAK, PROVEE y NOMPRO de c/registro.

save screen to d_retorna
w_regact = recno() // Registro actual

wSombra(10,10,12,70)
@11,14 say 'Buscar:'

setcursor(2)
@11,22 get g_buscar pict '@!'
setcursor(0)
read

if g_buscar = space(30)
rest scre from d_retorna
return nil
endif

w_buscar = alltrim(g_buscar)
f_found = 0

if updated() // si el get sufrio cambios
go top
else
skip + 1
endif

do while .not. eof()
if at(w_buscar,CLAVE)<>0
f_found = 1
exit
else
if at(w_buscar,PRODUCTO)<>0
f_found = 1
exit
else
if at(w_buscar,CLASIFICA)<>0
f_found = 1
exit
else
if at(w_buscar,CONTROL)<>0
f_found = 1
exit
else
if at(w_buscar,FILPAK)<>0
f_found = 1
exit
else
if at(w_buscar,PROVEE)<>0
f_found = 1
exit
else
if at(w_buscar,NOMPRO)<>0
f_found = 1
exit
endif
endif
endif
endif
endif
endif
endif
skip + 1
enddo
if f_found = 0
@11,14 say ' No existen coincidencias con: ' + w_buscar + space(4)
wait''
go w_regact
endif
rest scre from d_retorna
return nil




rest screen from d_retorna

RETURN NIL



FUNCTION ARS()
save screen
g_answer = 0
* setcolor(smenu)
wSombra(21,25,23,55)
@21,35 say 'Â'
@22,35 say '³'
@23,35 say 'Á'
@21,45 say 'Â'
@22,45 say '³'
@23,45 say 'Á'
do while g_answer = 0
@22,26 prompt ' Guardar '
@22,36 prompt ' Editar '
@22,46 prompt ' Salir '
menu to g_answer
enddo
restore screen


RETURN NIL


Function WSombra(CurRow, CurCol, LastRow, LastCol)

Local TempScre:= SaveScreen (CurRow + 1, CurCol + 1, LastRow + 1, LastCol + 2)
Local FinalScre:= "", Bucle
For Bucle = 1 to Len(TempScre)
If Bucle / 2 = Int(Bucle / 2)
FinalScre += Chr(08)
Else
FinalScre += SubStr(TempScre, Bucle, 1)
EndI
Next Bucle
RestScreen(CurRow + 1, CurCol + 1, LastRow + 1, LastCol + 2, FinalScre)
@ CurRow, CurCol Clea to LastRow, LastCol
@ CurRow, CurCol to LastRow, LastCol

Return nil

// Funciones para RED

FUNCTION BR
* Bloquea Registro
do while .t.
if rlock()
* ok registro bloqueado
exit
endif
enddo
return nil



FUNCTION QB
* Quita bloqueo File/Record
unlock
return nil



// eof() MODULE1.PRG

bitcof

Mensajes : 25
Fecha de inscripción : 22/01/2010
Edad : 52
Localización : Queretaro - Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ejemplo dbEdit - Harbour - xEdit

Mensaje  Gonsan el Vie Feb 26, 2010 8:53 am

Juan,

Cómo haces para que figure "Directorio articulos eCaja". A mí me figura el path donde está el pgm.

Gracias

Gonsan

Mensajes : 1
Fecha de inscripción : 23/02/2010

Ver perfil de usuario

Volver arriba Ir abajo

Hola Gonsan, te respondo...

Mensaje  bitcof el Lun Mar 01, 2010 3:35 pm

Bien solo agrega este codigo al principio de la Funcion MAIN

/*
* Proyecto: tabla_dbedit
* Fichero: Module1.prg
* xEdit - xHarbour para compilar
* Descripción: Browse con dbEdit a file e_mtoart.dbf
* Autor: Juan Hernandez Medina.
* Fecha: 01/02/2010
*/

#PRAGMA BEGINDUMP

#include "hbapi.h"
#include "Windows.h"

HB_FUNC( SETCONSOLETITLE )
{
hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ;
}

HB_FUNC( FINDWINDOW )
{
hb_retnl( ( LONG ) FindWindow( NULL, hb_parc( 1 ) ) ) ;
}

#PRAGMA ENDDUMP


function main()
* Configuramos ambiente:
set date british
set delete on
set device to screen
set exact ON
set century ON
set exclusive off // red
set printer off
set printer to PRN
set scoreboard on

setmode(25,80)
SetConsoleTitle("Directorio de articulos eCaja") // Esta linea depende de la secc. de codigo C anterior.
Clear

y... le sigues, solo inserta esto al principio de mi ejemplo anterior.





ATTE
BITCOF (JUAN HDEZ M)

bitcof

Mensajes : 25
Fecha de inscripción : 22/01/2010
Edad : 52
Localización : Queretaro - Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ejemplo dbEdit - Harbour - xEdit

Mensaje  dragonlord el Jue Mayo 27, 2010 7:18 pm

Hola estimadísimos! como están? yo muy entusiasmado con este foro y sobre todo con xHarbor, el ejemplo que planteaste al inicio fue excelente y me motivo a seguir investigando. Todo esto me llevo a bajar el programita XEdit (enlace que encontré en este foro) que por cierto es exelente y vi tu ejemplo de "Hola Mundo!" luego encontré este tema, y me pareció muy útil e instructivo tu ejemplo. entonces procedí a copiar el código que tu brindaste y pegarlo luego de compilarlo sin ningún error, pero me faltaba la base de datos que la encontré en este link Base de Datos y funcionó perfecto pero el inconveniente surge cuando quise crear una nueva base de datos con campos que se ajustan a mi necesidad y modifique la estructura para adecuarla a esta y el tema es cuando ingreso un nuevo registro [F5] reemplaza al existente y solo aparece un registro "no pasando esto con tu base de datos que no tiene problemas en dar alta a registros" Tendrías la gentileza de explicarme cual puede ser el problema? desde ya muchas gracias y un abrazo! cheers

dragonlord

Mensajes : 5
Fecha de inscripción : 27/05/2010

Ver perfil de usuario

Volver arriba Ir abajo

Hola dragonlord, respondo a tu pregunta

Mensaje  bitcof el Sáb Mayo 29, 2010 12:05 am

Bueno a juzgar por lo que me comentas puede ser que al presionar el F5 te ejecute la funcion para dar de ALTA y pueda estar faltando el APPEND BLANK para guardar el contenido de tus variables en sus respectivos campos y lo que este sucediendo cuando me dices que REEMPLAZA es que al utilizar los REPLACES el "apuntador" de registro se encuentre en tu ultima consulta.

Echale un ojo a la funcion que se ejecuta con F5 del ejemplo.

Saludos!

bitcof

Mensajes : 25
Fecha de inscripción : 22/01/2010
Edad : 52
Localización : Queretaro - Mexico

Ver perfil de usuario

Volver arriba Ir abajo

dragonlord, en efecto. Revisando el codigo de NUEVO_RE si hace falta el Append Blank

Mensaje  bitcof el Sáb Mayo 29, 2010 12:19 am

Mil Perdones....

Y efectivamente mi codigo se paso mal al copiarlo. Disculpen la indentacion que quedo cargada toda a la izquierda.

Haciendo la correccion pertinente solo agrega APPEND BLANK EN:

ARS() // < fUNCION Acepta, Revisa, Salir
do case
case g_answer = 1 // guardar
APPEND BLANK // <-- AGREGEN AQUI Para crear un registro nuevo y el apuntador se mueva a este punto
br() // <-- bloquear registro .. Es para RED
replace CLAVE with w_clave <-- y empiezas a ejecutar los "reemplazos" de cada uno de tus campos
replace PRODUCTO with w_produ


Si notas en mi ejemplo yo no escribo los cambios directamente en los campos, sino hasta que los cambios se disponen a guardar completos ya que si haces eso de ir cambiando campo x campo durante la edicion de un registro corres el riesgo de que otro usuario de tu red intente lo mismo mientras tu lo editas.

La funcion para dar altas queda asi y la misma tecnica de formularios la puedes emplear en cualquiera de tus aplicaciones de software:


FUNCTION NUEVO_REG
save screen to d_retorna
FORM_REG()
@2,7 say ' Registro nuevo '

* Inicializa variables
w_clave = space(20)
w_produ = space(30)
w_preci = 0
w_costo = 0
w_clasi = space(10)
w_almac = space(10)
w_ctrle = space(01)
w_exist = 0
w_maxim = 0
w_minim = 0
w_venta = ctod(' / / ')
w_compr = ctod(' / / ')
w_descu = 0
w_paque = space(12)
w_prove = space(03)
w_nombr = space(45)

do while .t.
setcursor(2)
@04,29 get w_clave pict '@!'
read

if w_clave = space(20)
exit
endif

@05,29 get w_produ pict '@!'
@06,29 get w_preci pict '$999,999.99'
@07,29 get w_costo pict '$999,999.99'
@08,29 get w_clasi pict '@!'
@09,29 get w_almac pict '@!'
@10,29 get w_ctrle pict '@!'
@11,29 get w_exist pict '999,999,999.999'
@12,29 get w_maxim pict '999,999,999.999'
@13,29 get w_minim pict '999,999,999.999'
@14,29 get w_venta
@15,29 get w_compr
@16,29 get w_descu pict '99.99%'
@17,29 get w_paque pict '@!'
@18,29 get w_prove pict '@!'
@19,29 get w_nombr pict '@!'
read
setcursor(0)
ARS()
do case
case g_answer = 1 // guardar
APPEND BLANK // <--------------- AGREGEN AQUI
br()
replace CLAVE with w_clave
replace PRODUCTO with w_produ
replace PRECIO with w_preci
replace CTOART with w_costo
replace CLASIFICA with w_clasi
replace CONTROL with w_almac
replace CTRL_EXI with w_ctrle
replace EXISTENCIA with w_exist
replace MAXIMO with w_maxim
replace MINIMO with w_minim
replace ULTVTA with w_venta
replace ULTCOM with w_compr
replace DESCUENTO with w_descu
replace FILPAK with w_paque
replace PROVEE with w_prove
replace NOMPRO with w_nombr
qb()
exit
case g_answer = 2 // Editar
loop
case g_answer = 3 // Salir sin guadar
exit
endcase

enddo
rest screen from d_retorna
setcursor(0)

RETURN NIL

bitcof

Mensajes : 25
Fecha de inscripción : 22/01/2010
Edad : 52
Localización : Queretaro - Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ejemplo dbEdit - Harbour - xEdit

Mensaje  dragonlord el Lun Mayo 31, 2010 1:32 pm

bitcof escribió:Mil Perdones....

Y efectivamente mi codigo se paso mal al copiarlo. Disculpen la indentacion que quedo cargada toda a la izquierda.

Haciendo la correccion pertinente solo agrega APPEND BLANK EN:

ARS() // < fUNCION Acepta, Revisa, Salir
do case
case g_answer = 1 // guardar
APPEND BLANK // <-- AGREGEN AQUI Para crear un registro nuevo y el apuntador se mueva a este punto
br() // <-- bloquear registro .. Es para RED
replace CLAVE with w_clave <-- y empiezas a ejecutar los "reemplazos" de cada uno de tus campos
replace PRODUCTO with w_produ


Si notas en mi ejemplo yo no escribo los cambios directamente en los campos, sino hasta que los cambios se disponen a guardar completos ya que si haces eso de ir cambiando campo x campo durante la edicion de un registro corres el riesgo de que otro usuario de tu red intente lo mismo mientras tu lo editas.

La funcion para dar altas queda asi y la misma tecnica de formularios la puedes emplear en cualquiera de tus aplicaciones de software:


FUNCTION NUEVO_REG
save screen to d_retorna
FORM_REG()
@2,7 say ' Registro nuevo '

* Inicializa variables
w_clave = space(20)
w_produ = space(30)
w_preci = 0
w_costo = 0
w_clasi = space(10)
w_almac = space(10)
w_ctrle = space(01)
w_exist = 0
w_maxim = 0
w_minim = 0
w_venta = ctod(' / / ')
w_compr = ctod(' / / ')
w_descu = 0
w_paque = space(12)
w_prove = space(03)
w_nombr = space(45)

do while .t.
setcursor(2)
@04,29 get w_clave pict '@!'
read

if w_clave = space(20)
exit
endif

@05,29 get w_produ pict '@!'
@06,29 get w_preci pict '$999,999.99'
@07,29 get w_costo pict '$999,999.99'
@08,29 get w_clasi pict '@!'
@09,29 get w_almac pict '@!'
@10,29 get w_ctrle pict '@!'
@11,29 get w_exist pict '999,999,999.999'
@12,29 get w_maxim pict '999,999,999.999'
@13,29 get w_minim pict '999,999,999.999'
@14,29 get w_venta
@15,29 get w_compr
@16,29 get w_descu pict '99.99%'
@17,29 get w_paque pict '@!'
@18,29 get w_prove pict '@!'
@19,29 get w_nombr pict '@!'
read
setcursor(0)
ARS()
do case
case g_answer = 1 // guardar
APPEND BLANK // <--------------- AGREGEN AQUI
br()
replace CLAVE with w_clave
replace PRODUCTO with w_produ
replace PRECIO with w_preci
replace CTOART with w_costo
replace CLASIFICA with w_clasi
replace CONTROL with w_almac
replace CTRL_EXI with w_ctrle
replace EXISTENCIA with w_exist
replace MAXIMO with w_maxim
replace MINIMO with w_minim
replace ULTVTA with w_venta
replace ULTCOM with w_compr
replace DESCUENTO with w_descu
replace FILPAK with w_paque
replace PROVEE with w_prove
replace NOMPRO with w_nombr
qb()
exit
case g_answer = 2 // Editar
loop
case g_answer = 3 // Salir sin guadar
exit
endcase

enddo
rest screen from d_retorna
setcursor(0)

RETURN NIL

Gracias por su rápida respuesta, ahora si funciona, esto me motiva más por seguir aprendiendo sobre este lenguaje, un abrazo desde Argentina !!!

dragonlord

Mensajes : 5
Fecha de inscripción : 27/05/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ejemplo dbEdit - Harbour - xEdit

Mensaje  Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.