اذهب الي المحتوي
أوفيسنا

Foksh

أوفيسنا
  • Posts

    4643
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    204

كل منشورات العضو Foksh

  1. وعليكم السلام ورحمة الله وبركاته ,, كمشاركة لي خارج قوقعتي في قسم الآكسيس ، استخدم الدالة LEFT ، في الخلية D1 حسب مثالك ، وسينتج عن ذلك رقم مكون من 6 خانات إن كان هذا طلبك , =LEFT(A1&"",2) & LEFT(B1&"",2) & LEFT(C1&"",2)
  2. 🙄
  3. وعليكم السلام ورحمة الله وبركاته .. باعتقادك هل هذه الجملة كافية لتوضيح الحقول المطلوب جمع قيمها في سجل واحد ؟؟؟ أضف إلى ذلك أيضاً ، جداولك الثلاثة تحتوي 64 حقل تقريباً بدون اي سجل !!!!!!!!! أيضاً ما الشرط الذي سيتم على أساسه المحاولة في فهم طلبك وإيجاد حل له ؟؟؟؟؟؟؟؟ اين النموذج ؟؟؟؟ هذا يعني انك ستحتاج تقرير أيضاً !!!! شكراً لك سعة صدرك ، متأملاً منك تصويب الوضع السابق بشرح كافي وافي شافي وإدراج سجلات متعددة على الأقل 5 ، ولا تقم بوضع بيانات حساسة وخاصة طبعاً وبيانات حقيقية ( أسماء ، أرقام هاتف ، ,,, إلخ ) .
  4. ما شاء الله ، تحديث جميل للجزئية الهامة عند كتابة جمل SQL ، جزاكم الله كل خير مهندسنا الغالي
  5. قد تكون سهواً عند تعديل الاستعلام وخرجت تسلسلاً mgmo1 > mgmo2 .... .
  6. وعليكم السلام ورحمة الله وبركاته .. أهلاً بك معنا في عالمنا المتواضع بدايةً .. ونرجو أن تجد الفائدة والمعلومة الصحيحة هنا .. أحب أن ألفت انتباهك إلى ضرورة الشرح الوافي الكافي لطلبك بشكل يسهل فهمه على من يقرأ موضوعك ومشاركتك هنا . ولهذا اعتقد أن الكثيرين مروا بموضوعك ولم تجد أي تعليق لأن الطلب غير مفهوم من ناحية المبدأ . حيث لم تقم بإدراج صور أو ملف مرفق يوضح مشكلتك على أرض الواقع أخي الكريم .. أشكرك سعة صدرك ورحابته ، آملاً منك الإفصاح بالتوضيح حتى لو كان الموضوع يستحق 100 سطر , فلا تبخل علينا بقراءة كلماتك .
  7. تفضل ملفك بعد التطبيق Lists.accdb
  8. مشاركةً مع أخي الأستاذ @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
  9. حبيبي يا بشار ، الله يسعد قلبك ويهنيك ..
  10. صديقي @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
  11. حبيبي يا بشار ، الله يسعدك ، الحمد لله بخير .. انت اللي مختفي يا زلمة .. جرب هذا التعديل بحيث انه يمر على كل السجلات ، طبعاً لم يتم تعديل اي فكرة من الاستعلامات الـ 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
  12. وعليكم السلام ورحمة الله وبركاته أخي بشار .. بعد تجربة المرفق ، يتم انقاص قيمة الكمية من السجل الأول فقط في ملفك المرفق .. أو يمكنك التوضيح اكثر ليتم فهم المطلوب بشكل جيد عن القيمة المطلوب انقاصها من السجل الأول !!!!
  13. بعد إذن معلمي الفاضل @ابوخليل ، قمت بدمج الإستعلامين كما فعلت في السابق ، مع إضافة شرطين ( الفصل والصف ) . أخي @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); واجعله مصدر سجلات التقرير السابق نفسه ، وجرب النتيجة .
  14. وعليه ، "قضي الأمر الذي فيه تستفتيان" وعليه تم الحل بالتعديل الذي أشار إليه أستاذي الفاضل ( أساس الموضوع ) 😇 .
  15. وعليكم السلام ورحمة الله وبركاته ، أخي الكريم ، ودون العبث في تأسيس الإستعلامات الرئيسية لديك التي قام بها معلمي الفاضل @ابوخليل والتي هي أساس النجاح الذي وصل إليه المشروع الى هذه اللحظة ، سأقوم بانشاء استعلام جديد وسأفترض تسميته = 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
  16. المشروع بحاجة الى اعادة بناء ، وخصوصاً موضوع الجداول والعلاقة فيما بينها ، ثم النقطة المتكررة دائماً وهي الإبتعاد عن الأسماء المحجوزة لآكسيس من أسماء الحقول والجداول والعناصر ... إلخ الآن النقطة الثانية انظر الصورة التالية لمصدر سجلات النموذج :- ما علاقة الجداول Data,Location_all,Location في النموذج . هذا أولاً .. ثانياً هل الجدول Data (وهو اسم محجوز لآكسيس) ، يتم تخزين قيم من النموذج الى هذا الجدول ؟؟؟؟؟ إن كان لا !! فلا حاجة لوجوده كمصدر سجلات ( من وجهة نظري ) لجلب البيانات منه . ومن هنا سكفيك وجود الجدول Fawri فقط كمصدر لتخزين القيم من النموذج مع ضبط الحدث بعد التحديث بحيث عند اختيار اسم الموظف يتم ادراج القيم الخاصة به الى مربعات النص في النموذج . هذه وجهة نظري ( الغير ملزمة طبعاً ودائماً ) .. مرفق لفكرة بدائية بسيطة لجلب القيم للموظف الذي تم اختياره من الكومبوبوكس جربه وأخبرني بالنتيجة .. Pepsi.zip
  17. وعليكم السلام ورحمة الله وبركاته ، افتح موضوع جديد اخي الكريم ، وان شاء الله بتلقى إجابة لسؤالك .
  18. تم الحل في هذا الموضوع : البحث عن تكرار في فترة زمنية سابقة ب 03 شهور
  19. العفو أخي الكريم @2saad
  20. العفو أخي الكريم ,,
  21. جميل جداً .. اذا تفضل هذا الاستعلام بعد ضبط الفرز بشكل تصاعدي للتاريخ 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.[كود الطرف];
  22. حسناً أخي @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
  23. العفو أخي الكريم ،، ما عليك فعله هو كالآتي ، تحديد مربعات النص من 1 - 12 ، ثم التوجه الى التنسيق الشرطي ، وتقوم بإضافة شرطين كالآتي :- التطبيق في المرفق التالي :- Data19.zip
  24. وهذا هو الاستعلام أخي الكريم :- 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.[حجم المادة] )))); رغم أنني سأكرر عليك ما تم الإشارة إليه في الكثير من المواضيع ، وهي استعمالك للأسماء العربية في الحقول و أسماء الجداول ... إلخ من مكونات قاعدة البيانات .
×
×
  • اضف...

Important Information