conflicto con database

conflicto con database

Postby surGom » Tue Oct 22, 2019 12:59 am

Buenas noches, anteriormente hice una consulta con el título Recursos. Mal titulado. El problema era con la clase database. Les explico estoy utilizando este código
Ejemplo 1
Code: Select all  Expand view
DEFINE DIALOG odlg resource "lisbus_1" ICON surge
odlg:cCaption:= "Clientes"

  REDEFINE LISTBOX olbm FIELDS (odbf:calias) ->NAPE ID 101;
             ON DBLCLICK (lacepto:= .t.,odlg:end())  of odlg
             olbm:setfocus()
             olbm:bSkip := { | nRecs | odbf:Skipper( nRecs ) }
             olbm:bSeek := {|lRet| olbm:DbfSeek(.T.) }
             oLbm:bkeydown :=  {|nkey,nflags| iif(nKey = VK_RETURN, nBut:setfocus(),.f.)}
             olbm:nClrBackFocus := CLR_CYAN
             olbm:nClrForeFocus := CLR_WHITE  


TDATABASE fwh 17.9
este código no funciona se queda clavado en el primer registro y sí funciona el programa que envíe anteriormente en la consulta titulada "Recursos" que era la búsqueda incremental y filtrado en la clase xbrowse
TDATABASE fwh 15.5
el ejemplo1 funciona perfectamente pero el de Recursos se queda clavado.

Lo que logré ver es que si compilo con la clase de database 17.9 y en el ejemplo!1 quito la línea
Code: Select all  Expand view
            olbm:bSkip := { | nRecs | odbf:Skipper( nRecs ) }

EL listbox navega pero al seleccionarlo no me muestra los datos correspondientes al mismo sino que muestra el primero del listbox,.
Y si funciona el xbrowse del programa la consulta anterior Recursos.

El problema que tengo es que necesito hacer la busqueda en el Txbrowse (ej de Recursos), pero el problema es que el ejemplo 1 lo utilizó en muchas búsquedas de distintos items (clientes, proveedores, productos, etc)

Alguien tendría una idea de que puedo modificar en el ejemplo 1 para poder usar la clase database 17.9


Muchas Gracias
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm


Re: conflicto con database

Postby surGom » Tue Oct 22, 2019 11:10 pm

Gracias karinha, pero no encuentro como hacer para que me lea el dato que necesito.
Quitando la linea, perdón por lo reiterativo, de mi código compilado con la database fw17:

Code: Select all  Expand view
olbm:bSkip := { | nRecs | odbf:Skipper( nRecs ) }


tecleando letra por letra buscando el cliente llega al mismo, pero al querer editarlo lo que hace es editarme el primer cliente, lo que necesito es que aunque sea me lea el dato que busque y con eso hacer un seek a la base de datos con otro código. No quiero pasar todos los browse a xbrowse.
Mis conocimientos son limitados para tocar códigos fuentes de fw y aparte no es mi gusto cambiarlos, por eso sustituí por la clase database del FW15 y para el programa funcionaba todo perfecto, hasta que quise utilizar la busqueda en xbrowse.
Y generalmente me pasa que soluciono las cosas no por mi sapiencia sino por lo del burro que toco la flauta, es decir de casualidad.
Como puedo sacar ese dato que teclee ?

Muchas Gracias
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: conflicto con database

Postby surGom » Tue Oct 22, 2019 11:17 pm

AH me olvide de comentar que en la clase database del fw17

Code: Select all  Expand view
METHOD Skipper( nRecords ) // for use by xbrowse only. do not use in application


será por esto que quitandolo el wbrowse funciona la busqueda en el listbox, pero no en la base.
Bueno la pregunta es como hago para que lo que busco en el listbox y encuentro lo haga en la base de datos?

Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: conflicto con database

Postby surGom » Thu Oct 24, 2019 1:12 am

Hola bueno logré hacerlo funcionar lo que hice funcionar

DEFINE ICON surge resource "icoprog"

DEFINE DIALOG oDlg resource "lisbus_1" ICON surge
odlg:cCaption:= "Clientes"

REDEFINE LISTBOX olbm FIELDS (oDbf:calias) ->NAPE ID 101;
ON DBLCLICK (lacepto:= .t.,odlg:end()) of odlg
olbm:setfocus()
olbm:bSkip := { | nRecs | odbf:Skipper( nRecs ) } 1-Quite esta parte
olbm:bSeek := {|lRet| olbm:DbfSeek(.T.) }
oLbm:bkeydown := {|nkey,nflags| iif(nKey = VK_RETURN, nBut:setfocus(),.f.)}
olbm:nClrBackFocus := CLR_CYAN
olbm:nClrForeFocus := CLR_WHITE
REDEFINE BUTTON NBUT ID 102 ACTION (lacepto := .t.,odlg:end())


REDEFINE BUTTON ID 103 ACTION( clientes( olbm, .t.,odbf),olbm:refresh()) 2-AGrego algo



ACTIVATE DIALOG ODLG

1-Quite esta parte Quitando esto con la database de fwh17 navega sobre el wbrowse

2-AGrego algo
Con la databsae fwh15 con solo pasar odbf me mandaba el registro completo de dónde me había posicionado. Lo que hice fue pasar (odbf:calias)->nclia que viene a ser el nro de cliente y antes de abrir el diálogo que muestro los datos hago un odbf:seek(nclia) y ahora sí me muestra los datos que necesito
QUeda así

clientes( olbm, .t.,odbf,(odbf:calias)->ncli)

function clientes( olbm, .t.,odbf, nclia)

odbf:seek(nclia)

y ahora puedo ver todos los datos, antes me mostraba el del primer registro de la base de datos


Funciona pero no me gusta. Me parece que voy a pasar todo a xbrowse

Muchas Gracias por su atención y paciencia

Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 23 guests