اول باید یک تابع پابلیک بنویسین که شماره کارتن رو دریافت کنه و لیست پیوسته رو برگردونه
بعد در همون کوئری که روی شماره کارتن گروه بندی کردین از این تابع استفاده کنین
ببخشید امکانش هست روی فایل پیوست زحمتشو بکشین؟
چند مورد در فایل پیوستی هست که باید اصلاح کنین:
1- اسامی فیلدها رو فارسی انتخاب کردین - اینکار بعدها و بخصوص در کدنویسی باعث دردسر میشه.
اسامی باید حتما با حروف انگلیسی باشه بجاش میتونین از caption استفاده کنین.
2- تمام فیلدها از نوع string هست. مقادیر عددی باید رو باید در فیلد عدد ذخیره کنین.
3- فیلدهایی مثل شماره کارتن که بعدها باهاش کارهایی مثل گروهبندی و سورت دارین باید ایندکس بشن.
4- برای یک سری از کارها مثل همین موردی که اینجا هست از فیلد calculated استفاده کنین.
جدول اصلاح شده اینجوری میشه:
1.PNG
یک فیلد calculated به اسم ItemX اضافه کردم که در محاسبات بعدی راحتتر باشیم.
دقت کنید چون فرمت بندی استفاده میکنیم نوع فیلد باید حتما LONG TEXT و فرمت اون هم RICH TEXT باشه.
2.PNG
با این حساب جدول شما اینجوری میشه:
3.PNG
اگر دقت کنین نام کالا به رنگ قرمز و توپر هست تا بعدا که محتویات کنار هم میاد نتیجه خوانا باشه.
شما میتونین سلیقه خودتون رو بکار ببرین یا کلا فرمت بندی رو حذف کنین.
حالا میریم سروقت کد - یک ماجول بسازین و این کد رو درش کپی کنین:
Option Compare Database
Option Explicit
Dim RS As Recordset
Public Function BoxItems(ByVal BoxNumber As Long, _
Optional ByVal Separator As String = " / ") As String
On Error GoTo Error_Handler
Set RS = CurrentDb.OpenRecordset("SELECT ItemX FROM Boxes WHERE BoxNumber=" & BoxNumber)
If RS.EOF Then
BoxItems = ""
Else
BoxItems = RS(0)
RS.MoveNext
Do While Not RS.EOF
BoxItems = BoxItems + Separator + RS(0)
RS.MoveNext
Loop
End If
Exit Function
Error_Handler:
BoxNumber = "Error " & Err.Number & " : " & Err.Description
End Function
کد نکته خاصی نداره. تابعBoxItems شماره کارتن رو میگیره و یک لیست پیوسته از محتویات اون میسازه.فقط یک پارامتر اختیاری داریم که میتونین بعنوان جداکننده مقادیر ازش استفاده کنین.
بصورت پیشفرض از / استفاده کردیم.
در نهایت یک نکته لازم هست گفته بشه:
عملیات از این دست اگر تعداد رکوردها کم باشه و گزارش ها هم با فاصله زمانی زیاد نیاز باشه چندان مهم نیست وگرنه زمان محاسبه سربار زیادی داره.
اگر اینجور باشه باید تمام عملیات هنگام ورود دیتا انجام بشه تا گزارش ها سریع ساخته بشن.
واقعا باید تشکر کرد از شما
توضیحات کامل همراه با جزییات دقیق!
علاوه بر کمک به سرانجام رسیدن درخواست شروع کننده تاپیک، کلی مطالب دیگه هم آموزش داده میشه!
خداقوت