Hola a todos
Veréis tengo dos base de datos relacioandas: Proveedores y productos y se muestran los datos en un Folderex, por una parte los datos del proveedors y en el otro los productos.
Al principio se muestran en xbrowse todo los proveedores por orden de código y he puesto un cuadro de búsqueda incremental por código y por nombre. El de código me da error y, si bien el del nombre me funciona a la hora salir de la edición se queda en el mismo registro y no se resetea el filtro. ¿Sabéis cómo se puede resetear? Otra cosa: ¿hay alguna manera de que en los obrw:oseek el cursor?
El código es el siguiente:
#include "FiveWin.ch"
#include "ord.ch"
#include "XBrowse.Ch"
function TELEM()
local oDlg, obrw
USE PROVEEDOR NEW SHARED alias "PROVE"
index on PROVE->CODIGO_PRO to CODPROVE
Set index to CODPROVE
USE PRODUCTOS NEW SHARED alias "PRODU"
index on PRODU->CODIGO_PRO to CODPRODU
Set index to CODPRODU
SELE PROVE
SET RELATION TO PROVE->CODIGO_PRO INTO PRODU
DEFINE DIALOG oDlg FROM 3, 3 TO 33, 100 TITLE "PROVEEDORES"
@ 1,1 XBROWSE oBrw SIZE 360, 160;
COLUMNS "CODIGO_PRO", "NOMBRE", "PROVINCIA" OF oDlg alias "PROVE";
HEADERS "Código", "Denominación", "Provincia";
COLSIZES 200, 300, 70 NOBORDER FASTEDIT FOOTERS
@ 2,10 SAY "Búsqueda por código:" SIZE 100,10 PIXEL OF oDlg
@ 2,70 SAY oBrw:oSeek VAR oBrw:cSeek SIZE 100,10 PIXEL OF oDlg COLOR CLR_HRED,CLR_YELLOW
@ 2,178 SAY "Búsqueda por nombre:" SIZE 100,10 PIXEL OF oDlg
@ 2,250 SAY oBrw:oSeek VAR oBrw:cSeek SIZE 100,10 PIXEL OF oDlg COLOR CLR_HRED,CLR_YELLOW
/*
oBrw:lIncrFilter := .t.
oBrw:lSeekWild := .t.
oBrw:cFilterFld := "CODIGO_PRO"
oBrw:bChange := {|| oBrw:oSeek:Refresh() <--- da error
*/
oBrw:lIncrFilter := .t.
oBrw:lSeekWild := .t.
oBrw:cFilterFld := "NOMBRE"
oBrw:bChange := {|| oBrw:oSeek:Refresh() }
oBrw:CreateFromCode()
@ 11, 15 BUTTON "Nuevo " OF oDlg ACTION oBrw:EditSource( .t. )
@ 11, 25 BUTTON "Editar " OF oDlg ACTION EditPro(oBrw)
@ 11, 35 BUTTON "Eliminar" OF oDlg ACTION oBrw:Delete()
@ 11, 45 BUTTON "&Imprimir" OF oDlg ;
ACTION oBrw:Report( "Listado ", .t. ) ; // .t. --> wants preview
SIZE 40, 12
@ 11,55 BUTTON "&Terminar" OF oDlg ACTION oDlg:End() SIZE 40, 12
ACTIVATE DIALOG oDlg CENTERED
return nil
//***************** EDICION CON FOLDER---------------
Function editPro(oBrw)
Local oDlg, oFld, oLbx
local nProve, oProve, cNombre, oNombre,cProvincia, oProvincia
NProve :=PROVE->CODIGO_PRO
cNombre :=PROVE->NOMBRE
cProvincia:=PROVE->PROVINCIA
DEFINE DIALOG oDlg FROM 3, 3 TO 20,70 TITLE "Mantenimiento"
@ 10, 5 FOLDEREX oFld PIXEL PROMPT "&Proveedor", "&Datos mercancías" SIZE 250,100
@ 20, 5 SAY "Código:" OF oFld:aDialogs[ 1 ] SIZE 60,10 PIXEL
@ 20, 100 SAY oProve var nProve OF oFld:aDialogs[ 1 ] SIZE 60,10 PIXEL
@ 30, 5 SAY "Razón social" OF oFld:aDialogs[ 1 ] SIZE 60,10 PIXEL
@ 30, 100 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] SIZE 100,10 PIXEL
@ 40, 5 SAY "Provincia" OF oFld:aDialogs[ 1 ] SIZE 60,10 PIXEL
@ 40, 100 GET oProvincia VAR cProvincia OF oFld:aDialogs[ 1 ] SIZE 100,10 PIXEL
@ 60, 50 BUTTON "Grabar" OF oFld:aDialogs[1] SIZE 40,10 PIXEL action oDlg:end()
@ 60, 150 BUTTON "Salir" OF oFld:aDialogs[1] SIZE 40,10 PIXEL ACTION oDlg:End()
sele produ
produ->(ordscope(0, nProve))
produ->(ordscope(1, nProve))
produ->(DBSKIP(0))
if produ->(ordKeyCount())==0
MsgInfo("No se encontraron productos")
endif
@ 1,1 XBROWSE oLbx SIZE 250, 65 PIXEL;
COLUMNS "CODIGO_PRO", "PRODUCTO", "PRECIO" OF oFld:aDialogs[ 2 ] alias "PRODU";
HEADERS "Código proveedor", "Producto", "Precio";
COLSIZES 70,300,140;
JUSTIFY AL_RIGHT, AL_LEFT, AL_RIGHT;
PICTURES , , "@E 9,999,999.99" LINES NOBORDER FASTEDIT
oLbx:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
Return nil