Page 1 of 1

DBSETRELATION en xHarbour

Posted: Thu Oct 13, 2005 3:31 pm
by Guest
Hola amigos:

Pasando mis programas de 16 a 32 bytes, me da un problema con _ relacionados.
Os envio un fracmento de lo que quiero hacer, en FW24 + Clipper 5.3, funcion perfectamente, pero en FW+xHarbour 0.92.0, no me encuentra los datos de la tabla relacionada.

/* Asi se crearon los indices
INDEX ON CODART+CODALM TAG STK1 FOR EMPTY(LOTE) .AND. !DELETED()
INDEX ON CODALM+CODART+LOTE TAG STK2 FOR !EMPTY(LOTE) .AND. !DELETED()
*/

// Abro los archivos
dLot:=AbreDbf("LOTE","Lote")
dStk:=AbreDbf("STOCK","Stock")

// Selecciono el indice activo
(dStk)->(OrdSetFocus(2)) // Almacen + Articulo + Lote

// Creo la relacion
DBSETRELATION(dLot,{||(dStk)->CodArt+(dStk)->Lote},dStk+ ;
"->CodArt"+dStk+"->Lote")
(dStk)->(DBGOTOP())

// Pruebo a ver los resultados, pero no me localiza, ni el lote, ni la fecha
?(dLot)->Lote,(dLot)->Fecha,(dLot)->(RECNO())

Gracias de antemano por vuestra ayuda.

Un saludo
Alfonso Larrinaga
bsinformatica@euskalnet.net

Posted: Fri Oct 14, 2005 10:23 am
by Antonio Linares
Alfonso,

Consigue una versión más actualizada de xHarbour.

Re: DBSETRELATION en xHarbour

Posted: Fri Oct 14, 2005 11:02 am
by Carlos Mora
Alfonso,
Anonymous wrote:
// Creo la relacion
DBSETRELATION(dLot,{||(dStk)->CodArt+(dStk)->Lote},dStk+ ;
"->CodArt"+dStk+"->Lote")
(dStk)->(DBGOTOP())

// Pruebo a ver los resultados, pero no me localiza, ni el lote, ni la fecha
?(dLot)->Lote,(dLot)->Fecha,(dLot)->(RECNO())
Fíjate si agregando el '+' te corrige el problema

DBSETRELATION(dLot,{||(dStk)->CodArt+(dStk)->Lote},dStk+ ;
"->CodArt+"+dStk+"->Lote")
(dStk)->(DBGOTOP())

Otra cosa: Para evitar eventuales problemas con las variables, como codeblock de la relacion usa:
cRelation:= dStk+"->CodArt+"+dStk+"->Lote"
bRelation:= &( "{||" + cFiltro + "}" )
dBSetRelation( Select( dLot ), bRealtion, cRelation )


En tu programa actual, que te devuelve dbrselect()?

Saludos[/b]

Re: DBSETRELATION en xHarbour

Posted: Mon Oct 17, 2005 2:08 pm
by Alfonso Larrinaga
Efectivamente faltaba el simbolo +
Ahora funciona perfectamente, muchas gracias.

Un saludo.
Alfonso Larrinaga
bsinformatica@euskalnet.net