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
un Campo en un Listbox pero FIELDS
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
La Idea del Listbox es esta
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
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
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...
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...
PERO QUE MUESTRE EL STOCK POR BODEGA
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
Detalle Bodega 1 Bodega 2 Bodega 3 Bodega 4 nnnnnn Bodegas
-
- Posts: 108
- Joined: Sun Oct 09, 2005 6:12 pm
- Location: Mar del Plata - Argentina
- Contact:
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,
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,
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):
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í:
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?
Code: Select all
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 ) ;
} }
Code: Select all
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 )
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
Chaco - Argentina
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
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
-
- Posts: 108
- Joined: Sun Oct 09, 2005 6:12 pm
- Location: Mar del Plata - Argentina
- Contact:
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,
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,