ผมใช้ Vb.Net 2012 ทดลองเขียนโปรแกรม ให้โหลดระดับชั้นของนักเรียนขึ้นมาใส่ใน Combobox โดยให้ทำการ
โหลดข้อมูลในขึ้นมาในตอนที่เกิด Event Load ของ Form ผมสังเกตุเห็นได้ชัดว่า ตอนเปิดฟอร์มมันมีอาการหน่วงค้าง
ประมาน เกือบ 10 วิ ลองพอลองเช็คดู ประกฎว่ามันหน่วงที่คำสั่งนี้ sqlConn.Open() แต่พอหลังจากนั้น จะเรียกข้อมูล
ขึ้นมาใช่อีกก็ไม่หน่วงแล้ว ผมเลยอย่างทราบว่าของคนอื่นเป้นอย่างไรกันบ้างครับ แล้วพอจะมีวิธีแก้ไขอย่างไรครับ
ให้มันไม่หน่วงในการเปิดใช้ฐานข้อมูลในครั้งแรกน่ะครับ ตอนใช้ vb6 ทำ ก็ไม่เห็นเป็นแบบนี้นะครับ
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
Call SetGrid(G1)
Call HeadG1()
strConn = "Data Source=.;Initial Catalog='';User Id=sa;Password=test;"
'Application.DoEvents()
Call LoadClass()
End Sub
Private Sub LoadClass()
Dim strSql As String, sqlConn As New SqlConnection(strConn), sqlDr As SqlDataReader
Dim dT As New DataTable
strsql = "SELECT Sr.LavelNo + Sr.DepartNo + Sr.RoundNo + Sr.[Year] + Sr.Room AS ClassNo," & _
" L.LavelName + Sr.[Year] + '/' + Sr.Room + ' ' + D.DepartNamefull + ' รอบ ' + R.RoundName AS ClassName" & _
" FROM Tabain.dbo.tblStudentRoom Sr " & _
" LEFT JOIN BaseData.dbo.tblLavel L ON Sr.LavelNo = L.LavelNo" & _
" LEFT JOIN BaseDAta.dbo.tblDepart D ON Sr.DepartNo = D.DepartNo" & _
" LEFT JOIN BaseDAta.dbo.tblRound R ON Sr.RoundNo = R.RoundNo" & _
" WHERE Sr.[Year]<>'-' AND Sr.Room <> '-'" & _
" GROUP BY Sr.LavelNo, Sr.DepartNo, Sr.RoundNo, Sr.[Year], Sr.Room," & _
" L.LavelName, D.DepartNameFull, R.RoundName" & _
" ORDER BY CONVERT(INT, Sr.LavelNo), CONVERT(INT, Sr.[Year])," & _
" CONVERT(INT, SR.Room), CONVERT(INT, Sr.DepartNo), CONVERT(INT, Sr.RoundNo)"
sqlConn.Open() <--- หน่วงที่บรรทัดนี้
sqlDr = New SqlCommand(strSql, sqlConn).ExecuteReader
If sqlDr.HasRows Then
dT.Load(sqlDr)
cboRoom.DataSource = dT
cboRoom.DisplayMember = "ClassName"
cboRoom.ValueMember = "ClassNo"
End If
sqlDr.Close()
sqlConn.Dispose()
End Sub
ขอบคุณครับ
ทำไมเวลา vb.net เชื่อมต่อ MsSql มันเกิดอาการหน่วง
โหลดข้อมูลในขึ้นมาในตอนที่เกิด Event Load ของ Form ผมสังเกตุเห็นได้ชัดว่า ตอนเปิดฟอร์มมันมีอาการหน่วงค้าง
ประมาน เกือบ 10 วิ ลองพอลองเช็คดู ประกฎว่ามันหน่วงที่คำสั่งนี้ sqlConn.Open() แต่พอหลังจากนั้น จะเรียกข้อมูล
ขึ้นมาใช่อีกก็ไม่หน่วงแล้ว ผมเลยอย่างทราบว่าของคนอื่นเป้นอย่างไรกันบ้างครับ แล้วพอจะมีวิธีแก้ไขอย่างไรครับ
ให้มันไม่หน่วงในการเปิดใช้ฐานข้อมูลในครั้งแรกน่ะครับ ตอนใช้ vb6 ทำ ก็ไม่เห็นเป็นแบบนี้นะครับ
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
Call SetGrid(G1)
Call HeadG1()
strConn = "Data Source=.;Initial Catalog='';User Id=sa;Password=test;"
'Application.DoEvents()
Call LoadClass()
End Sub
Private Sub LoadClass()
Dim strSql As String, sqlConn As New SqlConnection(strConn), sqlDr As SqlDataReader
Dim dT As New DataTable
strsql = "SELECT Sr.LavelNo + Sr.DepartNo + Sr.RoundNo + Sr.[Year] + Sr.Room AS ClassNo," & _
" L.LavelName + Sr.[Year] + '/' + Sr.Room + ' ' + D.DepartNamefull + ' รอบ ' + R.RoundName AS ClassName" & _
" FROM Tabain.dbo.tblStudentRoom Sr " & _
" LEFT JOIN BaseData.dbo.tblLavel L ON Sr.LavelNo = L.LavelNo" & _
" LEFT JOIN BaseDAta.dbo.tblDepart D ON Sr.DepartNo = D.DepartNo" & _
" LEFT JOIN BaseDAta.dbo.tblRound R ON Sr.RoundNo = R.RoundNo" & _
" WHERE Sr.[Year]<>'-' AND Sr.Room <> '-'" & _
" GROUP BY Sr.LavelNo, Sr.DepartNo, Sr.RoundNo, Sr.[Year], Sr.Room," & _
" L.LavelName, D.DepartNameFull, R.RoundName" & _
" ORDER BY CONVERT(INT, Sr.LavelNo), CONVERT(INT, Sr.[Year])," & _
" CONVERT(INT, SR.Room), CONVERT(INT, Sr.DepartNo), CONVERT(INT, Sr.RoundNo)"
sqlConn.Open() <--- หน่วงที่บรรทัดนี้
sqlDr = New SqlCommand(strSql, sqlConn).ExecuteReader
If sqlDr.HasRows Then
dT.Load(sqlDr)
cboRoom.DataSource = dT
cboRoom.DisplayMember = "ClassName"
cboRoom.ValueMember = "ClassNo"
End If
sqlDr.Close()
sqlConn.Dispose()
End Sub
ขอบคุณครับ