none
Problema al consultar a BD con textbox consecutivo RRS feed

  • Pregunta

  • Hola,cómo están,mi problema es que al tratar de hacer una consulta a mi base de datos no aparece nada en mi gridview,estoy usando un consecutivo de un textbox para sacar el ultimo id generado y ver cuales son los archivos más recientes.

    Este es el código no se si estará bien espero su guía,gracias de antemano.

     Private Sub FiltrarGrilla()
            Dim cn1 As New MySqlConnection
            Dim cmd1 As New MySqlCommand
            Dim ad1 As New MySqlDataAdapter
            Dim ds1 As New DataSet
    
            cn1.ConnectionString = "Database=pqr;Data Source=localhost;User Id=root;Password="
            cn1.Open()
            cmd1.Connection = cn1
            cmd1.CommandType = CommandType.Text
            cmd1.CommandText = "Select * from adjuntos where id_reclamo ='" & txtidreclamo.Text & "'"
            ad1.SelectCommand = cmd1
            ad1.Fill(ds1)
            GridView1.DataSource = ds1.Tables(0)
            GridView1.DataBind()
            cn1.Close()
        End Sub

    viernes, 24 de abril de 2015 4:05

Respuestas

  • hola

    bien entonces esta claro que el problema es el filtro

    el campo de id reclamo de que tipo es ?

    lo pregunto porque si es numerico quizas necesitas usar

    cmd1.Parameters.AddWithValue("?idreclamo", Convert.ToInt32(txtidreclamo.Text))

    o sea asignar un valor numerico

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Camilo A. Villa domingo, 26 de abril de 2015 18:01
    • Marcado como respuesta Krej miércoles, 6 de mayo de 2015 15:00
    domingo, 26 de abril de 2015 3:42

Todas las respuestas

  • Hola Nekk

    Porque no intentas algo como:

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    
        'Ejemplo AS-IS de las paginas de Microsoft.
        If Not IsPostBack Then
    
          ' Declaro la consulta.
          Dim queryString As String = _
            "Select <TU_CONSULTA> where <TU_FILTRO>" 
    
          Dim ds As DataSet = GetData(queryString)
          If (ds.Tables.Count > 0) Then
    
            <TU_GRIDVIEW>.DataSource = ds
            <TU_GRIDVIEW>.DataBind()
    
          Else
    
            Message.Text = "No se pudo establecer conexión con Base de Datos."
    
          End If
    
        End If
    
    End Sub
    
    Function GetData(ByVal queryString As String) As DataSet
    
        'Traigo mejor la cadena del web.config, asi no la quemo en el codigo, lo cual es recomendable.
        Dim connectionString As String = ConfigurationManager.ConnectionStrings("NorthWindConnectionString").ConnectionString
    
        Dim ds As New DataSet()
    
        Try
    
          ' Me conecto a la BD y ejecuto la consulta.
          Dim connection As New SqlConnection(connectionString)
          Dim adapter As New SqlDataAdapter(queryString, Connection)
    
          ' Lleno el DataSet.
          Adapter.Fill(ds)
    
    
        Catch ex As Exception
    
          ' Muestro error de conexión.
          Message.Text = "No se pudo establecer conexión con Base de Datos."
    
        End Try
    
        Return ds
    
    End Function

    Espero te halla servido el ejemplo.


    Camilo Villa

    viernes, 24 de abril de 2015 4:38
  • hola

    lo primero que puedo comentarte es que debes usar parametros en la query, concatenar el valor en un string no es recomendable

    ademas puede que no recuperes datos por so no visualizas nada, define el

    GridView.EmptyDataTemplate Property

    para poder ver algo del grid cuando no hay datos

    usa algo como esto

     Private Sub FiltrarGrilla()
    	
    	Dim coonstring As Sring = "Database=pqr;Data Source=localhost;User Id=root;Password="
    	Using cn1 As New MySqlConnection(connstring)
    		cn1.Open()
    		
    		Dim query As String = "Select * from adjuntos where id_reclamo = ?idreclamo"
    		Dim cmd1 As New MySqlCommand(query, cn1)
    		cmd1.Parameters.AddWithValue("?idreclamo", txtidreclamo.Text)
    
    		Dim ad1 As New MySqlDataAdapter(cmd1)
    		Dim dt1 As New DataTable
    		ad1.Fill(dt1)
    		
    		GridView1.DataSource = dt1
    		GridView1.DataBind()
    	
    	End Using
    	
    End Sub

    igual una duda, porque usas un grid si solo vas a mostrar un solo registro?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de abril de 2015 11:26

  • igual una duda, porque usas un grid si solo vas a mostrar un solo registro?

    saludos


    Es para mostrar cuando alguien sube uno o varios archivos.
    viernes, 24 de abril de 2015 15:18
  • >>Es para mostrar cuando alguien sube uno o varios archivos.

    ahh o sea que el id reclamo es un foreing key a la tabla de reclamos, en ese caso esta correcto

    igual usa parametro, no concatener en un string el valor del filtro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de abril de 2015 15:33
  • >>Es para mostrar cuando alguien sube uno o varios archivos.

    ahh o sea que el id reclamo es un foreing key a la tabla de reclamos, en ese caso esta correcto

    igual usa parametro, no concatener en un string el valor del filtro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola,he usado parámetros pero aun así no consulta,muchas gracias de todas formas,no se si es por la manera en que llamo el consecutivo...
    viernes, 24 de abril de 2015 23:39
  • >>he usado parámetros pero aun así no consulta

    si la query la defines en alguna tool de administracion de mysql al ejecutarla retorna registros ?

    si ejecutas

    Dim query As String = "Select * from adjuntos"

    o sea sin filtrar se muestran datos?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 25 de abril de 2015 1:19

  • Dim query As String = "Select * from adjuntos"

    >o sea sin filtrar se muestran datos?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Sí,los muestra.
    sábado, 25 de abril de 2015 17:19
  • Hola nekk:

    Si los muestra, porque no intentas filtrando la tabla una vez este con los datos.

    Dataset.tables (0).select ("columna='" & variable & "'")

    saludos,


    Camilo Villa

    domingo, 26 de abril de 2015 0:10
  • hola

    bien entonces esta claro que el problema es el filtro

    el campo de id reclamo de que tipo es ?

    lo pregunto porque si es numerico quizas necesitas usar

    cmd1.Parameters.AddWithValue("?idreclamo", Convert.ToInt32(txtidreclamo.Text))

    o sea asignar un valor numerico

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Camilo A. Villa domingo, 26 de abril de 2015 18:01
    • Marcado como respuesta Krej miércoles, 6 de mayo de 2015 15:00
    domingo, 26 de abril de 2015 3:42
  • hola

    bien entonces esta claro que el problema es el filtro

    el campo de id reclamo de que tipo es ?

    lo pregunto porque si es numerico quizas necesitas usar

    cmd1.Parameters.AddWithValue("?idreclamo", Convert.ToInt32(txtidreclamo.Text))

    o sea asignar un valor numerico

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Sí,es int,muchas gracias por responder,usé el código que mandaste y sale:La cadena de entrada no tiene el formato correcto.

    El campo de id_reclamo es int,saludos.

    • Marcado como respuesta Krej miércoles, 6 de mayo de 2015 15:00
    • Desmarcado como respuesta Krej miércoles, 6 de mayo de 2015 15:00
    domingo, 26 de abril de 2015 15:51