اذا الموضوع اسهل الان بوجود هذا الجدول المساعد
مباشرة وبدون اى اكواد ممكن عمل الاستعلام التالى
SELECT tbl1.user_id, tbl2.dateField
FROM tbl1, tbl2
WHERE (((tbl2.dateField) Between [tbl1].[startA] And [tbl1].[endA]))
ORDER BY tbl1.user_id, tbl2.dateField;
ممكن الجدول المساعد tbl2
يتم عمل البيانات بداخله ديناميكا ليحتوى على كل تواريخ العام منذ بداية العام الى نهايته مثلا من خلال الكود التالى
Public Sub PopulateDateTable(Optional ByVal dtmStartDate As Date = 0, Optional ByVal dtmEndDate As Date = 0)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim dtmDate As Date
Dim lngYearNow As Long
' الحصول على السنة الحالية
lngYearNow = Year(Date)
' تعيين القيم الافتراضية إذا لم يتم تمريرها
If dtmStartDate = 0 Then dtmStartDate = DateSerial(lngYearNow, 1, 1)
If dtmEndDate = 0 Then dtmEndDate = DateSerial(lngYearNow, 12, 31)
' التأكد أن التاريخين صالحين
If dtmStartDate > dtmEndDate Then
MsgBox "تاريخ البداية أكبر من تاريخ النهاية!", vbExclamation
Exit Sub
End If
Set db = CurrentDb
' مسح البيانات القديمة
db.Execute "DELETE FROM tbl2", dbFailOnError
' فتح الجدول للإضافة
Set rs = db.OpenRecordset("tbl2", dbOpenDynaset)
' ملء السجلات
For dtmDate = dtmStartDate To dtmEndDate
rs.AddNew
rs!dateField = dtmDate
rs.Update
Next dtmDate
' تنظيف الموارد
rs.Close
Set rs = Nothing
Set db = Nothing
MsgBox "تم توليد التواريخ من " & Format(dtmStartDate, "yyyy-mm-dd") & " إلى " & Format(dtmEndDate, "yyyy-mm-dd"), vbInformation
End Sub