-
Posts
4579 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
203
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
قد تكون سهواً عند تعديل الاستعلام وخرجت تسلسلاً mgmo1 > mgmo2 .... .
-
وعليكم السلام ورحمة الله وبركاته .. أهلاً بك معنا في عالمنا المتواضع بدايةً .. ونرجو أن تجد الفائدة والمعلومة الصحيحة هنا .. أحب أن ألفت انتباهك إلى ضرورة الشرح الوافي الكافي لطلبك بشكل يسهل فهمه على من يقرأ موضوعك ومشاركتك هنا . ولهذا اعتقد أن الكثيرين مروا بموضوعك ولم تجد أي تعليق لأن الطلب غير مفهوم من ناحية المبدأ . حيث لم تقم بإدراج صور أو ملف مرفق يوضح مشكلتك على أرض الواقع أخي الكريم .. أشكرك سعة صدرك ورحابته ، آملاً منك الإفصاح بالتوضيح حتى لو كان الموضوع يستحق 100 سطر , فلا تبخل علينا بقراءة كلماتك .
-
تفضل ملفك بعد التطبيق Lists.accdb
-
مشاركةً مع أخي الأستاذ @kanory ، تعديل بسيط Private Sub Form_Load() Dim obj As AccessObject, f As String, r As String For Each obj In CurrentProject.AllForms If LCase(obj.Name) <> "main" Then r = r & "نموذج:" & obj.Name & ";" Next f = Dir(CurrentProject.Path & "\*.xls*") Do While f <> "": r = r & "ملف:" & f & ";": f = Dir(): Loop Me.مربع_تحرير_وسرد1.RowSourceType = "Value List" Me.مربع_تحرير_وسرد1.RowSource = Left(r, Len(r) - 1) End Sub Private Sub مربع_تحرير_وسرد1_AfterUpdate() On Error GoTo ErrorHandler If Left(Me.مربع_تحرير_وسرد1, 6) = "نموذج:" Then DoCmd.OpenForm Mid(Me.مربع_تحرير_وسرد1, 7) Else With CreateObject("Excel.Application") .Visible = True .Workbooks.Open CurrentProject.Path & "\" & Mid(Me.مربع_تحرير_وسرد1, 5) End With End If Exit Sub ErrorHandler: MsgBox "حدث خطأ: " & Err.Description, vbExclamation End Sub
-
حبيبي يا بشار ، الله يسعد قلبك ويهنيك ..
-
صديقي @Bshar ، جرب هذا التعديل عندك .. Private Sub e2_Click() Dim ctl As Form Set ctl = Me.dff.Form Dim foundValid As Boolean foundValid = False With ctl.RecordsetClone .MoveFirst Do While Not .EOF If ctl.Controls("hgf").Value = True Then foundValid = True Exit Do End If .MoveNext Loop End With If Not foundValid Then MsgBox "لم يتم إدخال أدوية - سيتم الخروج الآن", vbExclamation, "إدارية" DoCmd.Close Exit Sub End If Dim strSQL As String strSQL = "UPDATE [" & ctl.RecordSource & "] " & _ "SET [qunt_x] = Nz([qunt_a], 0) - Nz([qunt_out], 0) " & _ "WHERE [efkt_b] = True" DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.OpenQuery "efkt_aa", acViewNormal DoCmd.OpenQuery "del_efktc", acViewNormal DoCmd.OpenQuery "ry", acViewNormal DoCmd.SetWarnings True Me.dff.Requery Me.Requery Me.Refresh MsgBox "تم بنجاح", vbInformation, "إدارية" DoCmd.Close DoCmd.OpenForm "efkt" End Sub
-
حبيبي يا بشار ، الله يسعدك ، الحمد لله بخير .. انت اللي مختفي يا زلمة .. جرب هذا التعديل بحيث انه يمر على كل السجلات ، طبعاً لم يتم تعديل اي فكرة من الاستعلامات الـ 3 اللي انت عاملها .. Private Sub e2_Click() Dim i As Integer Dim ctl As Form Set ctl = Me.dff.Form Dim foundValid As Boolean foundValid = False For i = 0 To ctl.Recordset.RecordCount - 1 ctl.Recordset.AbsolutePosition = i If ctl.Controls("hgf").Value = True Then foundValid = True ctl.Controls("c4").Value = Nz(ctl.Controls("c1").Value, 0) - Nz(ctl.Controls("c3").Value, 0) End If Next i If Not foundValid Then MsgBox "لم يتم إدخال أدوية - سيتم الخروج الآن", vbExclamation, "إدارية" DoCmd.Close Exit Sub End If Me.dff.Requery DoCmd.SetWarnings False DoCmd.OpenQuery "efkt_aa", acViewNormal DoCmd.OpenQuery "del_efktc", acViewNormal DoCmd.OpenQuery "ry", acViewNormal DoCmd.SetWarnings True Me.Requery Me.Refresh Me.e2.Enabled = False MsgBox "تم بنجاح", vbInformation, "إدارية" DoCmd.Close DoCmd.OpenForm "efkt" End Sub
-
وعليكم السلام ورحمة الله وبركاته أخي بشار .. بعد تجربة المرفق ، يتم انقاص قيمة الكمية من السجل الأول فقط في ملفك المرفق .. أو يمكنك التوضيح اكثر ليتم فهم المطلوب بشكل جيد عن القيمة المطلوب انقاصها من السجل الأول !!!!
-
بعد إذن معلمي الفاضل @ابوخليل ، قمت بدمج الإستعلامين كما فعلت في السابق ، مع إضافة شرطين ( الفصل والصف ) . أخي @2saad انشئ استعلام جديد وألصق الكود التالي :- PARAMETERS [Forms]![frm_Reports]![ComboSaf] Short, [Forms]![frm_Reports]![termNum] Short; TRANSFORM IIf([Forms]![frm_Reports]![termNum]=1,First(qry_master.mgmo1),First(qry_master.mgmo2)) AS FirstOfmgmo SELECT qry_master.alsaf_Id, qry_master.draseDate, qry_master.Stucard, qry_master.Studentname, qry_master.fsl_id, qry_master.Stugalos, qry_master.StuSery, qry_master.gender, qry_Temp.vHodor, qry_Temp.alnesbah, qry_Temp.tgyeem1, qry_Temp.hala FROM qry_master LEFT JOIN qry_Temp ON qry_master.Stucard = qry_Temp.Stucard WHERE (((qry_master.alsaf_Id)=[Forms]![frm_Reports]![ComboSaf])) GROUP BY qry_master.alsaf_Id, qry_master.draseDate, qry_master.Stucard, qry_master.Studentname, qry_master.fsl_id, qry_master.Stugalos, qry_master.StuSery, qry_master.gender, qry_Temp.vHodor, qry_Temp.alnesbah, qry_Temp.tgyeem1, qry_Temp.hala PIVOT qry_master.madaNum In (1,2,3,4,5,6,7,8,9,10,11,12,13,14); واجعله مصدر سجلات التقرير السابق نفسه ، وجرب النتيجة .
-
وعليه ، "قضي الأمر الذي فيه تستفتيان" وعليه تم الحل بالتعديل الذي أشار إليه أستاذي الفاضل ( أساس الموضوع ) 😇 .
-
وعليكم السلام ورحمة الله وبركاته ، أخي الكريم ، ودون العبث في تأسيس الإستعلامات الرئيسية لديك التي قام بها معلمي الفاضل @ابوخليل والتي هي أساس النجاح الذي وصل إليه المشروع الى هذه اللحظة ، سأقوم بانشاء استعلام جديد وسأفترض تسميته = qry_DarajatData مبنياً على فكرة دمج الإستعلامين ( qry_drjat_term1 و qry_drjat_term2 ) في استعلام واحد يحقق الغاية التي تريدها ، وسيكون كود SQL لهذا الاستعلام الجديد كالآتي :- PARAMETERS [Forms]![frm_Reports]![ComboSaf] Short, [Forms]![frm_Reports]![termNum] Short; TRANSFORM IIF([Forms]![frm_Reports]![termNum]=1, First(qry_master.mada1), First(qry_master.mada2)) AS FirstOfmada SELECT qry_master.alsaf_Id, qry_master.draseDate, qry_master.Stucard, qry_master.Studentname, qry_master.fsl_id, qry_master.Stugalos, qry_master.StuSery, qry_master.gender, qry_Temp.vHodor, qry_Temp.alnesbah, qry_Temp.tgyeem1, qry_Temp.hala FROM qry_master LEFT JOIN qry_Temp ON qry_master.Stucard = qry_Temp.Stucard WHERE (((qry_master.alsaf_Id)=[Forms]![frm_Reports]![ComboSaf])) GROUP BY qry_master.alsaf_Id, qry_master.draseDate, qry_master.Stucard, qry_master.Studentname, qry_master.fsl_id, qry_master.Stugalos, qry_master.StuSery, qry_master.gender, qry_Temp.vHodor, qry_Temp.alnesbah, qry_Temp.tgyeem1, qry_Temp.hala PIVOT qry_master.madaNum In (1,2,3,4,5,6,7,8,9,10,11,12,13,14); واجعل هذا الاستعلام الجديد مصدر سجلات التقرير rep_Kashf ولاحظ النتيجة ان كانت سليمة أم لا ,, مرفقك بعد التعديل Data19.zip
-
المشروع بحاجة الى اعادة بناء ، وخصوصاً موضوع الجداول والعلاقة فيما بينها ، ثم النقطة المتكررة دائماً وهي الإبتعاد عن الأسماء المحجوزة لآكسيس من أسماء الحقول والجداول والعناصر ... إلخ الآن النقطة الثانية انظر الصورة التالية لمصدر سجلات النموذج :- ما علاقة الجداول Data,Location_all,Location في النموذج . هذا أولاً .. ثانياً هل الجدول Data (وهو اسم محجوز لآكسيس) ، يتم تخزين قيم من النموذج الى هذا الجدول ؟؟؟؟؟ إن كان لا !! فلا حاجة لوجوده كمصدر سجلات ( من وجهة نظري ) لجلب البيانات منه . ومن هنا سكفيك وجود الجدول Fawri فقط كمصدر لتخزين القيم من النموذج مع ضبط الحدث بعد التحديث بحيث عند اختيار اسم الموظف يتم ادراج القيم الخاصة به الى مربعات النص في النموذج . هذه وجهة نظري ( الغير ملزمة طبعاً ودائماً ) .. مرفق لفكرة بدائية بسيطة لجلب القيم للموظف الذي تم اختياره من الكومبوبوكس جربه وأخبرني بالنتيجة .. Pepsi.zip
-
وعليكم السلام ورحمة الله وبركاته ، افتح موضوع جديد اخي الكريم ، وان شاء الله بتلقى إجابة لسؤالك .
-
تم الحل في هذا الموضوع : البحث عن تكرار في فترة زمنية سابقة ب 03 شهور
-
العفو أخي الكريم @2saad
-
العفو أخي الكريم ,,
-
جميل جداً .. اذا تفضل هذا الاستعلام بعد ضبط الفرز بشكل تصاعدي للتاريخ SELECT R.[تاريخ المستند], R.[نوع المستند], R.[رقم المستند], W.[اسم المادة ومواصفاتها], W.[الرقم الرمزي], IIf(R.[نوع المستند]='وارد مخزني',W.[الكمية رقما],Null) AS [كمية واردة], IIf(R.[نوع المستند]='صادر مخزني',W.[الكمية رقما],Null) AS [كمية مصروفة], (SELECT Sum(IIf(R2.[نوع المستند]='وارد مخزني', W2.[الكمية رقما], 0)) - Sum(IIf(R2.[نوع المستند]='صادر مخزني', W2.[الكمية رقما], 0)) FROM [راس الوارد] AS R2 INNER JOIN [اطراف الوارد] AS W2 ON R2.[كود المستند] = W2.[كود المستند] WHERE W2.[الرقم الرمزي] = W.[الرقم الرمزي] AND ( R2.[تاريخ المستند] < R.[تاريخ المستند] OR ( R2.[تاريخ المستند] = R.[تاريخ المستند] AND R2.[رقم المستند] < R.[رقم المستند] ) OR ( R2.[تاريخ المستند] = R.[تاريخ المستند] AND R2.[رقم المستند] = R.[رقم المستند] AND W2.[كود الطرف] <= W.[كود الطرف] ) ) ) AS [الرصيد التراكمي] FROM [راس الوارد] AS R INNER JOIN [اطراف الوارد] AS W ON R.[كود المستند] = W.[كود المستند] ORDER BY R.[تاريخ المستند], W.[الرقم الرمزي], R.[تاريخ المستند], R.[رقم المستند], W.[كود الطرف];
-
حسناً أخي @Ahmed_J ، قبل الشروع في تنفيذ فكرتك ، هل المطلوب تحقيقه بهذه النتيجة ؟؟؟ Query3 تاريخ المستند نوع المستند رقم المستند اسم المادة ومواصفاتها الرقم الرمزي كمية واردة كمية مصروفة الرصيد التراكمي 2025-05-06 وارد مخزني 46324 ورق A4 11111 10 10 2025-05-08 صادر مخزني 100 ورق A4 11111 1 9 2025-05-09 صادر مخزني 45 ورق A4 11111 5 4 2025-05-09 صادر مخزني 45 ورق A4 11111 3 1 2025-05-06 وارد مخزني 46324 ورق A3 22222 8 8 2025-05-09 صادر مخزني 45 ورق A3 22222 5 3
-
البحث عن تكرار في فترة زمنية سابقة ب 03 شهور
Foksh replied to RAIANESAMI's topic in قسم الأكسيس Access
العفو أخي الكريم .. -
العفو أخي الكريم ،، ما عليك فعله هو كالآتي ، تحديد مربعات النص من 1 - 12 ، ثم التوجه الى التنسيق الشرطي ، وتقوم بإضافة شرطين كالآتي :- التطبيق في المرفق التالي :- Data19.zip
-
البحث عن تكرار في فترة زمنية سابقة ب 03 شهور
Foksh replied to RAIANESAMI's topic in قسم الأكسيس Access
وهذا هو الاستعلام أخي الكريم :- SELECT t1.* FROM test AS t1 INNER JOIN (SELECT a.[رقم الزبون], a.[إسم المادة], a.[حجم المادة] FROM test AS a INNER JOIN ( SELECT [رقم الزبون], [إسم المادة], [حجم المادة], MAX([تاريخ الفاتورة]) AS MaxDate FROM test GROUP BY [رقم الزبون], [إسم المادة], [حجم المادة] ) AS b ON a.[رقم الزبون] = b.[رقم الزبون] AND a.[إسم المادة] = b.[إسم المادة] AND a.[حجم المادة] = b.[حجم المادة] WHERE a.[تاريخ الفاتورة] >= DateAdd("m", -3, b.MaxDate) GROUP BY a.[رقم الزبون], a.[إسم المادة], a.[حجم المادة] HAVING COUNT(*) > 1 ) AS t2 ON (t1.[حجم المادة] = t2.[حجم المادة]) AND (t1.[إسم المادة] = t2.[إسم المادة]) AND (t1.[رقم الزبون] = t2.[رقم الزبون]) WHERE (((t1.[تاريخ الفاتورة])>=DateAdd("m",-3,(SELECT MAX(x.[تاريخ الفاتورة]) FROM test AS x WHERE x.[رقم الزبون] = t1.[رقم الزبون] AND x.[إسم المادة] = t1.[إسم المادة] AND x.[حجم المادة] = t1.[حجم المادة] )))); رغم أنني سأكرر عليك ما تم الإشارة إليه في الكثير من المواضيع ، وهي استعمالك للأسماء العربية في الحقول و أسماء الجداول ... إلخ من مكونات قاعدة البيانات . -
هل تريد فعلاً العودة الى تلوين مربع النص حسب قيمته ؟؟؟؟ يعني اذا كان مربع النص 1 = أصفر = لون الخلفية أصفر !!!! واذا كان مربع النص 7 مثلاً = أزرق = لون خلفيته = أزرق !!!! نرجو منك التوضيح لأنك - واعذرني دون قصد - تفتقر الى الشرح المفهوم في معظم طلباتك وتكون عادة مبهمة وغير صريحة في تحديد المطلوب . بالنسبة الى طلبك وإن كان فعلاً ها ما تريده ، فأنا لن أعود بك الى ما كنت عليه سابقاً وسأجعلك تحاول تنفيذ ذلك من خلال التنسيق الشرطي فعلاً لمربعات النص المستهدفة في التلوين ,.
-
البحث عن تكرار في فترة زمنية سابقة ب 03 شهور
Foksh replied to RAIANESAMI's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته .. أخي الكريم ، في استعلامك ، تظهر النتائج بهذا الشكل :- استعلام1 ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة 1 2025-03-01 1001 سردين 1000غ 8 2025-03-01 1001 سردين 1000غ 12 2025-03-01 1006 جبن 500غ 13 2025-02-20 1006 جبن 500غ 14 2025-01-01 1006 جبن 500غ 15 2024-12-01 1006 جبن 500غ 16 2024-11-01 1006 جبن 500غ 17 2024-10-01 1006 جبن 500غ الآن كنوع من التوضح ، هل النتيجة التي تريدها = :- Query1 ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة 1 2025-03-01 1001 سردين 1000غ 2 2025-01-01 1002 سردين 100غ 3 2025-01-01 1003 اللحم 500غ 4 2025-09-01 1004 طماطم 1000غ 5 2025-01-01 1005 طماطم 500غ 6 2025-01-01 1006 مشروب عازي 1ا 8 2025-03-01 1001 سردين 1000غ 9 2025-01-01 1001 سردين 50غ 10 2025-04-01 1002 مشروب عازي 2ل 11 2025-02-01 1006 طماطم 500غ 12 2025-03-01 1006 جبن 500غ 13 2025-02-20 1006 جبن 500غ 14 2025-01-01 1006 جبن 500غ 15 2024-12-01 1006 جبن 500غ أم هل لك أن توضح بشكل أكبر بناءً على مثالك ما النتائج التي يجب أن تظهر لك ؟؟؟ أم هذه النتيجة :- Query2 ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة 1 2025-03-01 1001 سردين 1000غ 8 2025-03-01 1001 سردين 1000غ 12 2025-03-01 1006 جبن 500غ 13 2025-02-20 1006 جبن 500غ 14 2025-01-01 1006 جبن 500غ 15 2024-12-01 1006 جبن 500غ -
اخي احمد ، استثني حقل تاريخ آخر حركة فليس له علاقة في نتيجة الاستعلام 😅 . حتى حقل نوع آخر حركة لا يفيدك بشيء 😇 . فما يهمك هو الرصيد التراكمي النهائي. أما خلاف ذلك فأعتقد انني لم استوعب هدفك جيداً.