FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Array desde varias DBFs usando FW_DbfToArray() ? SOLUCIONADO
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Array desde varias DBFs usando FW_DbfToArray() ? SOLUCIONADO

Posted: Mon May 31, 2021 08:28 PM
Hola.
La function FW_DbfToArray() no permite crear un array desde varias Dbfs id茅nticas ?

Siempre he utilizado, sin problemas, esta funci贸n para crear consultas, Browsers, y reportes, utilizando los dos primeros par谩metros: cFieldList y bFor.
Hoy se me presenta la necesidad de crear el array extrayendo los datos desde varias tablas DBF, sin resultados.
En el siguiente ejemplo, el browser no muestra nada: ( FW1709 )

Code (fw): Select all Collapse
//--------------------------------------------//
Function DBFs2Array(dFechaF)
local aData := {}
Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Cheques->( 聽FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
RecibCaj->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Minutas->( 聽FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Facturas->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
CARTERA->( 聽FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
XBROWSER aData TITLE "ARRAY DESDE VARIAS DBFs"
return nil


Alguien puede postear un ejemplo de la manera planteada?
Gracias.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Mon May 31, 2021 08:46 PM
Francisco, has intentado...
Code (fw): Select all Collapse
Function DBFs2Array(dFechaF)
local aData := {}
aData 聽 聽 聽 聽 := Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) )
.../...
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Mon May 31, 2021 09:04 PM
cnavarro wrote:Francisco, has intentado...
Code (fw): Select all Collapse
Function DBFs2Array(dFechaF)
local aData := {}
aData 聽 聽 聽 聽 := Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) )
.../...


Gracias por contestar, Crist贸bal.
S铆, lo he hecho de esa forma... y lo mismo. ( solo trae los datos de la primera tabla dbf )
Saludos.
Code (fw): Select all Collapse
Function DBFs2Array(dFechaF)
local aData := {}
aData := Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Cheques->(  FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
RecibCaj->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Minutas->(  FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Facturas->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
CARTERA->(  FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
XBROWSER aData TITLE "ARRAY DESDE VARIAS DBFs"
return nil
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Mon May 31, 2021 09:22 PM
Lo he intentado asi... y nada...
Code (fw): Select all Collapse
Function DBFs2Array(dFechaF)
local aData := {}
Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , @aData ) )    //  -->> @
Cheques->(  FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , @aData ) )
RecibCaj->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , @aData ) )
Minutas->(  FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , @aData ) )
Facturas->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , @aData ) )
CARTERA->(  FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , @aData ) )
XBROWSER aData TITLE "ARRAY DESDE VARIAS DBFs"
return nil
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Mon May 31, 2021 09:42 PM
Crist贸bal:
Incre铆ble... la respuesta la tienen los gur煤s de Fivewin.

Hice una copia de la funci贸n original FW_DbfToArray(), y la coloqu茅 (RENOMBRADA) como una funci贸n mas en el programa, y funcion贸.
Claro est谩, que no es la soluci贸n correcta, pero mientras..

Code (fw): Select all Collapse
//----------------------------------------------------------------------------//
Function DBFs2Array(dFechaF)
local aData := {}
Comprobd->( FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Cheques->(  FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
RecibCaj->( FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Minutas->(  FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
Facturas->( FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
CARTERA->(  FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 
XBROWSER aData TITLE "ARRAY DESDE VARIAS DBFs"
return nil

//----------------------------------------------------------------------------//

function FWA_DbfToArray( cFieldList, bFor, bWhile, nNext, nRec, lRest, aData )

   local aRet  := {}, nRecNo := RecNo(), bLine, cList

   // cFieldList : comma delimited list of fields. Eg: "First,City,Age"

   if ValType( aData ) == 'A'
      aRet     := aData
   endif

   if Empty( cFieldList ) .or. '*' $ cFieldList
      cList  := ""
      AEval( DbStruct(), { |a| cList += "," + a[ 1 ] } )
      cList  := Substr( cList, 2 )

      if Empty( cFieldList )
         cFieldList  := cList
      else
         cFieldList  := StrTran( cFieldList, '*', cList )
      endif

   endif

   bLine    := &( "{||{" + cFieldList + "}}" )
   DbEval( { || AAdd( aRet, Eval( bLine ) ) }, bFor, bWhile, nNext, nRec, lRest )
   DBGOTO( nRecNo )

return aRet

Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Mon May 31, 2021 09:52 PM
Has intentado con un aClone ?
Code (fw): Select all Collapse
Function DBFs2Array(dFechaF)
local aData := {}
aData 聽 聽 聽 聽 := aClone( Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) )
.../...
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Tue Jun 01, 2021 01:57 AM
Crist贸bal.
No hay de pi帽a. Probablemente no he interpretado bien tus sugerencias.

Code (fw): Select all Collapse
Function DBFs2Array(dFechaF)
local aData := {}

//Si hago asi, el array se llena 聽煤nicamente con los datos de la segunda tabla,
*aData := AClone( Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) )
*aData := AClone( Cheques->( 聽FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) )

//Si lo hago de esta manera, el array se llena 煤nicamente con los datos de la primera tabla,
*aData := AClone( Comprobd->( FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) )
*Cheques->( 聽FW_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 

//Si agrego al programa una copia renombrada de FW_DbfToArray(), 聽y llamo a esta funcion renombrada, el array se llena con los datos de todas las tablas.
Comprobd->( FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) )
Cheques->( 聽FWA_DbfToArray( , {|| field->fechemis<=dFechaF .and. !Deleted() }, , , , , aData ) ) 

XBROWSER aData TITLE "ARRAY DESDE VARIAS DBFs"
return nil


Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Tue Jun 01, 2021 10:50 AM
There is no problem with the function. It is working as expected here.

This is the sample test program.

Code (fw): Select all Collapse
#include "fivewin.ch"

REQUEST DBFCDX

function Main()

   local aData

   USE CUSTOMER NEW SHARED VIA "DBFCDX"
   USE NOMBRES  NEW SHARED VIA "DBFCDX"

   aData := CUSTOMER->( FW_DbfToArray( "ALIAS(),RECNO(),TRIM(FIRST),TRIM(STREET)",    { || RECNO() < 4 } ) )
   aData := NOMBRES-> ( FW_DbfToArray( "ALIAS(),RECNO(),TRIM(NOMBRE),TRIM(DIRECCION)",{ || RECNO() < 4 }, nil, nil, nil, nil, aData ) )

   XBROWSER aData TITLE FWVERSION + " : ARRAY FROM CUSTOMER + NOMBRES" ;
      SETUP ( oBrw:cHeaders := { "ALIAS", "RECNO", "NAME", "ADDRESS" } ) SHOW RECID

return nil




It has to work.
Regards



G. N. Rao.

Hyderabad, India
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Tue Jun 01, 2021 05:05 PM
nageswaragunupudi wrote:There is no problem with the function. It is working as expected here.
It has to work.


Rao.
Gracias por su confirmaci贸n.
Ciertamente, he probado mi funci贸n ejemplo de manera independiente y funciona sin problemas.
No se por qu茅 al integrarla a mi sistema falla, a como ya lo he expuesto.
Voy a hacer mas pruebas, y luego les comunico.

Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: Array desde varias DBFs usando FW_DbfToArray() ?

Posted: Wed Jun 02, 2021 05:44 PM
nageswaragunupudi wrote:
It has to work.


Crist贸bal y Rao:
Muchas gracias por su tiempo. Me disculpo, fu茅 error m铆o.

En el fichero 'MisFunc.prg', que incluyo en cada proyecto, ten铆a la funci贸n FW_DbfToArray() que modifiqu茅 hace muchos a帽os.
En ese entonces esta funci贸n no ten铆a el 煤ltimo par谩metro aData, y por supuesto siempre reemplazaba a la actual original.

Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion