Visual Basic para Aplicaciones - Utilizar resultado de consulta

Life is soft - evento anual de software empresarial
 
Vista:

Utilizar resultado de consulta

Publicado por alex (5 intervenciones) el 18/11/2004 15:46:57
Hago pequeñas cosas en acces con visual y tengo un problema que no consigo resolver.
En un formulario utilizo un campo de texto para poner el resultado de una consulta. Cuando desde visual intento utilizar este resultado para hacer un calculo no consigo que coja el valor. Solo consigo que coja el valor si con el cursor me voy al cuadro de texto y me pongo encima.
¿Como puedo hacer que tenga el resultado de esa consulta para hacer un calculo sin tener que poner el cursor sobre el cuadro de texto?
Muchas gracias.
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

RE:Utilizar resultado de consulta

Publicado por fernando (10 intervenciones) el 25/11/2004 22:29:29
Si abrís la consulta con un objeto recordset, podés acceder al valor. Por ejemplo:

dim resultado as string
dim rs as recordset
set rs = database.openrecordset(consulta)

luego hacés:
rs.movefirst
resultado = rs("campo")

si devuelve un integer (si fue un "sum()" resultado lo declarás de tipo integer)

antes del movefirst preguntás si tenés algun registro activo:
if rs.recordcount > 0 then
rs.movefirst

tambien podés preguntar (mejor dicho, DEBES) si el valor es null antes de asignarlo:

if not isnull(rs("campo")) then
resultado = ...

espero q te sirva,
saludos
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:Utilizar resultado de consulta

Publicado por Christian (2 intervenciones) el 26/11/2004 22:26:29
En visual basic para access para tomar el valor de un campo de texto (u otro campo) se debe usar "text1.value" en lugar de "text1.text" como se haria en visual basic normalmente.
Saludos
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:Utilizar resultado de consulta

Publicado por alex (5 intervenciones) el 08/12/2004 18:11:47
Gracias por la idea ya que creo que la solucion con recordset es la mas acertada. El problema lo tengo en que la consulta con SQL es muy larga y compleja y no la puedo poner en el parentesis y cuando pongo el nombe de la consulta hecha en acces no lo acepta. ¿Se puede hacer de otra forma?
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:Utilizar resultado de consulta

Publicado por fernando (10 intervenciones) el 09/12/2004 01:11:14
Cómo q la consulta es muy larga y no la podés poner en el parentesis?
me podrias explicar mejor?
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:Utilizar resultado de consulta

Publicado por alex (5 intervenciones) el 13/12/2004 00:28:57
Si no entendi mal en el parentesis donde pone consulta se ha de escribir esta en SQL.
Yo no domino SQL pero lo que hago es copiar la definicion que me da el asistente de consultas. en este caso la consulta en SQL es:
SELECT Count(tbldades.CIP) AS CuentaDeCIP, tbldades.Grup, tbldades.Dia
FROM tblgrups INNER JOIN tbldades ON tblgrups.grup=tbldades.Grup
GROUP BY tbldades.Grup, tbldades.Dia
HAVING (((tbldades.Grup)=Formularios!frmadjudicar!grup) And ((tbldades.Dia)=Formularios!frmadjudicar!dia1));

Toda esta consulta si la pongo en el parentesis me da un error cuando sigo en el codigo que me dice "error de compilacion, se esperaba:expresion"

Creo que es un error de novato.

Gracias

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:Utilizar resultado de consulta

Publicado por fernando (10 intervenciones) el 13/12/2004 15:52:16
Si, de novato, pero haciendo se aprende...

mirá, podés hacer esto:

dim s as string
s = "SELECT Count(tbldades.CIP) AS CuentaDeCIP, tbldades.Grup, tbldades.Dia
FROM tblgrups INNER JOIN tbldades ON tblgrups.grup=tbldades.Grup
GROUP BY tbldades.Grup, tbldades.Dia
HAVING (((tbldades.Grup)=Formularios!frmadjudicar!grup) And ((tbldades.Dia)=Formularios!frmadjudicar!dia1))"

escribiendo todo el string en un solo renglon, o mejor podés hacer esto:

s = ""SELECT Count(tbldades.CIP) AS CuentaDeCIP, tbldades.Grup,"
s = s + "tbldades.Dia "
s = s + ...

etc y ahi en s te queda la SQL.

Y finalmente, cuando una linea de codigo es muy larga, al final del renglon le podés poner el caracter guion bajo "_"
y seguir la instrucción abajo:

lineadecodio.muylaraga _
sigue abajo pero es la misma linea

entonces en tu caso seria:

bd.Execute ("select * " + _
"from caja")

(con tooodo tu string)

espero q te sirva, si no decime, y hacemos alguna otra cosa

saludos y suerte
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:Utilizar resultado de consulta

Publicado por alex (5 intervenciones) el 29/12/2004 23:37:30
Disculpa por el tiempo que he tardado...

La explicacion perfecta. Ahora el error que me da es que como en la consulta hay dos variables que las obtiene del formulario me da el errer de que no las encuentra.

Al final he solucionado el problema creando la consulta como una consulta que genera una tabla y saco el resultado de esta tabla y asi no me da el problema.

Muchas gracias y feliz año nuevo


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