我還沒有使用過VB,但據我所知,範圍的工作方式與C#中的相同。問題是,我在MS Access中使用VB,所以我不確定規則是否有點不同(儘管我認爲它們不是)。以下代碼顯示分配給只在函數參數內聲明的變量的值。特別是在查看PurchaseOrderID時,我不確定它是如何保留它在分配函數中使用的值。在MS Access中使用VB的變量範圍
Function Create(SupplierID As Long, EmployeeID As Long, OrderID As Long, PurchaseOrderID As Long) As Boolean
Dim rsw As New RecordsetWrapper
If rsw.OpenRecordset("Purchase Orders") Then
With rsw.Recordset
.AddNew
![Supplier ID] = SupplierID
If EmployeeID > 0 Then
![Created By] = EmployeeID
![Creation Date] = Now()
![Submitted By] = EmployeeID
![Submitted Date] = Now()
![Status ID] = Submitted_PurchaseOrder
End If
If OrderID > 0 Then
![Notes] = InsertString(PurchaseGeneratedBasedOnOrder, CStr(OrderID))
End If
If rsw.Update Then
.Bookmark = .LastModified
PurchaseOrderID = ![Purchase Order ID]
Create = True
End If
End With
End If
End Function
Function CreateLineItem(PurchaseOrderID As Long, ProductID As Long, UnitCost As Long, Quantity As Long) As Boolean
Dim rsw As New RecordsetWrapper
If rsw.OpenRecordset("Purchase Order Details") Then
With rsw.Recordset
.AddNew
![Purchase Order ID] = PurchaseOrderID
![Product ID] = ProductID
![Quantity] = Quantity
![Unit Cost] = UnitCost
CreateLineItem = rsw.Update
End With
End If
End Function
有人可以給我一些見解嗎?
我以爲龍是不可變的,即只傳遞值? – Nate
在VBA/VB6中,任何類型的過程參數都通過引用傳遞,除非被限定爲「ByVal」。 – prprcupofcoffee
@Nate檢查ByRef關鍵字和函數聲明的訪問幫助主題。 – HansUp