none
Validar una conexion RRS feed

  • Pregunta

  • Tengo el siguiente codigo que segun yo realiza y valida la conexion, mi pregunta es, realmente estoy haciendo lo correcto ?

    Sub consultar(ByVal tabla As GridView, ByVal codigo As Long, ByVal fecha1 As Date, ByVal fecha2 As Date)
            Try
                Dim query As String = "select art_Clave as 'SKU', kar_Fecha as 'FECHA DEL MOVIMIENTO', kar_Cantidad as 'PIEZAS', kar_Origen as 'TICKET', alma_Existencia as 'EXISTENCIA FINAL' FROM tArticuloKardex WHERE art_Clave=@codigo AND (kar_Fecha between @fecha1 and @fecha2)"
                Using connection As New SqlConnection(connectionString)
                    Dim cmd As New SqlCommand(query, connection)
                    cmd.Parameters.AddWithValue("@codigo", codigo)
                    cmd.Parameters.AddWithValue("@fecha1", fecha1)
                    cmd.Parameters.AddWithValue("@fecha2", fecha2)
                    connection.Open()

                    adaptador = New SqlDataAdapter(cmd)
                    Dim datos As New DataTable
                    adaptador.Fill(datos)

                    tabla.DataSource = datos
                    tabla.DataBind()
                End Using
            Catch ex As Exception
                Response.Write("<script>alert('La conexion no pudo realizarse en Ciudad Cuahutemoc')</script>")
            End Try
        End Sub

    martes, 22 de septiembre de 2015 17:11

Respuestas

  • hola

    lo que veo sucede es que nunca te enteras del mensaje de error

    Catch ex As Exception
                Response.Write(String.Format("<script>alert('{0}')</script>", ex.Message))
    End Try

    debes mostrar el mensaje del error

    sino siempre tendras el mismo mensaje

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Gspindola miércoles, 23 de septiembre de 2015 13:28
    martes, 22 de septiembre de 2015 18:09

Todas las respuestas

  • Hola Gspindola,

    ¿Validar conexión? No veo ninguna instrucción que valide la conexión.

    Vamos al código que muestras, es correcto pero tengo algunas consideraciones:

    1. No debería ser un procedimiento, debería ser una función que retorne (para este caso) un objeto DataTable.
    2. No requieres abrir la conexión, el método Fill abrirá la conexión, recuperará los datos y posteriormente la cerrará.

    Tu bloque de código debería quedar de la siguiente manera:

    Public Function consultar(ByVal codigo As Long, ByVal fecha1 As Date, ByVal fecha2 As Date) As DataTable
            Try
                Dim query As String = "select art_Clave as 'SKU', kar_Fecha as 'FECHA DEL MOVIMIENTO', kar_Cantidad as 'PIEZAS', kar_Origen as 'TICKET', alma_Existencia as 'EXISTENCIA FINAL' FROM tArticuloKardex WHERE art_Clave=@codigo AND (kar_Fecha between @fecha1 and @fecha2)"
                Using connection As New SqlConnection(connectionString)
                    Dim cmd As New SqlCommand(query, connection)
                    cmd.Parameters.AddWithValue("@codigo", codigo)
                    cmd.Parameters.AddWithValue("@fecha1", fecha1)
                    cmd.Parameters.AddWithValue("@fecha2", fecha2)                
    
                    adaptador = New SqlDataAdapter(cmd)
                    Dim datos As New DataTable
                    adaptador.Fill(datos)                
                End Using
    			
    			Return datos
            Catch ex As Exception
                Response.Write("<script>alert('La conexion no pudo realizarse en Ciudad Cuahutemoc')</script>")
            End Try
        End Sub

    Para reutilizar el código:

    GridView.DataSource = consultar(codigo, fecha1, fecha2)
    GridView.DataBind()

    martes, 22 de septiembre de 2015 17:24
  • pero me doy cuenta que no valida la conexion, porque aunque la conexion este abierta me manda el mensaje del catch
    martes, 22 de septiembre de 2015 17:41
  • Hola Gspindola,

    No veo problema en el método, ¿Has validado que la cadena de conexión sea correcta?

    martes, 22 de septiembre de 2015 17:47
  • Esto es todo lo que tengo en el metodo

    Imports System.Data.Sql
    Imports System.Data.SqlClient
    Imports System.Data
    Partial Class kardexcerro
        Inherits System.Web.UI.Page
        Public adaptador As SqlDataAdapter
        Dim connectionString = ConfigurationManager.ConnectionStrings("conexionCerro").ConnectionString
        Sub consultar(ByVal tabla As GridView, ByVal codigo As Long, ByVal fecha1 As Date, ByVal fecha2 As Date)
            Try
                Dim query As String = "select art_Clave as 'SKU', kar_Fecha as 'FECHA DEL MOVIMIENTO', kar_Cantidad as 'PIEZAS', kar_Origen as 'TICKET', alma_Existencia as 'EXISTENCIA FINAL' FROM tArticuloKardex WHERE art_Clave=@codigo AND (kar_Fecha between @fecha1 and @fecha2)"
                Using connection As New SqlConnection(connectionString)
                    Dim cmd As New SqlCommand(query, connection)
                    cmd.Parameters.AddWithValue("@codigo", codigo)
                    cmd.Parameters.AddWithValue("@fecha1", fecha1)
                    cmd.Parameters.AddWithValue("@fecha2", fecha2)
                    connection.Open()

                    adaptador = New SqlDataAdapter(cmd)
                    Dim datos As New DataTable
                    adaptador.Fill(datos)

                    tabla.DataSource = datos
                    tabla.DataBind()
                End Using
            Catch ex As Exception
                Response.Write("<script>alert('La conexion no pudo realizarse en Ciudad Cuahutemoc')</script>")
            End Try
        End Sub
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                consultar(GridView3, Convert.ToInt64(TextBox8.Text), CDate(TextBox2.Text), CDate(TextBox3.Text))
                GridView3.DataBind()
            Catch ex As Exception
                If TextBox8.Text = "" Then
                    Response.Write("<script>alert('Ingresa el SKU, es obligatoria')</script>")
                End If
                If TextBox2.Text = "" Then
                    Response.Write("<script>alert('Ingresa la primera fecha, es obligatoria')</script>")
                End If
                If TextBox3.Text = "" Then
                    Response.Write("<script>alert('Ingresa la segunda fecha, es obligatoria')</script>")
                End If
            End Try
        End Sub
        Protected Sub GridView3_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView3.PageIndexChanging
            GridView3.PageIndex = e.NewPageIndex
            consultar(GridView3, Convert.ToInt64(TextBox8.Text), CDate(TextBox2.Text), CDate(TextBox3.Text))
        End Sub
    End Class

    martes, 22 de septiembre de 2015 17:55
  • hola

    lo que veo sucede es que nunca te enteras del mensaje de error

    Catch ex As Exception
                Response.Write(String.Format("<script>alert('{0}')</script>", ex.Message))
    End Try

    debes mostrar el mensaje del error

    sino siempre tendras el mismo mensaje

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Gspindola miércoles, 23 de septiembre de 2015 13:28
    martes, 22 de septiembre de 2015 18:09