考慮 :
Private Function isAvailableQuantity() As Boolean
Try
sqL = "SELECT StocksOnHand FROM ITEM WHERE ItemNo = " & Val(txtSearch.Text) & ""
ConnDB()
cmd = New OleDbCommand(sqL, conn)
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
If dr.Read = True Then
If Val(txtQuantity.Text) <= dr(0) Then
isAvailableQuantity = True
Else
MsgBox("Insuficient stocks", MsgBoxStyle.Critical, "Validate Stocks")
txtSearch.Clear()
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
cmd.Dispose()
conn.Close()
End Try
End Function
我不知道該怎么辦。舊版本的 Visual Studio 不會出現此錯誤。我現在正在使用vs 2022,相反它似乎有錯誤vs 2010沒有
uj5u.com熱心網友回復:
在 VB.NET 中,aFunction是回傳值的Sub方法,a 是不回傳值的方法。如果您的方法不需要回傳任何內容,請使用 a Sub,例如
Private Sub DoSomething()
'Do some stuff here.
End Sub
如果您確實使用 aFunction那么有兩種方法可以回傳一個值。不好的方法是給以方法命名的隱式區域變數賦值,例如
Private Function DoSomething() As Boolean
'Do some stuff here.
DoSomething = True
End Function
這種方式基本上只存在于支持升級的 VB6 代碼。如果您的老師向您展示了這一點,那么他們顯然是一位沒有真正學習過 VB.NET 的老 VB6 開發人員。回傳值的好方法是使用顯式Return陳述句,例如
Private Function DoSomething() As Boolean
'Do some stuff here.
Return True
End Function
如果有多個執行路徑可以通過您的代碼,您需要確保在所有路徑上都回傳一個值。例如,此代碼不會這樣做:
Private Function DoSomething() As Boolean
If Date.Now.DayOfWeek = DayOfWeek.Monday Then
Return True
End If
End Function
這將True在星期一回傳,但在其他日子不會回傳任何內容。在這種特定情況下,一個解決方法是:
Private Function DoSomething() As Boolean
If Date.Now.DayOfWeek = DayOfWeek.Monday Then
Return True
End If
Return False
End Function
如果您打算使用糟糕的方式回傳一個值,并且您想在除一個代碼路徑之外的所有路徑上回傳一個特定值,那么合乎邏輯的做法是在開始時將回傳值設定為默認值,然后只更改它在那個地方,例如
Private Function DoSomething() As Boolean
DoSomething = False
If Date.Now.DayOfWeek = DayOfWeek.Monday Then
DoSomething = True
End If
End Function
最后一個示例是您的方案最簡單(盡管不是最好)的修復方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473621.html
標籤:VB.net
上一篇:VSTO致命錯誤System.Runtime.InteropServices.COMException:“來自HRESULT的例外:0x800A03EC”
下一篇:(在VisualBasic中)是否可以在不使用(if-then-tree)或(和&HFF)的情況下“回圈”或“旋轉”一個位元組?
