un Campo en un Listbox pero FIELDS

un Campo en un Listbox pero FIELDS

Postby felipe » Thu Dec 08, 2005 8:01 pm

Hola amigos del foro quiero poder poner en FIELD un campo q' cambie por ejemplo:

en una bodega si tengo el FIELD q' detecte o si hay 2 o 3 o nn bodegas
desde ya gracias
felipe
 
Posts: 11
Joined: Thu Dec 08, 2005 7:56 pm

Postby Antonio Linares » Fri Dec 09, 2005 12:45 am

Felipe,

Usa FIELD->bodegas

te refieres a eso ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

La Idea del Listbox es esta

Postby felipe » Fri Dec 09, 2005 2:07 am

Bueno la idea que quiero es la siguiente:

Tengo una Tabla : Bodegas (3Bodegas)
Tabla : Stock
Tabla : Articulos

en el Listbox deberia quedar asi

REDEFINE LISTBOX oLbx FELDS;
(cArticulos)->Detalle,CargaStock((cArticulo)->Codigo,Bodega1),;
CargaStock((cArticulo)->Codigo,Bodega2),;
CargaStock((cArticulo)->Codigo,Bodega3);

Esto si hay 3 no Hay problema pero si hay 20 tendria que poner 20 veces pero la idea no esa, la idea es carga todo en uana variable y que pueda servir para una como para n bodegas

dbGoTop()
DO WHILE !Eof()
//Los N ombres de Bodega
cTitulo :=cTitulo + '"'+Alltrim((cBodega)->Ma_Corta)+'",'

bodega :=(cBodega)->Ma_Codi //capturo el codigo

cCampo :=cCampo + "CargaStock((cArticulo)->Codigo,bodega,"
bodega)," // La Funcion

cSize :=cSize + "50," //aqui le asigno el Size
DBSKIP()
EndDo

oLbx:aheaders := &cTitulo
oLbx:acolsizes := &cSize
Los aheaders y acolsizes funcionan bien pero Field no

REDEFINE LISTBOX oLbx fIELDS cCampo

PERO DE ESTA FORMA me funciona Bien:
cCampo :={ || { (cArticulo)->Detalle,CargaStock((cArticulo)->Codigo,"1 ") } }

REDEFINE LISTBOX oLbx fIELDS ""
oLbx:bLine := (cCampo)
PERO SI TENGO 2 0 3 O NNN BODEGAS
bueno espero que entienda
Saludos
felipe
 
Posts: 11
Joined: Thu Dec 08, 2005 7:56 pm

Postby cmsoft » Fri Dec 09, 2005 11:42 am

Y si cambias esta funcion
cCampo :={ || { (cArticulo)->Detalle,CargaStock((cArticulo)->Codigo) } }

REDEFINE LISTBOX oLbx fIELDS ""
oLbx:bLine := (cCampo)

y en la funcion CargaStock(nCodArt) le haces que recorra toda la base en busca de las N bodegas y te devuelva una cadena con el texto de todas las existencias en la bodegas??
Espero te sirva...
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

PERO QUE MUESTRE EL STOCK POR BODEGA

Postby felipe » Fri Dec 09, 2005 6:02 pm

Bueno lo quero es que me muestre el Stock por bodega como este ejemplo:


Detalle Bodega 1 Bodega 2 Bodega 3 Bodega 4 nnnnnn Bodegas
felipe
 
Posts: 11
Joined: Thu Dec 08, 2005 7:56 pm

Postby DanielPuente » Sun Dec 11, 2005 5:02 am

Felipe:

Usa vectores para la definicion del browse:

Local VEC_FIELD1 := { {|| ART->COD} ,;
{ || ART->CLAVE } ,;
VEC_ENC1 := { OEMTOANSI("C¢d."),;
" Clave",;
VEC_SIZE1 := {70,109,226,77,77,64,109,73,40,110,52,52,52,90,90},;
VEC_JUSTIF := {2,2,0,2,2,2,0,0,0,0,0,2,2,0,0},;

Solo que en tu caso haces las evaluaciones necesarias y vas añadiendo posiciones a los vectores segun las bodegas que necesites, y despues en la definicion del browse usas esos vectores:

REDEFINE LISTBOX oBrw fields ID 999 OF oDlg ;

oBrw:SetCols( vec_field1, vec_enc1, vec_size1 )
oBrw:aJustify :=vec_justif

Saludos,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
DanielPuente
 
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina

Postby MarioG » Tue Dec 13, 2005 12:26 pm

Me uno al hilo para exponer mi caso. El que Daniel hace un tiempo me orientó y, en su propuesta me sugería la siguiente alternativa (tambien intento generar un browse de campos dinámicos):

Code: Select all  Expand view  RUN
   DO CASE
   CASE oPJA:nLenAlter == 2
      aO[_LstAlt]:bLine:= {|nAt| nAt:= aO[_LstAlt]:nAt, ;
                                 { oPJA:aAlternativas[nAt,1], ;
                                   Trans( oPJA:aAlternativas[nAt,2], PIC_SEIS ), ;
                                   Trans( oPJA:aAlternativas[nAt,3], PIC_SEIS )  ;
                                   } }

   CASE oPJA:nLenAlter == 3
      aO[_LstAlt]:bLine:= {|nAt| nAt:= aO[_LstAlt]:nAt, ;
                                 { oPJA:aAlternativas[nAt,1], ;
                                   Trans( oPJA:aAlternativas[nAt,2], PIC_SEIS ), ;
                                   Trans( oPJA:aAlternativas[nAt,3], PIC_SEIS ), ;
                                   Trans( oPJA:aAlternativas[nAt,2], PIC_SEIS )  ;
                                   } }


Esto funciona correctamente, aunque, leyendo la propuesa de cmsfot, me percato que me ahorraría mucho código a la par de que puedo elever el límite superior de campos. Por lo que lo implementé así:

Code: Select all  Expand view  RUN
   for each arr in oPJA:aAlternativas
       if HB_EnumIndex()==1
          cBLine:= "{|nAt| nAt:= aO[_LstAlt]:nAt, { oPJA:aAlternativas[nAt,1], "
       else
          cBLine+= "Trans( oPJA:aAlternativas[nAt,2], PIC_SEIS ), "
       end
   next
?   cBLine:= Left( cBLine, Len( cBLine ) -2) +" } }"

   aO[_LstAlt]:bLine:= ( cBLine )
   aO[_LstAlt]:SetArray( oPJA:aAlternativas )


Ahora bien, al ejecutar la app me arroja el siguiente error:

Application
===========
Path and name: D:\FUEN32\PRU32\MGPJA.EXE (32 bits)
Size: 1,362,944 bytes
Time from start: 0 hours 2 mins 37 secs
Error occurred at: 13/12/2005, 09:05:40
Error description: Error BASE/1005 Class: 'CHARACTER' has no property: _EVAL
Args:

Stack Calls
===========
Called from __EVAL(0)
Called from WBRWPANE(0)
Called from TWBROWSE:PAINT(1103)
Called from TWBROWSE:DISPLAY(2892)
Called from TWBROWSE:HANDLEEVENT(0)
Called from _FWH(0)
Called from WINRUN(0)
Called from TMDIFRAME:ACTIVATE(0)
Called from MAIN(46)

Que es lo que no puede resolver?, cual es el problema?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Postby felipe » Wed Dec 14, 2005 1:08 am

Antonio gracias por ayudarme, mira el LIstbox lo tengo asi:

REDEFINE LISTBOX oLbx fIELDS GenColumns(); ID 102 OF oDlg;

oLbx:aheaders := {"Descripcion","Stock"}
oLbx:acolsizes := {400,100}

STATIC function GenColumns()

local bLine:=""


bLine:={ || { (cExi_Suc)->Ma_Des1,cExi_Suc)->Bod_001i } }

return(bLine)

Lo tengo asi y igual no me muestra nada pero igual como te desia me puedo mover para arriba y abajo


desde ya gracias
felipe
 
Posts: 11
Joined: Thu Dec 08, 2005 7:56 pm

Postby DanielPuente » Wed Dec 14, 2005 1:30 am

Felipe:

Enviame el pedazo de codigo en un prg que yo pueda compilar y probar aca con las dbf involucradas a danielpuente@speedy.com.ar y te lo miro. Despues publicamos aca la solucion definitiva si queres.

Saludos,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
DanielPuente
 
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 3 guests