Buena, aqui molestando nuevamente.
Resulta que quiero crear tantos campos calculados como cantidad de Articulos
tenga un código determinado, o sea si la cantidad del codigo 10002 es igual
a 2, k me crees dos campos calculados, series1 y series 2, asi sucesivamente.
Lo que hago es lo siguiente.
METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
Local aValues, nLen, i //{ "Normal", "Exento", "Recargo" }
LOCAL aSeries := Array(::oFEquipos:Cantidad)
LOCAL oField, xv
nLen := Len(aSeries)
WITH OBJECT ::oFEquipos
IF nLen#0
For i := 1 To nLen
aSeries := "Series"+alltrim(Str(i))
oField := :AddCalcField((aSeries), {|o|"00"+ALLTRIM(STR(i-1))}
)
xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))
(xV) := "00"+ALLTRIM(STR(i))
NEXT
Endif
END WITH
RETURN Nil
De esta manera puedo ver k el resultado de ambas series es el mismo, que
estare haciendo mal, tendrian alguna idea mejor.
GRacias de antemanos
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Campos Calculados
-
- Mensajes: 13
- Registrado: Jue Feb 16, 2006 12:41 am
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Campos Calculados
Carlos,
Ni se te ocurra
Es una autentica barbaridad sin ánimo de ofender.
Viendo tu código no soy capaz de ver lo que quieres hacer, explicate mejor
por favor.
Un saludo,
"Carlos Cedeño" <carlosijc@icqmail.com> escribió en el mensaje
news:4425ddd0$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Buena, aqui molestando nuevamente.
> Resulta que quiero crear tantos campos calculados como cantidad de
> Articulos
> tenga un código determinado, o sea si la cantidad del codigo 10002 es
> igual
> a 2, k me crees dos campos calculados, series1 y series 2, asi
> sucesivamente.
> Lo que hago es lo siguiente.
>
> METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
> Local aValues, nLen, i //{ "Normal", "Exento", "Recargo" }
> LOCAL aSeries := Array(::oFEquipos:Cantidad)
> LOCAL oField, xv
> nLen := Len(aSeries)
> WITH OBJECT ::oFEquipos
> IF nLen#0
> For i := 1 To nLen
> aSeries := "Series"+alltrim(Str(i))
> oField := :AddCalcField((aSeries),
> {|o|"00"+ALLTRIM(STR(i-1))}
> )
> xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))
> (xV) := "00"+ALLTRIM(STR(i))
> NEXT
> Endif
> END WITH
> RETURN Nil
> De esta manera puedo ver k el resultado de ambas series es el mismo, que
> estare haciendo mal, tendrian alguna idea mejor.
>
> GRacias de antemanos
Ni se te ocurra

Viendo tu código no soy capaz de ver lo que quieres hacer, explicate mejor
por favor.
Un saludo,
"Carlos Cedeño" <carlosijc@icqmail.com> escribió en el mensaje
news:4425ddd0$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Buena, aqui molestando nuevamente.
> Resulta que quiero crear tantos campos calculados como cantidad de
> Articulos
> tenga un código determinado, o sea si la cantidad del codigo 10002 es
> igual
> a 2, k me crees dos campos calculados, series1 y series 2, asi
> sucesivamente.
> Lo que hago es lo siguiente.
>
> METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
> Local aValues, nLen, i //{ "Normal", "Exento", "Recargo" }
> LOCAL aSeries := Array(::oFEquipos:Cantidad)
> LOCAL oField, xv
> nLen := Len(aSeries)
> WITH OBJECT ::oFEquipos
> IF nLen#0
> For i := 1 To nLen
> aSeries := "Series"+alltrim(Str(i))
> oField := :AddCalcField((aSeries),
> {|o|"00"+ALLTRIM(STR(i-1))}
> )
> xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))
> (xV) := "00"+ALLTRIM(STR(i))
> NEXT
> Endif
> END WITH
> RETURN Nil
> De esta manera puedo ver k el resultado de ambas series es el mismo, que
> estare haciendo mal, tendrian alguna idea mejor.
>
> GRacias de antemanos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Campos Calculados
Que gran pena
Dejame ver si esta explicacion es mejor
Resulta que tengo una tabla maestra de artículo donde mi clave primeria es
la del IDArtiuclo, ahora bien, resulta que la empresa me ha solilcitado k
tenga como llave maestra el No. de la serie, eso implicaria un incremento
enorme de las cantidades de articulos en la base y ademas muy o demasiada
tediosa la entrada de este tipo de dato a la base cuando de un mismo alrtículo
se trata, mi idea fue la siguiente:
Cuando el cantidad o el campo cantidad de articulo perteneciente a un mismo
código sea mayor k 1, pues dentro de una carpeta llamada serie creo una tabla
on el numero de serie ej. "S00101223", con los campos idserie y DescSerie,
para de esta manera con los campos calculados k se me crean en la tabla maestra
despues de un OnPostOpen() poder asociarlo con dicha tabla.
Suponiendo que tengo un codigo en la tabla producto, donde:
Codigo sea igual a 01010101 y la cantidad sea 3:
Pues k me creen en la tabla producto3 campos calculados, serie1, serie2,
y serie3, con los valores "001", "002" y "003" y luego ya me queda en otra
entapa del sistema en la tabla "S01010101" la posibilidad para dar entrada
a las series correspondientes a estos codigos de manera que se pueda mantener
una asociacion entre dichas tablas, ahora bien, los campos calculados me
los creas, pero solo lo hace para el primer artículo, y además en los 3 Cámpos
serie1, serie2 y serie3 lo que me almacena es el ultimo valor del FOR.
Quisiera k por favor, si alguien tiene una idea mejor o algo que tenga que
ver con el tratamiento de las series, pues le estare muy agradecido.
Y repito, lo que hago es esto:
METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
Local nLen, i
LOCAL aSeries := Array(::oFEquipos:Cantidad)
LOCAL oField, xv
nLen := Len(aSeries)
WITH OBJECT ::oFEquipos
IF nLen#0
For i := 1 To nLen
aSeries := "Series"+alltrim(Str(i)) //Aqui almaceno las cantidades
de series a crear
oField := :AddCalcField((aSeries), {|o|00"+ALLTRIM(STR(i-1))} )
Aqui deposito el Valor en las series, 001,002,003 y asi segun cantidades
xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))// Aqui trato de
poner :Serie1, :Serie2, :Serie3
(xV) := "00"+ALLTRIM(STR(i))y // y aqui de ver si fuerzo el Valor
que quiero dentro de estos tres campos
NEXT
Endif
END WITH
RETURN Nil
De esta manera puedo ver k el resultado de ambas series es el mismo, que
estare haciendo mal, tendrian alguna idea mejor.
GRacias de antemanos
Dejame ver si esta explicacion es mejor
Resulta que tengo una tabla maestra de artículo donde mi clave primeria es
la del IDArtiuclo, ahora bien, resulta que la empresa me ha solilcitado k
tenga como llave maestra el No. de la serie, eso implicaria un incremento
enorme de las cantidades de articulos en la base y ademas muy o demasiada
tediosa la entrada de este tipo de dato a la base cuando de un mismo alrtículo
se trata, mi idea fue la siguiente:
Cuando el cantidad o el campo cantidad de articulo perteneciente a un mismo
código sea mayor k 1, pues dentro de una carpeta llamada serie creo una tabla
on el numero de serie ej. "S00101223", con los campos idserie y DescSerie,
para de esta manera con los campos calculados k se me crean en la tabla maestra
despues de un OnPostOpen() poder asociarlo con dicha tabla.
Suponiendo que tengo un codigo en la tabla producto, donde:
Codigo sea igual a 01010101 y la cantidad sea 3:
Pues k me creen en la tabla producto3 campos calculados, serie1, serie2,
y serie3, con los valores "001", "002" y "003" y luego ya me queda en otra
entapa del sistema en la tabla "S01010101" la posibilidad para dar entrada
a las series correspondientes a estos codigos de manera que se pueda mantener
una asociacion entre dichas tablas, ahora bien, los campos calculados me
los creas, pero solo lo hace para el primer artículo, y además en los 3 Cámpos
serie1, serie2 y serie3 lo que me almacena es el ultimo valor del FOR.
Quisiera k por favor, si alguien tiene una idea mejor o algo que tenga que
ver con el tratamiento de las series, pues le estare muy agradecido.
Y repito, lo que hago es esto:
METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
Local nLen, i
LOCAL aSeries := Array(::oFEquipos:Cantidad)
LOCAL oField, xv
nLen := Len(aSeries)
WITH OBJECT ::oFEquipos
IF nLen#0
For i := 1 To nLen
aSeries := "Series"+alltrim(Str(i)) //Aqui almaceno las cantidades
de series a crear
oField := :AddCalcField((aSeries), {|o|00"+ALLTRIM(STR(i-1))} )
Aqui deposito el Valor en las series, 001,002,003 y asi segun cantidades
xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))// Aqui trato de
poner :Serie1, :Serie2, :Serie3
(xV) := "00"+ALLTRIM(STR(i))y // y aqui de ver si fuerzo el Valor
que quiero dentro de estos tres campos
NEXT
Endif
END WITH
RETURN Nil
De esta manera puedo ver k el resultado de ambas series es el mismo, que
estare haciendo mal, tendrian alguna idea mejor.
GRacias de antemanos
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Campos Calculados
por que no pones una imagen de lo que usas, podria ser util para alguien, yo
ya resolvi mi problema.
ya resolvi mi problema.
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Campos Calculados
Carlos,
En mi opinión lo que falla es el diseño. Deberías de tener una tabla con tan
sólo dos campos ARTICULOID, y SERIEID. Dicha tabla estaría indexada por
ARTICULOID+SERIEID, y lo más importante, dicha tabla sería la TABLA
PRINCIPAL DE NAVEGACIÓN, y relacionaría la tabla artículos con esa tabla, de
esta forma tu browse sería algo así:
ArtSerie->ArticuloID
ArtSerie->SerieID
Articulos->Nombre
Logicamente esta tabla se alimentaría de forma automática cuando el usuario
indicase cantidad de unidades que tiene de cada artículo.
Saludos,
"Carlos Cedeño" <carlosijc@gmail.com> escribió en el mensaje
news:44287ae1$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Que gran pena
>
> Dejame ver si esta explicacion es mejor
>
> Resulta que tengo una tabla maestra de artículo donde mi clave primeria es
> la del IDArtiuclo, ahora bien, resulta que la empresa me ha solilcitado k
> tenga como llave maestra el No. de la serie, eso implicaria un incremento
> enorme de las cantidades de articulos en la base y ademas muy o demasiada
> tediosa la entrada de este tipo de dato a la base cuando de un mismo
> alrtículo
> se trata, mi idea fue la siguiente:
>
> Cuando el cantidad o el campo cantidad de articulo perteneciente a un
> mismo
> código sea mayor k 1, pues dentro de una carpeta llamada serie creo una
> tabla
> on el numero de serie ej. "S00101223", con los campos idserie y DescSerie,
> para de esta manera con los campos calculados k se me crean en la tabla
> maestra
> despues de un OnPostOpen() poder asociarlo con dicha tabla.
>
> Suponiendo que tengo un codigo en la tabla producto, donde:
> Codigo sea igual a 01010101 y la cantidad sea 3:
>
> Pues k me creen en la tabla producto3 campos calculados, serie1, serie2,
> y serie3, con los valores "001", "002" y "003" y luego ya me queda en otra
> entapa del sistema en la tabla "S01010101" la posibilidad para dar entrada
> a las series correspondientes a estos codigos de manera que se pueda
> mantener
> una asociacion entre dichas tablas, ahora bien, los campos calculados me
> los creas, pero solo lo hace para el primer artículo, y además en los 3
> Cámpos
> serie1, serie2 y serie3 lo que me almacena es el ultimo valor del FOR.
>
> Quisiera k por favor, si alguien tiene una idea mejor o algo que tenga que
> ver con el tratamiento de las series, pues le estare muy agradecido.
>
> Y repito, lo que hago es esto:
>
> METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
> Local nLen, i
> LOCAL aSeries := Array(::oFEquipos:Cantidad)
> LOCAL oField, xv
> nLen := Len(aSeries)
> WITH OBJECT ::oFEquipos
> IF nLen#0
> For i := 1 To nLen
> aSeries := "Series"+alltrim(Str(i)) //Aqui almaceno las
> cantidades
> de series a crear
> oField := :AddCalcField((aSeries), {|o|00"+ALLTRIM(STR(i-1))} )
> Aqui deposito el Valor en las series, 001,002,003 y asi segun cantidades
> xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))// Aqui trato de
> poner :Serie1, :Serie2, :Serie3
> (xV) := "00"+ALLTRIM(STR(i))y // y aqui de ver si fuerzo el
> Valor
> que quiero dentro de estos tres campos
> NEXT
> Endif
> END WITH
> RETURN Nil
>
> De esta manera puedo ver k el resultado de ambas series es el mismo, que
> estare haciendo mal, tendrian alguna idea mejor.
>
> GRacias de antemanos
>
>
>
En mi opinión lo que falla es el diseño. Deberías de tener una tabla con tan
sólo dos campos ARTICULOID, y SERIEID. Dicha tabla estaría indexada por
ARTICULOID+SERIEID, y lo más importante, dicha tabla sería la TABLA
PRINCIPAL DE NAVEGACIÓN, y relacionaría la tabla artículos con esa tabla, de
esta forma tu browse sería algo así:
ArtSerie->ArticuloID
ArtSerie->SerieID
Articulos->Nombre
Logicamente esta tabla se alimentaría de forma automática cuando el usuario
indicase cantidad de unidades que tiene de cada artículo.
Saludos,
"Carlos Cedeño" <carlosijc@gmail.com> escribió en el mensaje
news:44287ae1$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Que gran pena
>
> Dejame ver si esta explicacion es mejor
>
> Resulta que tengo una tabla maestra de artículo donde mi clave primeria es
> la del IDArtiuclo, ahora bien, resulta que la empresa me ha solilcitado k
> tenga como llave maestra el No. de la serie, eso implicaria un incremento
> enorme de las cantidades de articulos en la base y ademas muy o demasiada
> tediosa la entrada de este tipo de dato a la base cuando de un mismo
> alrtículo
> se trata, mi idea fue la siguiente:
>
> Cuando el cantidad o el campo cantidad de articulo perteneciente a un
> mismo
> código sea mayor k 1, pues dentro de una carpeta llamada serie creo una
> tabla
> on el numero de serie ej. "S00101223", con los campos idserie y DescSerie,
> para de esta manera con los campos calculados k se me crean en la tabla
> maestra
> despues de un OnPostOpen() poder asociarlo con dicha tabla.
>
> Suponiendo que tengo un codigo en la tabla producto, donde:
> Codigo sea igual a 01010101 y la cantidad sea 3:
>
> Pues k me creen en la tabla producto3 campos calculados, serie1, serie2,
> y serie3, con los valores "001", "002" y "003" y luego ya me queda en otra
> entapa del sistema en la tabla "S01010101" la posibilidad para dar entrada
> a las series correspondientes a estos codigos de manera que se pueda
> mantener
> una asociacion entre dichas tablas, ahora bien, los campos calculados me
> los creas, pero solo lo hace para el primer artículo, y además en los 3
> Cámpos
> serie1, serie2 y serie3 lo que me almacena es el ultimo valor del FOR.
>
> Quisiera k por favor, si alguien tiene una idea mejor o algo que tenga que
> ver con el tratamiento de las series, pues le estare muy agradecido.
>
> Y repito, lo que hago es esto:
>
> METHOD FEquiposPostOpen( oSender ) CLASS TInventarios
> Local nLen, i
> LOCAL aSeries := Array(::oFEquipos:Cantidad)
> LOCAL oField, xv
> nLen := Len(aSeries)
> WITH OBJECT ::oFEquipos
> IF nLen#0
> For i := 1 To nLen
> aSeries := "Series"+alltrim(Str(i)) //Aqui almaceno las
> cantidades
> de series a crear
> oField := :AddCalcField((aSeries), {|o|00"+ALLTRIM(STR(i-1))} )
> Aqui deposito el Valor en las series, 001,002,003 y asi segun cantidades
> xV := Eval( {|S1,S2| S1+S2 },":",(aSeries))// Aqui trato de
> poner :Serie1, :Serie2, :Serie3
> (xV) := "00"+ALLTRIM(STR(i))y // y aqui de ver si fuerzo el
> Valor
> que quiero dentro de estos tres campos
> NEXT
> Endif
> END WITH
> RETURN Nil
>
> De esta manera puedo ver k el resultado de ambas series es el mismo, que
> estare haciendo mal, tendrian alguna idea mejor.
>
> GRacias de antemanos
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com