2011-10-25 85 views
0

我的DataGridViews有問題,實際上我有一個帶有8個選項卡的TabControl的表單,每個選項卡都有一個DataGridView控件。我正在填充它們,當表單加載時,問題是我在這裏得到了一種限制,只有3個DataGridViews被填充,而不是3個特定的,但是任何3個我首先放在我的代碼上。我手動填充它們,做一個mysql查詢,填充一個DataTable,然後使數據源等於DataTable。MySQL + VB.NET - TabControl和多個DataGridviews

任何想法?

Imports MySql.Data.MySqlClient 
Imports System.Data 

Public Class frmMantenimiento 
    Dim conn As MySqlConnection 
    Dim myCommand As New MySqlCommand 
    Dim myAdapter As New MySqlDataAdapter 
    Dim dataEmp As New DataTable 
    Dim dataNomi As New DataTable 
    Dim dataPres As New DataTable 
    Dim dataGast As New DataTable 
    Dim dataAmon As New DataTable 
    Dim dataHora As New DataTable 
    Dim SQL As String 

    Public Sub FillEmps() 
     conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;") 

     myCommand.Connection = conn 
     SQL = "SELECT IDEmpleado as ID, Nombre, Cargo FROM Empleados" 

     Try 
      conn.Open() 

      Try 
       myCommand.Connection = conn 
       myCommand.CommandText = SQL 

       myAdapter.SelectCommand = myCommand 
       myAdapter.Fill(dataEmp) 

       dgvConsEmp.DataSource = dataEmp 

       dgvConsEmp.Columns(0).Width = 30 
       dgvConsEmp.Columns(1).Width = 200 
       dgvConsEmp.Columns(2).Width = 200 

      Catch myerror As MySqlException 
       MsgBox("Ocurrió un error leyendo la base de datos: " & myerror.Message) 
      End Try 
     Catch myerror As MySqlException 
      MessageBox.Show("Ocurrió un error conectando a la base de datos: " & myerror.Message) 
     Finally 
      If conn.State <> ConnectionState.Closed Then conn.Close() 
     End Try 
    End Sub 

    Public Sub FillNom() 
     conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;") 

     myCommand.Connection = conn 
     SQL = String.Empty 
     SQL = "SELECT IDNomina as ID, Fecha, MontoBruto as 'Monto Bruto', MontoNeto as 'Monto Neto', CantidadEmpleados as Empleados FROM Nomina" 

     Try 
      conn.Open() 

      Try 
       myCommand.Connection = conn 
       myCommand.CommandText = SQL 

       myAdapter.SelectCommand = myCommand 
       myAdapter.Fill(dataNomi) 

       dgvConsNomi.DataSource = dataNomi 

       dgvConsNomi.Columns(0).Width = 30 

      Catch myerror As MySqlException 
       MsgBox("Ocurrió un error leyendo la base de datos: " & myerror.Message) 
      End Try 
     Catch myerror As MySqlException 
      MessageBox.Show("Ocurrió un error conectando a la base de datos: " & myerror.Message) 
     Finally 
      If conn.State <> ConnectionState.Closed Then conn.Close() 
     End Try 
    End Sub 

    Public Sub FillPres() 
     conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;") 

     myCommand.Connection = conn 
     SQL = String.Empty 
     SQL = "SELECT IDPrestamo as ID, IDEmpleado as 'ID Empleado', MontoInicial as Monto, Fecha, MontoDescuento as Descuento, FormaDescuento as Recurrencia, Status FROM Prestamos" 

     Try 
      conn.Open() 

      Try 
       myCommand.Connection = conn 
       myCommand.CommandText = SQL 

       myAdapter.SelectCommand = myCommand 
       myAdapter.Fill(dataPres) 

       dgvConsPres.DataSource = dataPres 

       dgvConsPres.Columns(0).Width = 30 

      Catch myerror As MySqlException 
       MsgBox("Ocurrió un error leyendo la base de datos: " & myerror.Message) 
      End Try 
     Catch myerror As MySqlException 
      MessageBox.Show("Ocurrió un error conectando a la base de datos: " & myerror.Message) 
     Finally 
      If conn.State <> ConnectionState.Closed Then conn.Close() 
     End Try 
    End Sub 

    Public Sub FillGast() 
     conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;") 

     myCommand.Connection = conn 
     SQL = String.Empty 
     SQL = "SELECT IDGasto as ID, IDEmpleado as 'ID Empleado', Monto, Fecha, Concepto, IDUsuario as Creador FROM GastosEmpleados" 

     Try 
      conn.Open() 

      Try 
       myCommand.Connection = conn 
       myCommand.CommandText = SQL 

       myAdapter.SelectCommand = myCommand 
       myAdapter.Fill(dataGast) 

       Me.dgvConsGast.DataSource = dataGast 

       Me.dgvConsGast.Columns(0).Width = 30 

      Catch myerror As MySqlException 
       MsgBox("Ocurrió un error leyendo la base de datos: " & myerror.Message) 
      End Try 
     Catch myerror As MySqlException 
      MessageBox.Show("Ocurrió un error conectando a la base de datos: " & myerror.Message) 
     Finally 
      If conn.State <> ConnectionState.Closed Then conn.Close() 
     End Try 
    End Sub 

    Public Sub FillAmon() 
     conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;") 

     myCommand.Connection = conn 
     SQL = "SELECT IDAmonestacion as ID, TipoAmonestacion as Tipo, Descripcion, IDUsuario as Creador FROM Amonestaciones" 

     Try 
      conn.Open() 

      Try 
       myCommand.Connection = conn 
       myCommand.CommandText = SQL 

       myAdapter.SelectCommand = myCommand 
       myAdapter.Fill(dataAmon) 

       dgvConsAmon.DataSource = dataAmon 

       dgvConsAmon.Columns(0).Width = 30 

      Catch myerror As MySqlException 
       MsgBox("Ocurrió un error leyendo la base de datos: " & myerror.Message) 
      End Try 
     Catch myerror As MySqlException 
      MessageBox.Show("Ocurrió un error conectando a la base de datos: " & myerror.Message) 
     Finally 
      If conn.State <> ConnectionState.Closed Then conn.Close() 
     End Try 
    End Sub 

    Public Sub FillHora() 
     conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;") 

     myCommand.Connection = conn 
     SQL = "SELECT IDControlHorario as ID, IDEmpleado as 'ID Empleado', Fecha, Hora FROM ControlHorario" 

     Try 
      conn.Open() 

      Try 
       myCommand.Connection = conn 
       myCommand.CommandText = SQL 

       myAdapter.SelectCommand = myCommand 
       myAdapter.Fill(dataHora) 

       dgvConsHora.DataSource = dataHora 

       dgvConsHora.Columns(0).Width = 30 

      Catch myerror As MySqlException 
       MsgBox("Ocurrió un error leyendo la base de datos: " & myerror.Message) 
      End Try 
     Catch myerror As MySqlException 
      MessageBox.Show("Ocurrió un error conectando a la base de datos: " & myerror.Message) 
     Finally 
      If conn.State <> ConnectionState.Closed Then conn.Close() 
     End Try 
    End Sub 


    Private Sub frmMantenimiento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     FillEmps() 
     FillNom() 
     FillPres() 
     FillGast() 
     FillAmon() 
     FillHora() 
    End Sub 
+0

你可以請張貼你的代碼嗎? – Xint0

+0

當然,剛添加。 –

回答

0

有很多代碼重複,你可以重構。但是,我認爲根本原因在於,您不是在每個FillX()方法中重新初始化myCommandmyAdapter變量。因此,我會首先將conn,myCommand,myAdapterSQL變量作爲每個FillX()方法的本地變量。

然後我會重構代碼以應用DRY(不要重複自己)原則並消除重複的代碼。

+0

即使爲每個FillX()聲明新的變量,也可能是連接問題,同時有太多的查詢或其他東西,這並不工作? –