none
Abrir varias tablas en un formulario RRS feed

  • Pregunta

  • Hola, tengo un formulario en el cual tengo un tabcontrol con 3 pestañas.

    Este formulario coge datos de 3 tablas, la primera pestaña coge datos de 2 tablas y la segunda y tercera la cogen de otra tabla.

    EL problema lo tengo en la tabla de la segunda y tercera pestaña, si lo ponía en el Load, tardaba muchiiisimo en cargar, asi que intenté hacerlo cuando se abre esa pestaña en concreto, me funciona pero me va muy lento también, ahora mismo lo tengo así:

    Private Sub TabControl1_Selecting(sender As Object, e As TabControlCancelEventArgs) Handles TabControl1.Selecting
            If Me.TabControl1.SelectedIndex = 0 Then
                '    Hemos seleccionado la primera pestaña
            ElseIf TabControl1.SelectedIndex = 1 Then
    
                'Cargamos datos de Objetiva e Inicial
                TxtUltRev.Text = tobjetiva.Rows0)"ultrevisio")
                TxtOpt.Text = dtobjetiva.Rows(0)("dr")
    
                ''Cargamos numero2
                num2 = dtobjetiva.Rows(0)("numero2")
    
                sql4 = "SELECT * FROM" & far22 & "WHERE NUMERO2= " & num2
                Dim cmd3 As New SqlCommand(sql4, Cnn)
    
                Dim daobjetiva2 As New SqlDataAdapter(cmd3)
                daobjetiva2.Fill(dtobjetiva2)
    
                ''    Objetiva e Inicial
                TxtCorEjeOD.Text = dtobjetiva2.Rows(0)("actuejeod")
                TxtCorEjeOI.Text = dtobjetiva2.Rows(0)("actuejeoi")
                TxtCorCilOD.Text = dtobjetiva2.Rows(0)("actucilod")
                TxtCorCilOI.Text = dtobjetiva2.Rows(0)("actuciloi")
                TxtCorEsfOD.Text = dtobjetiva2.Rows(0)("actuesfod")
                TxtCorEsfOI.Text = dtobjetiva2.Rows(0)("actuesfoi")
                TxtCorAdi.Text = dtobjetiva2.Rows(0)("actuadic")
                TxtCorAvOD.Text = dtobjetiva2.Rows(0)("actuavod")
                TxtCorAvOI.Text = dtobjetiva2.Rows(0)("actuavoi")
                TxtCorAvscOD.Text = dtobjetiva2.Rows(0)("avscod")
                TxtCorAvscOI.Text = dtobjetiva2.Rows(0)("avscoi")
                TxtCorAVB.Text = dtobjetiva2.Rows(0)("rabinocula")
    
            ElseIf TabControl1.SelectedIndex = 2 Then
                '    Hemos seleccionado la tercera pestaña
                MsgBox("3")
            End If
        End Sub

    Intenté crear un parámetro para no utilizar una variable pero me iba mucho mas lento y me bloqueaba el programa...Algo no estoy haciendo bién pero ya no se que puede fallar.

    • Cambiado Enrique M. Montejo domingo, 15 de febrero de 2015 7:12 Pregunta relacionada con el acceso a datos con Microsoft SQL Server.
    jueves, 12 de febrero de 2015 18:51

Todas las respuestas

  • Hola,

    La consulta es simple y trae un sólo registro, no deberías tener problemas en tiempos de respuesta. ¿far22 es una tabla o vista? ¿Cuántos registros tiene la tabla?¿Tienes definido índices?. Yo usaría DataReader.

    Esperamos tu feed-back

    jueves, 12 de febrero de 2015 19:03
  • far22 es una tabla, y num2 es una variable que contiene un campo de otra tabla....Estoy viendo la posibilidad de unir dos consultas en una sola...La tabla far22 puede tener varios registros con ese número. Los índices todavía no están definidos, se que por eso me va ir mas lento pero es que me llega a bloquear el programa.

    Creo que el Datareader es otra forma de hacerlo, pero no creo que mejore la velocidad..

    viernes, 13 de febrero de 2015 9:38
  • 'Cargamos numero2
    num2 = dtobjetiva.Rows(0)("numero2")
    Cnn.Open()
    
    sql4 = "SELECT * FROM FARCHGRA22 WHERE NUMERO2= " & num2
    Dim cmd3 As New SqlCommand(sql4, Cnn)
    
    Dim daobjetiva2 As New SqlDataAdapter(cmd3)
    daobjetiva2.Fill(dtobjetiva2)
    Cnn.Close()

    Lo único raro que hago es llenar num2 con otro datatable para usar el campo numero2(dtobjetiva) En el cual hago esto:

    sql4 = "SELECT * FROM farchgra22 WHERE NUMERO= "& num

    Realmente lo que necesito es numero2 y no numero, pero si hago ese select de numero2 me va muy lento y por eso probé a hacerlo así...Aunque me funciona lento igual...

    Creo que voy a quitar el select de numero y dejaré solo el de numero2

    viernes, 13 de febrero de 2015 12:47