2015-12-09 98 views
0

我試圖在列中將整行添加到組合框中。 當我嘗試它或者只顯示列的最後一行或它只顯示最後一行35次。從MS Access數據庫行填充一個VB組合框

我在想什麼?這真讓我抓狂。我對評論欄目道歉,我正在嘗試一些不同的編碼。

Option Strict On 
Imports System.Data.OleDb 
Imports ShadowLogin.GlobalVariables 
Public Class DeptNewSch 

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click 
    Me.Close() 
    ShadowMain.Show() 
End Sub 

Private Sub DeptNewSch_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim CourseArray(35, 2) As String 

    Using cnnOLEDB = New OleDbConnection(strConnectionString) 
     Dim NewSchDS As DataSet 
     Dim NewSchTables As DataTableCollection 
     Dim NewSchsource1 As New BindingSource 

     NewSchDS = New DataSet 
     NewSchTables = NewSchDS.Tables 

     Using cmd As New OleDbCommand("SELECT ClassSection.CourseTitle AS Course, ClassSection.SectionNumber AS [Section Number], ClassSection.ScheduleNumber AS [Schedule Number], Course.ShortTitle AS [Course Title], Course.Units, ClassSection.Type AS Format, ClassSection.TimeSlot AS [Days/Time], ClassSection.RoomID AS Location, Faculty.[First Name], Faculty.[Last Name], Classroom.MaxCapacity AS Seats FROM [Classroom], [ClassSection], [Faculty], [Course] WHERE (ClassSection.FRedID = Faculty.FRedID) AND Course.CourseTitle = ClassSection.CourseTitle AND Classroom.RoomID = ClassSection.RoomID AND [email protected] AND [email protected];", cnnOLEDB) 
      cmd.Parameters.Add("@Year", OleDbType.VarWChar).Value = Convert.ToInt32(strYear.ToString()) 
      cmd.Parameters.Add("@Semester", OleDbType.VarWChar).Value = strSemester.ToString() 

      Using NewSchDA As OleDbDataAdapter = New OleDbDataAdapter(cmd) 
       NewSchDA.Fill(NewSchDS, "New Semester") 'Change items to your database name 
       Dim view As New DataView(NewSchTables(0)) 
       NewSchsource1.DataSource = view 
       dgNewSch.DataSource = view 
       Me.dgNewSch.Columns("Course").Width = 60 
       Me.dgNewSch.Columns("Section Number").Width = 50 
       Me.dgNewSch.Columns("Schedule Number").Width = 60 
       Me.dgNewSch.Columns("Course Title").Width = 190 
       Me.dgNewSch.Columns("Units").Width = 40 
       Me.dgNewSch.Columns("Format").Width = 70 
       Me.dgNewSch.Columns("Days/Time").Width = 100 
       Me.dgNewSch.Columns("Location").Width = 70 
       Me.dgNewSch.Columns("First Name").Width = 80 
       Me.dgNewSch.Columns("Last Name").Width = 80 
       Me.dgNewSch.Columns("Seats").Width = 50 
      End Using 
     End Using 
    End Using 

    'Connect to Database and get the registration information 
    Using cnnOLEDB = New OleDbConnection(strConnectionString) 


     ' Query the classschedule table for start of semester datas 
     Using cmdOleDB = New OleDbCommand("SELECT [CourseTitle], [ShortTitle],[Units] FROM [Course] WHERE rownumber [email protected]", cnnOLEDB) 
      cnnOLEDB.Open() 
      Using rdrOLEDB = cmdOleDB.ExecuteReader 
       While rdrOLEDB.Read 
        Dim l As Integer 

        For l = 0 To 35 
         'cmdOleDB.Parameters.Add("@row", OleDbType.VarWChar).Value = l 
         CourseArray(l, 0) = rdrOLEDB.Item(0).ToString 
         CourseArray(l, 1) = rdrOLEDB.Item(1).ToString 
         CourseArray(l, 2) = rdrOLEDB.Item(2).ToString 
        Next 




        ' CboFormat.Items.Add() 
        ' CboDayTime.Items.Add() 
        ' CboLocation.Items.Add() 
        ' CboName.Items.Add() 
       End While 
      End Using 
     End Using 
    End Using 

    For z As Integer = 0 To 35 

     CboCourse.Items.Insert(z, CourseArray(z, 0).ToString) 

    Next 

End Sub 

末級

正如您可以猜到這是香港專業教育學院一直在努力的代碼。 任何幫助將是偉大的,如果我試圖做的是儘可能的。

+0

循環是否準確地預測35條記錄?根據數據的不同,CBO可能會被綁定到一個List,其中包含與DGV – Plutonix

+0

一樣的行...「List(Of Course)」或幾乎任何事情都會比二維數組好。 [見示例](http://stackoverflow.com/a/34164458/1070452) – Plutonix

+0

所以你說,它更好地寫在個別的課程路線? (對不起還沒有睡過) –

回答

0

您每次讀取數據源中的記錄時,都會運行0至35個循環。

While rdrOLEDB.Read 
        Dim l As Integer 

        For l = 0 To 35 
         'cmdOleDB.Parameters.Add("@row", OleDbType.VarWChar).Value = l 
         CourseArray(l, 0) = rdrOLEDB.Item(0).ToString 
         CourseArray(l, 1) = rdrOLEDB.Item(1).ToString 
         CourseArray(l, 2) = rdrOLEDB.Item(2).ToString 
        Next 
Name.Items.Add() 
       End While 
+0

是否有辦法做循環而不記錄在以前的數據? –

+0

爲什麼你需要這個循環?只需在While循環中遞增一次。 – nicomp

+0

我應該問問是否有更好的方法來做到這一點? –

相關問題