Programación visual studio 2008 O 2010

Soy nuevo programando con visual studio 2010 o 2008 quiero realizar una consulta sql con una base de datos acces y que me devuelva una respuesta
        dim conexion as oledbconnection
        dim sql_Adaptador As oledbdataadapter
        dim dataset1 as dataSet
        dim comando as oledbcommand
        dim cnn as new oledb.oledbconnection
        dim value as string = ""
        dim result As boolean
        result = false
        dim connstring as string = "provider=microsoft.ace.oledb.12.0;" & _
                                    "data Source=" + datadir + ";"
        conexion = openconnection(connString, 2)
        comando = new oledbCommand
        with comando
            .connection = conexion           
            .commandText = "select count (*) as contador from usuario where codigo=" me.txtcodigo.text
            .commandType = commandType.Text
        end with
        sql_Adaptador = new oledbdataadapter(comando)
        dataset1 = new dataset
        sql_Adaptador.Fill(dataset1, "usuario.contador")
        if dataset1.tables("usuario").rows.count > 0 then
            result = true
        end if
Esta programación me da error

1 respuesta

Respuesta
1
El error puede deberse a varias razones. Por ejemplo, ¿dónde se está asignando la variable 'datadir'? Debería contener la ruta a la base de datos.
¿Es el campo 'codigo' de la base de datos un valor numérico? De lo contrario también te generaría error
Lo imprescindible para poder ayudarte es que nos digas el mensaje de error que te aparece, para tener una pista de donde mirar.
La variable código es alfanumérica y la variable data dir contiene la ruta de la base de datos...
datadir = "C:\SISCON\SISCON\SISCON\BD\siscon.accdb"
Ok,
Dices que te da un error. ¿Puedes copiar y pegar el error?
No se han especificado valores para algunos de los parámetros requeridos...
Ok,
Pues eso significa que un nombre de campo o tabla de la consulta SQL que estás ejecutando está mal escrito.
Comprueba que en la base de datos existe una tabla llamada 'usuario' (sin las comillas) y que tiene un campo llamado 'codigo'
Si te sigue fallando, comprueba esta línea: sql_Adaptador.Fill(dataset1, "usuario.contador")
De todas formas, para lo que estás haciendo no veo correcto una cosa:
if dataset1.tables("usuario").rows.count > 0 then
     result = true
end if
Esa condición SIEMPRE se va a cumplir, por que la SQL que ejecutas SIEMPRE va a retornar 1 registro, que será un número determinado.
Prueba algo del estilo:
sql_Adaptador = new oledbdataadapter(comando)
dataset1 = new dataset
if dataset1.tables("usuario").rows(0).Fields(0).value > 0 then
       result = true
end if
Esa última consulta te retornaría todas las filas que coincidan con la condición.
Por lo que veo estás haciendo un login; suponiendo que con los campos código y usuario generas un registro único, te retornaría la fila de la base de datos correspondiente. En ese caso, el código que habías puesto inicialmente sería correcto.
En cambio, en la SQL que tu proponías inicialmente, era un COUNT(*) que lo que hace es retornar el número de filas que cumplen la condición. En tu caso, esa consulta retornaría SIEMPRE una fila, teniendo el alias Contador un valor de 0 si no se ha encontrado el usuario, o 1 si se ha encontrado.
Y si la consulta fuese:
"select * from usuario where codigo="+me.txtcodigo.text +" and usaurio="+usuario
como se si existe un usuario o que estoy haciendo mal????
Si los datos código y usuario coinciden, te retornará una fila, sino, no te retornará nada.
En tu código inicial:
if dataset1.tables("usuario").rows.count > 0 then
Eso quiere decir: si hay más de 0 filas, entonces...
O sea, significa que ha encontrado algún usuario
Muchas gracias por la ayuda pero podrás creer que todo el error que me daba era porque no estaba creado ese campo en la tabla...
Nota no coloque todo el select que yo tenia en mi código...
Verga me siento como usuario! jajajajajja bruuuuuuuuuuuuto de perinola y revisar el fuente poco a poco.. jajajajjaa de todas maneras muchas gracias me iluminaste cuando me comentaste eso...
Suerte...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas