با سلام
یک جدول داریم شامل یک فیلد عددی از نوع Integer بنام age
در کدنویسی vba چطوری میتونم مثلا فیلدهای که بزرگتر از 15 هستند رو بخونم و در یک آرایه بریزم
Printable View
با سلام
یک جدول داریم شامل یک فیلد عددی از نوع Integer بنام age
در کدنویسی vba چطوری میتونم مثلا فیلدهای که بزرگتر از 15 هستند رو بخونم و در یک آرایه بریزم
شما می تونید مقادیر مورد نظر رو در یک کوئری هم بدست بیارید .
تابع زیر با پارامترهای نام جدول ونام فیلد مقادیر بزرگتر از 15 را در قالب یک آرایه برمی گرداند .
میتونید آنرا به یک متغیر واریانت منتسب کنید
Function GetFieldValuesInArray(TableName As String, FieldName As String)
Dim rs As Recordset, arr() As Integer, i As Integer
Set rs = CurrentDb.OpenRecordset("SELECT " & FieldName & " FROM " & TableName & " WHERE " & FieldName & " > 15")
rs.MoveLast: rs.MoveFirst
ReDim arr(rs.RecordCount - 1)
Do Until rs.EOF
arr(i) = rs(0)
i = i + 1
rs.MoveNext
Loop
GetFieldValuesInArray = arr
End Function
مثال:
myVar = GetFieldValuesInArray("MyTableName", "MyFieldName")
با تشکر از شما
دوست گرامی کار این دو کد چیه ؟
rs.MoveLast
rs.MoveFirst
میدونم رکوردها رو به اولین رکورد و آخرین رکورد میبره ولی اگر در تابع نباشه هم باز کار به درستی انجام میشه
سلام
اول بعد از خط سوم یک خط اضافه کنید :
If rs.RecordCount=0 then Exit Function
چون در صورت عدم وجود رکورد درجدول باعث RunTime Error میشه .
در مورد سوال تان قبل وبعد از کدهای فوق عبارت Debug.Print rs.RecordCount رو تایپ کنید و بعد از صدا زدن تابع ببینید در Immediate Window چه مقادیری چاپ می شود .
معمولا اولین مقدار یک است و دومی تعداد واقعی رکوردها .
در بعضی از کوئریها درصورتی که از روش فوق استفاده نکنیم ،رکوردست فقط اولین رکورد را برمی گرداند .