จะทำการselect ข้อมูลจาก Mysql ซึ่งถ้าในตอนที่ select ผลที่ได้มีค่าเท่ากับ null มันจะฟ้อง Error "Invalid attempt to access a field before calling Read()" แต่เมื่อลองกรอกข้อมูลในฐานแล้ว select ใหม่อีกครั้งมันจะไม่ error ไม่ทราบว่าเป็นเพราะอะไรหรอค่ะ
Code (VB.NET)
Dim myCon As MySqlConnection
Dim myCom As MySqlCommand
Dim myDa As MySqlDataAdapter
Dim myDr As MySqlDataReader
Dim myDs As DataSet
Dim myTs As MySqlTransaction
Dim strConn As String = ConfigurationManager.ConnectionStrings("Center.My.MySettings.dbCenter").ConnectionString
Dim Conn As MySqlConnection = New MySqlConnection
Private Function get_table() As String
Dim tbName As String
Dim sql, sqlTable As String
Dim curYear As String
curYear = Str(Year(Date.Now))
curYear = curYear.Substring(3, 2)
myCon = New MySqlConnection
myCon.ConnectionString = strConn
myCon.Open()
If lcSelect = "Year" Then
sql = "select fcTableName from tbYear where fcReportName = '" & lcPrint & "' and fcYear = '" & lcYear & "'"
ElseIf lcSelect = "Date" Then
sql = "select fcTableName from tbDate where fcReportName = '" & lcPrint & "' and fdBegin = '" & lcBeg & "' and fcEnd = '" & lcEnd & "'"
End If
myCom = New MySqlCommand(sql, myCon)
myDr = myCom.ExecuteReader
myDr.Read()
If IsDBNull(myDr("fcTableName")) Then
tbName = ""
Else
tbName = myDr("fcTableName")
End If
myDr.Close()
มันฟ้อง Error ตรงบรรทัด If IsDBNull(myDr("fcTableName")) Then ค่ะ
ได้แล้วค่ะเปลี่ยนมาใช้
While myDr.Read()
tbName = myDr("tName")
End While
คิดว่าน่าจะเกิดจากคำสั่ง SQL เพราะถ้าใช้คำสั่งแบบ
"select Max(fcTableName) as maxTable from tbDate where fcTableName Like '" & lcc & "-%' "
จะสามารถใช้
myDr.Read()
If IsDBNull(myDr("tName")) Then
ได้ แต่ถ้า
select fcTableName as tName from tbYear where ..."
มันจะ error