Power Builder - ayuda con 2 simples preguntas

 
Vista:

ayuda con 2 simples preguntas

Publicado por mizalo (113 intervenciones) el 07/07/2010 21:24:00
como estan todos!!!

las preguntas son las siguientes:

1.- Estoy usando pb 10 y mysql , tengo una tabla meses y necesito saber cuantas asistencias tiene una persona, para eso realizo un select de estas manera

select count(*) from meses where registro=:n_reg and month(fecha)=5 and tipo_asis='A';

me sale un error en la funcion count o cuando pongo en el campo month(fecha), acaso no se puede poner una funcion en la cadena?,

2.- la misma tabla tiene nombres de campos de la siguiente manera:

registro,fecha,tipo_asis,d01,d02,d03,d04,d05,......... d31

estoy usando un cursor para recuperar los dias de asistencia del empleado.
una vez recuperado , necesito poner la letra A en el dia correspondiente de acuerdo al day del campo fecha, ejemplo

registro dia
0010 15
0010 17
0010 18

Estos los los datos de un empleado, entonces en la tabla meses debo de poner la letra A en el campo d15, en el campo d17 y el d18

entonces necesito armar ese d15 ,d17,d18.

He realizado un bucle con la data, y armado de esta manera el campo

campo="d"+:fechdia

y luego uso el update

update meses set campo=:dia where

pero sale un error, me indica que el campo llamado campo no existe

que puedo hacer?

gracias por la ayuda q puedan darme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:ayuda con 2 simples preguntas

Publicado por JeinnerH (646 intervenciones) el 07/07/2010 21:43:41
Bueno, pueden ser varias cosas, como que el campo fecha no es de tipo Datetime en la base de datos.

En el segundo Update:
update meses set campo=:dia where

Cuál es el nombre del campo que estás actualizando en la base de datos? Se llama "campo"?
Update meses set NOMBRE_CAMPO=:dia

Me parece que el Update debiera de ser:
Update meses Set dia=:Campo

Recuerda que este nuevo Campo que estás remplazando por la variable :dia, debe ser tipo String.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

re pregunta

Publicado por mizalo (113 intervenciones) el 08/07/2010 16:52:47
el problema es el siguiente:

mi bases de datos llamada meses, tiene como nmbres de campos:

d01,d02,d03,...... hasta el d31

necesito armar el campo donde actualizar, por ejemplo

si mi data tiene el nro 15 entonces mi campo donde actualizar sera d15, si es 18 sera d18

entonces necesito armar el campo

como explique, lo estoy armando asi:

stgring n_campo
n_campo="D"+:dia

la variable dia es el nro q obtengo de mi data, como veras la variable n_campo tendra la letra d mas el nro del dia

por lo tanto yo suponia que armando el campo asi podia ejecutar el update
osea

ejemplo
n_campo="D"+:dia --------------> n_campo=d15

update meses set n_campo="A" where ........

osea pense q cuando se ejecutaba se armaria asi..

update meses set d15="A"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:re pregunta

Publicado por JeinnerH (646 intervenciones) el 08/07/2010 18:19:39
No, eso no te va a funcionar así.

Tendrías que construir el Update en una hilera y ejecutarlo de forma dinámica, utilizando algo como esto:

String Mysql

Mysql='Update meses set D'+String(dia)+"='A'"
EXECUTE IMMEDIATE :Mysql ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar