و اما عزیزانی که در محیط vba برنامه نویسی میکنن در فراخوانی DataMacro ممکن دچار مشکل بشن

فراخوانی دیتا ماکرو در vba درای دو شرطه

اول داده ست شده با هر پارامتر باید با نوع داده وارد شده با Field اصلی برابر باشه

یعنی مثلا اگر فیلدی داشته باشید که از نوع عدد باشه و بعد بخواهید با دیتا ماکرو تغییر یا اضافه کنید بهش باید حتما داده وارد شده عددی باشه

و اما اگه داده string باشه قضیه فرق میکنه باید قبل و بعد داده """" رو اضافه کنید

نکته دوم باید قبل از اجرای دیتا ماکرو تمامی پارامتر ها رو هم ست کنید

برای اینکه ساده تر بشه از این کد استفاده کنید


Public Function SetDataMacro(DataMacroName As String, Parameters, ParameterValue)
Dim i As Integer
i = 0
For Each Item In Parameters
If IsNumeric(ParameterValue(i)) = True Then
DoCmd.SetParameter Item, ParameterValue(i)
Else
DoCmd.SetParameter Item, """" & ParameterValue(i) & """"
End If
i = i + 1
Next
DoCmd.RunDataMacro DataMacroName
End Function



. برای فراخواین این فانکش هم باید مقدار رو به صورت Array وارد کنید

دقت کنید در داده وارد شده باید index پارامتر و ParameterValue باهم برابر باشند

یعنی اگر پارامتر در Array با Index شماره 0 باشه داده برابر هم باید در ParameterValue دارای Index 0 باشه


SetDataMacro "Commodity.Update", Array("IDParameters", "AvailableParameters"), _
Array(Me.cmb_Search.Column(0, Me.cmb_Search.ListIndex), _
Me.cmb_Available.Value)