Excel vba -Resultado de una consulta en un msgbox

Tengo el select siguiente

cadena = "select * from tgtrackercontabacum where ano=" & CInt(Txtano.Value) & " And mes between " & Txtmesdesde.Text & " And " & Txtmeshasta.Text

Lo que quiero hacer es que muestre un msgbox con el total de registros seleccionados y si la consulta no devuelve ningún registro que me de otro msgbox indicando que no no hay registros para esa selección

He intentado esto:

totalregistros = "select count(*) as registros  from tgtrackercontabacum where ano=" & CInt(Txtano.Value) & " And mes between " & Txtmesdesde.Text & " And " & Txtmeshasta.Text

Pero no acierto a mostrar el resultado en un msgbox.

1

1 Respuesta

16.315 pts. Programador Orientado a Objetos

¿La variable total registros esa consulta que esta allí funciona? de ser asi

1) Declara un if para saber si total resultado es mayor a 0 eso significa que hay registros

2) Al saber si hay registros sacas por pantalla el valor que tiene total registros algo como msgbox total registros

Quedando algo así

totalregistros = "select count(*) as registros  from tgtrackercontabacum where ano=" & CInt(Txtano.Value) & " And mes between " & Txtmesdesde.Text & " And " & Txtmeshasta.Text

if totalregistros>0 then

  MsgBox totalregistros

else

    MsgBox "No hay registros"

end if

Espero haberme dado a entender y sea lo que necesitas...

Gracias por la respuesta, pero me encuentro que no me da el número de registros ni el mensaje de que no los hay, lo que me aparece es esto:

El msg box esta funcionando, pero el problema es que el totalregistros la consulta esta mal echa, ya que no esta contando los registros... poco he trabajado con consultas de este tipo... asi que deberas chequearla... Sorry... si puedo ayudarte con algo mas seguire comentando...

Gracias de nuevo, el caso es que necesito saber si hay datos en la selección,  puesto que en 16  hojas restantes realizo cálculos sobre los mismos.

Espero que alguien me pueda ayudar.

¿Pero cadena devuelve algún valor? ¿Cómo obtienes los valores de cadena? Quizás allí esta tu solución si lo que devuelve o consigue cadena <>"" entonces hay datos en tu consulta...

Te explico:

Tengo un formulario con 3 textbox: Txtano Txtmesdesde Txtmeshasta

Dentro de cadena realizo un select contra una tabla de la base de datos, donde Txtano es el campo Ano, Txtmesdesde es el campo mes y Txtmeshasta  es el campo mes de la tabla.

Al realizar la consulta le estoy diciendo que me importe los registros de esa tabla de un Año y desde mes hasta otro mes. Ejemplo:

Año 2013  Desde Mes 5 Hasta Mes 6

Lo que pretendo es que si no encuentra registros con esas condiciones me de el mensaje de que no hay registros para esa selección, pero no se como representarlo en un msgbox.

Se supone que debería hacer un select count(*) de esa tabla y con esas condiciones para que me devolviese el número de registros que ha encontrado

Entonces la pregunta es la siguiente:

¿Cómo debo hacer para representar en un Msgbox que ha encontrado X registros o bien que no ha encontrado ninguno con esos criterios de selección?

La respuesta que me has dado anteriormente no muestra lo que te he comentado en el mensaje anterior.

Te lo pregunto de otra forma.

Cómo saber si cadena ha encontrado algún registro en la tabla o bien no ha encontrado registros con esa selección a través de un msgbox?

Entiendo bien los criterios que planteas amigo y que es lo que necesitas, pero para eso necesitas saber como devuelve los valores de tu consulta, es decir cuando pasas cadena con esa instrucción sql cadena devuelve a ti una respuesta... busca como la devuelve y allí podrás saber si hay datos con los requerimientos de tu consulta.
Por ejemplo en java había algo que se llamaba resultset, era un objeto que almacenaba los resultados de mi consulta, yo preguntaba a través de un if si el resulset tenia datos, eso significaba que efectivamente existían datos con mis parámetros. Si el resultset resultaba nulo no existía nada, tu usas bases de datos y estas ejecutando consultas, así que debe haber algo parecido al resulset en este caso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas