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

Foksh

الخبراء
  • Posts

    2,378
  • تاريخ الانضمام

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

  • Days Won

    85

Community Answers

  1. Foksh's post in ادراج التواريخ والايام بطريقة معينة was marked as the answer   
    طبعاً الصورة من جدول اكسيل ، وانت تريدها في آكسيس ، صحيح ؟؟؟
    الفكرة التي كانت موجودة سابقاً في أحد مشاريعي مشابهة لطلبك ولكن دون استثناء اي يوم ، والبداية من أول يوم في السنة .
    الفكرة تم تعديلها بحيث تم انشاء نموذج يحتوي كومبوبوكس يحتوي ارقام السنوات ( 2020 ، 2021 ، 2022 ، ..... 2030 ) . وكود المديول التالي الذي يتم استدعائه في زر :-
     
    Public Sub GenerateDatesTbl() Dim db As DAO.Database Dim rs As DAO.Recordset Dim startDate As Date Dim endDate As Date Dim currentDate As Date Dim yearSelected As Integer Dim dayName As String Dim sqlCreateTable As String Dim activeForm As Form Dim tableExists As Boolean On Error Resume Next Set activeForm = Screen.activeForm On Error GoTo 0 yearSelected = Nz(activeForm!Tx_Years.Value, 0) If yearSelected = 0 Then MsgBox "يرجى اختيار السنة أولاً", vbExclamation, "تنبيه" Exit Sub End If startDate = DateSerial(yearSelected, 12, 21) endDate = DateSerial(yearSelected + 1, 12, 20) tableExists = False Set db = CurrentDb On Error Resume Next tableExists = Not IsNull(db.TableDefs("TempDates").Name) On Error GoTo 0 If Not tableExists Then sqlCreateTable = "CREATE TABLE TempDates (ID COUNTER PRIMARY KEY, " & _ "DayName TEXT(50), DateValue DATE)" db.Execute sqlCreateTable DoCmd.SelectObject acTable, TempDates, True End If Set rs = db.OpenRecordset("TempDates", dbOpenDynaset) db.Execute "DELETE FROM TempDates" currentDate = startDate Do While currentDate <= endDate dayName = Format(currentDate, "dddd") If dayName <> "Friday" And dayName <> "Sunday" Then rs.AddNew rs!dayName = dayName rs!DateValue = currentDate rs.Update End If currentDate = currentDate + 1 Loop rs.Close Set rs = Nothing Set db = Nothing MsgBox "تم إنشاء التواريخ بنجاح", vbInformation, "نجاح" End Sub حيث بعد الاستدعاء سيتم انشاء جدول افتراضي يحتوي 3 حقول ( حقل الترقيم التلقائي ، وحقل اسم اليوم ، وحقل تاريخ اليوم ) .
     
    وسلامتكم 
    والملف المرفق
    Insert Date.accdb
  2. Foksh's post in تعديل على كود بحث was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    جرب هذا الكود بعد التعديلات على زر الفلترة :-
    Private Sub Cm1_Click() Dim filterCondition As String Dim formattedDate As String filterCondition = "" If Not IsNull(Me.tx1) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If filterCondition = filterCondition & "nom = '" & Replace(Me.tx1, "'", "''") & "'" End If If Not IsNull(Me.tx2) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If formattedDate = "#" & Format(Me.tx2, "MM/DD/YYYY") & "#" filterCondition = filterCondition & "moveDate = " & formattedDate End If If filterCondition <> "" Then Me.Filter = filterCondition Me.FilterOn = True Else Me.FilterOn = False End If End Sub في الكود تم استخدام دالة Replace لتأمين النصوص في حقل tx1 ضد الأخطاء الناتجة عن علامات الاقتباس المفردة . وتنسيق التاريخ فقط .
     
    اما في الكود التالي ، فقط استخدمت تنسيق التاريخ ؛ وبدلاً من استخدام علامة الاقتباس المفردة ' لتطويق النصوص ، استخدمت علامتي اقتباس مزدوجتين """ لتجنب أي مشكلات ناتجة عن وجود اقتباسات مفردة داخل النصوص .
     
    Private Sub Cm1_Click() Dim filterCondition As String Dim formattedDate As String filterCondition = "" If Not IsNull(Me.tx1) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If filterCondition = filterCondition & "nom = """ & Me.tx1 & """" End If If Not IsNull(Me.tx2) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If formattedDate = "#" & Format(Me.tx2, "MM/DD/YYYY") & "#" filterCondition = filterCondition & "moveDate = " & formattedDate End If If filterCondition <> "" Then Me.Filter = filterCondition Me.FilterOn = True Else Me.FilterOn = False End If End Sub  
  3. Foksh's post in مساعدة في قواعد اجراءات التاخير في الحضور was marked as the answer   
    أخي @سامر محمود ,, بالنسبة للنقطة :-
    فحلها بسيط وهو أن تضع معيار في الاستعلام Delay report في حقل "وقت الحضور" = >#9:30:00 AM# .
    أما في هذه النقطة :-
     
    فتستطيع باستخدام الاستعلام ان تحصي عدد تكرارات التأخير لكل موظف ، وأن تطبق لائحة العقوبات التي تريدها . وفي هذه النقطة قمت بإضافة بإضافة العقوبات حسب عدد التكرارات و إضافة عقوبات جديدة تستطيع حذفها كيفما تريد ) 
    هذا الاستعلام يجلب لك الموظفين المتأخرين :-
    SELECT Att_Details.serial, Att_Details.[رقم الموظف], Att_Details.[اسم الموظف], Att_Details.[نوع الحركة], Att_Details.[تاريخ الحركة], Att_Details.[وقت الحضور], Att_Details.[وقت الانصراف], Att_Details.الفرق, Att_Details.الملاحظات FROM Att_Details WHERE Att_Details.[وقت الحضور] > #09:30:00 AM#; وهذا الاستعلام يقوم بعد تكرارات التأخير فقط :-
    SELECT Att_Details.[رقم الموظف], Att_Details.[اسم الموظف], Format(Att_Details.[تاريخ الحركة],"yyyy/mm") AS الشهر, Count(*) AS التكرار FROM Att_Details WHERE (((Att_Details.[وقت الحضور])>#12/30/1899 9:30:0#)) GROUP BY Att_Details.[رقم الموظف], Att_Details.[اسم الموظف], Format(Att_Details.[تاريخ الحركة],"yyyy/mm"); والإستعلام الأخير يقوم بعد التكرارات وبناءً عليها يطبق العقوبات :-
    SELECT Att_Details.[رقم الموظف], Att_Details.[اسم الموظف], Format(Att_Details.[تاريخ الحركة], "yyyy/mm") AS الشهر, COUNT(*) AS التكرار, IIf(COUNT(*) = 1, "إنذار", IIf(COUNT(*) > 1 AND COUNT(*) < 6, "ربع يوم", IIf(COUNT(*) > 5 AND COUNT(*) < 11, "نصف يوم", "خصم يوم"))) AS الإجراء FROM Att_Details WHERE Att_Details.[وقت الحضور] > #09:30:00 AM# GROUP BY Att_Details.[رقم الموظف], Att_Details.[اسم الموظف], Format(Att_Details.[تاريخ الحركة], "yyyy/mm");  
    والملف بعد التعديل :-
    Att - Copy.accdb
  4. Foksh's post in تعديل كود حذف مرفقات was marked as the answer   
    أخي @jo_2010 ، قمت بتعديل بسيط على ملفك ، وهو إضافة حقل جديد = PathPic في الجدول لتخزين المسار فيه بشكل صريح بدلاً من الطريقة التي يم فيها جلب مسار الملف لحذفه ،
    وأصبح الكود بعد تعديله في زر الحذف بالشكل التالي :-
    On Error GoTo HandleError Dim fileToDelete As String Dim response As VbMsgBoxResult Dim db As DAO.Database Dim sql As String Dim recordID As String Dim subFolderPath As String recordID = [Forms]![frm_sader_wared]![Pname].Value subFolderPath = CurrentProject.Path & "\AttachedFiles\" & recordID fileToDelete = Me.PathPic.Value If Not IsNull(fileToDelete) And Dir(fileToDelete) <> "" Then response = MsgBox("هل تريد حقاً حذف هذا الملف؟", vbYesNo + vbQuestion, "تأكيد الحذف") If response = vbYes Then Kill fileToDelete Set db = CurrentDb() sql = "DELETE FROM TblAttchedFiles WHERE id=" & Me.ID db.Execute sql, dbFailOnError On Error Resume Next RmDir subFolderPath On Error GoTo HandleError Me.Requery End If Else MsgBox "لا يوجد شئ لحذفه", vbExclamation, "خطأ" End If HandleExit: Exit Sub HandleError: Select Case Err.Number Case 94 MsgBox "لا يوجد شئ لحذفه", vbExclamation, "خطأ" Case Else MsgBox "خطأ رقم: " & Err.Number & vbNewLine & Err.Description, vbCritical, "خطأ" End Select Resume HandleExit  
    وهذا ملفك بعد التعديل
     
    base_s_w.accdb
  5. Foksh's post in هامش ربح متدرج حسب المبلغ الاصلى was marked as the answer   
    مشاركة مع المهندس @Moosak ، وتطبيقاً لفكرته بعين أخرى .
    قم بإنشاء مديول جديد ، والصق به الكود التالي مع تغيير القيم حسب حاجتك ..
    Public Function CalculateMargin(Amount As Double) As Double Select Case Amount Case Is <= 100 CalculateMargin = Amount * 0.05 Case 101 To 200 CalculateMargin = Amount * 0.1 Case 201 To 300 CalculateMargin = Amount * 0.15 Case 301 To 400 CalculateMargin = Amount * 0.2 Case 401 To 500 CalculateMargin = Amount * 0.25 Case 501 To 600 CalculateMargin = Amount * 0.3 Case 601 To 700 CalculateMargin = Amount * 0.35 Case 701 To 800 CalculateMargin = Amount * 0.4 Case 801 To 900 CalculateMargin = Amount * 0.45 Case Else CalculateMargin = Amount * 0.15 End Select End Function الآن من خلال استعلام تحديث ان كنت تريد تحديث قيمة الحقل "هامش الربح" في جدولك . أنشئ استعلام تحديث ( Update ) ، وقم باختيار الجدول "2025" ، ثم اختر الحقل الخاص بهامش الربح = "هامش الربح" ؛ الآن في خانة تحديث إلى ( Update To) سيتم استدعاء الدالة من المديول السابق :-
    CalculateMargin([Price]) والنتيجة :- يتم ضرب قيمة السعر في النسبة المئوية التي حددناها في المديول . وهذا مثال بملف مرفق على الفكرة ..
    Database1.accdb
     
  6. Foksh's post in اصلاح اخطاء برنامج فواتير الكهرباء was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    أخي الكريم @عبده الطوخى 1970 ، في زر البحث وفي نهاية الكود ، فقط اضف السطر التالي
    [Forms]![Frm_Data_entry]![Frm_Fatura_Main].[Form]![Net_Teams] = [Forms]![Frm_Data_entry]![Frm_Fatura_Main].[Form]![Total_Main_Meter] - [Forms]![Frm_Data_entry]![Frm_Fatura_Sub].[Form]![Total_Sub_Meter] وشوف النتيجة اذا صحيحة أو لأ 
  7. Foksh's post in ادراج قيمة من الجدول الرئيس وغير موجودة في الجدول الفرعي في الاستعلام المبني على الجدول الفرعي was marked as the answer   
    الآن تجري مباراة كرة قدم بين فريق المنتخب الأردني والمنتخب العراقي ، وأنا لست من متابعي كرة القدم ، ومتفرغ بانتظار انتهاء وقت العمل 
    هل هذه النتيجة المرجوة والمطلوبة ؟

     
    في الإستعلام Query2 فكرة بسيطة باستخدام IIF ، وهذا ما لا تريده . لكن في الاستعلام Query3 فكرة مختلفة باستخدام NZ كما يلي :-
    SELECT Table1.text1, Nz(Table2.text2,Table1.text2) AS text2 FROM Table1 LEFT JOIN Table2 ON Table1.txt_id = Table2.txt_id2 WHERE (((Table2.id)=(SELECT MAX(T2.id) FROM Table2 AS T2 WHERE T2.txt_id2 = Table1.txt_id) Or (Table2.id) Is Null));  
    Database2.accdb
     
  8. Foksh's post in مطلوب اظهار القيمة العليا في كل سجل مرتبط was marked as the answer   
    قمت بإضافة الحقل id من الجدول Table2 في الاستعلام ، و استخدمت المعيار التالي
     
    (SELECT MAX(T2.id) FROM Table2 AS T2 WHERE T2.txt_id2 = Table1.txt_id) وقد استخدمت دالة من دوال التجميع 
     
    المرفق مع الاستعلام الجديد "Query2" للوضوح فقط
     
    Database1.accdb
     
  9. Foksh's post in ارجوكم المساعدة في اذن تحويل بين المخازن was marked as the answer   
    أخي سامر ، دائماً ما نوجه الأخوة الذين يصادفهم مشاكل ألى ضرورة بناء الجداول بشكل سليم وصحيح ، وفي حالة مشروعك لا يسعني إلا تقديم المساعدة في الجزء الأول فقط .
    التعديل الذي رأيته صحيحاً بالنسبة لي ما يلي :-
    مصدر بيانات الكومبوبوكس المحول منه = رقم المخزن1 = سليم مع إضافة كود لتحديث الكومبوبوكس المحول اليه ( التوضيح لاحقاً )
    مصدر بيانات الكومبوبوكس المحول اليه = رقم المخزن المحول اليه = مع إضافة شرط لإستعلام مصدر بياناته بحيث تم إضافة شرط في الحقل رقم المخزن كالآتي :-
    <>[Forms]![نموذج1]![المحول منه] بحيث يتم عرض المخازن التي ليست في المخزن المحول منه .
     
    الملف بعد التعديل
    Transfer (1).accdb
     
     
    وأضف على ما سلف ، هذا استعلام يعطيك اجمالي الكمية الواردة والمنصرفة لكل صنف حسب المخزن ، وطبعاً الشروط تستطيع إدارتها كما هي حاجة مشروعك ، قم بإنشاء استعلام جديد وألصق الكود التالي فيه ، واختر المخزن 1 أو 2
     
    SELECT [حركة صنف].[رقم الصنف], Sum([حركة صنف].[الكمية الواردة]) AS إجمالي_الواردة, Sum([حركة صنف].[الكمية المنصرفة]) AS إجمالي_المنصرفة, الاصناف.[اسم الصنف] FROM الاصناف INNER JOIN [حركة صنف] ON الاصناف.[كود الصنف] = [حركة صنف].[رقم الصنف] WHERE ((([حركة صنف].[رقم المخزن2])=[Forms]![نموذج1]![المحول منه])) GROUP BY [حركة صنف].[رقم الصنف], الاصناف.[اسم الصنف];  
  10. Foksh's post in مساعدة في إنشاء نموذج تنبيهات was marked as the answer   
    هكذا ؟؟
    base_TN.accdb
  11. Foksh's post in اظهار بيانات الفورم في نتيجة طالب was marked as the answer   
    العفو يا صديقي ، إذا انتهت مشكلتك ووجدت الحل ، قم بإغلاق الموضوع باختيار افضل اجابة 🙏
  12. Foksh's post in ازاى انقل قيمة حقل من فورم الى اخر was marked as the answer   
    اخي الكريم ، اذا كان هدفك هو فتح النموذج بشرط السجل المحدد :-
    DoCmd.OpenForm "calculated_frm", , , "CustomerID = " & Me!CustomerID او ، قم بالتوضيح كونك قمت بتعديل طلبك في المشاركة الأولى 
  13. Foksh's post in عرض تقرير حسب فئات العمر للعمال was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ,,
    بدايةً قمت بتغيير بعض اسماء العناصر من العربية الى الانجليزية ، ولكنها ليست ذات صلة بالحل .
    اجعل هذا الاستعلام مصدر سجلات التقرير
    SELECT tbl_info_fonctionnaire.grade_poste_actuel, Sum(IIf(tbl_info_fonctionnaire.sex="ذكر" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=0 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<30,1,0)) AS عدد_الذكور_أقل_من_30, Sum(IIf(tbl_info_fonctionnaire.sex="أنثى" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=0 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<30,1,0)) AS عدد_الإناث_أقل_من_30, Sum(IIf(tbl_info_fonctionnaire.sex="ذكر" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=30 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=40,1,0)) AS عدد_الذكور_بين_30_و_40, Sum(IIf(tbl_info_fonctionnaire.sex="أنثى" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=30 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=40,1,0)) AS عدد_الإناث_بين_30_و_40, Sum(IIf(tbl_info_fonctionnaire.sex="ذكر" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=41 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=50,1,0)) AS عدد_الذكور_بين_41_و_50, Sum(IIf(tbl_info_fonctionnaire.sex="أنثى" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=41 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=50,1,0)) AS عدد_الإناث_بين_41_و_50, Sum(IIf(tbl_info_fonctionnaire.sex="ذكر" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=51 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=55,1,0)) AS عدد_الذكور_بين_51_و_55, Sum(IIf(tbl_info_fonctionnaire.sex="أنثى" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=51 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=55,1,0)) AS عدد_الإناث_بين_51_و_55, Sum(IIf(tbl_info_fonctionnaire.sex="ذكر" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=56 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=59,1,0)) AS عدد_الذكور_بين_56_و_59, Sum(IIf(tbl_info_fonctionnaire.sex="أنثى" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=56 And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())<=59,1,0)) AS عدد_الإناث_بين_56_و_59, Sum(IIf(tbl_info_fonctionnaire.sex="ذكر" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=60,1,0)) AS عدد_الذكور_أكبر_من_60, Sum(IIf(tbl_info_fonctionnaire.sex="أنثى" And DateDiff("yyyy",tbl_info_fonctionnaire.date_naissance,Date())>=60,1,0)) AS عدد_الإناث_أكبر_من_60, Count(IIf(tbl_info_fonctionnaire.sex="أنثى",1,Null)) AS عدد_الإناث_حسب_الدرجة, Count(*) AS المجموع_الكلي FROM tbl_info_fonctionnaire GROUP BY tbl_info_fonctionnaire.grade_poste_actuel; الملف بعد التعديل
    base_S - Copy.accdb
     
     
    اعتذر ، لم أر تعليق الأستاذ @ابو البشر ، ولكن له الأصل في حق الإجابة 
    كنت في الصفحة ولم اقم بعمل تحديث لها قبل الرد أثناء كتابة الاستعلام والتجارب عليه 
  14. Foksh's post in مشكلة مع كود سكانر was marked as the answer   
    حاول استخدام مكتبة WIA (Windows Image Acquisition) التي قد تكون متوافقة مع سكانر من نوع الـ HP
  15. Foksh's post in كيف يمكن تلوين صف باكملة فى النموذج الفرعى باى لون ـ عند التركيز على اى عمود was marked as the answer   
    إذاً يا صديقي ، الخطوات يا صديقي كالآتي ..
    قمت بإنشاء مربع نص غير منضم ومخفي اسميته txtCurrentID ، وفي حدث في الحالي On Current للنموذج الفرعي ، قمت بوضع هذا السطر البسيط :-
    Me.txtCurrentID = Me.itemcod لجعل قيمة مربع النص هذا في كل صف = قيمة مربع النص itemcod .
    الآن قمت بتحديد جميع مربعات النص في النموذج الفرعي التي اريد ان يتم تغيير خلفيتها وفي التنسيق الشرطي لها ، قمت بإضافة شرط جديد
    Expression Is : [txtCurrentID]=[itemcod]
    واخترت لون الخلفية للمربعات كما اريد :-

     
    والنتيجة في الملف المرفق :-
    تلوين الفرعى.accdb
     
  16. Foksh's post in مساعدة في جمع حقل حسب نوع الحركة was marked as the answer   
    أخي سامر ، ارجو منك مستقبلاً أن تركز في طبيعة المعلومات التي تقدمها لنا .
    ففي المشاركة الأولى كان النموذج اسمه "الحركة" ، وهو بعد ارسالك للمرفق يقوم بفتح التقرير "حركة حالية" من خلال زر "الطباعة" . وبعد ارسالك للكود التالي :-
    توضح بعد المرفق انك قفزت لموضوع آخر مختلف في نموذج آخر وتقرير آخر ..
     
    على العموم بالنسبة للطلب الأخير وهو بخصوص الكود ؛ فقد تم تصويب الكود بوضعه في المكان الصحيح - وليس في حدث عند تحميل التقرير ، ودون الإعتماد على مربع النص "نوع الحركة" في التقرير نفسه ؛ بل بالقائمة المنسدلة "نوع الحركة" من النموذج "التقرير" - إلى الحدث عند التنسيق للقسم الموجود فيه المربعين ( w , m ) .
     
    المرفق بعد التعديل .
     
    الخزينة test.accdb
  17. Foksh's post in طلب : فلترة وفرز البيانات was marked as the answer   
    اخونا الكريم @samyegypt1 ، قرأت طلبك أكثر من مرة محاولاً فهم طلبك ، إلا انني وجدت في نقاط طلبك نقص في المعلومات في معظمها . وأعتقد أن حال من مر من هنا هو كحالي .
    فأرجو أن تمنحنا تفصيلاً أكثر لكل نقطة منفصلة بشكل واضح حتى تحصل على طلبك في الحلول تبحث عنها 🤗 .
  18. Foksh's post in مشكلة عدم تطاببق نتائج البحث في النموذج الفرعي او التقرير was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته..
     
    مشاركة و إضافة لما تفضل به معلمي الجليل الأستاذ أبو خليل ، جرب حصر المعيار بعلامتي تنصيص ، كالآتي :-
     
    If Not IsNull(Me.Mo) Then varFilter = (varFilter + " AND ") & "[Mo] = " & Me.Mo End If جرب وأخبرنا بالنتيجة 😇
  19. Foksh's post in مساعدة في فتح قاعدة بيانات was marked as the answer   
    قد يكون مفتاح الشيفت محمي ،
    اذا قاعدة البيانات بصيغة Accde أو Mde فلاااااااا تتعب نفسك في البحث عن حل
    أما إذا كانت قاعدة البيانات بصيغة Accdb أو Mdb فهناك عدة طرق . منها إنشاء قاعدة بيانات جديدة واستيراد المكونات لها ، وإذا طلب منك كلمة مرور لقاعدة البيانات فاكتب الباسوورد الذي تملكه.
    غير ذلك.......... ليس لي دخل 😅
  20. Foksh's post in تقسيم مديونية عملاء الى مدين ودائن was marked as the answer   
    من خلال استعلام جديد ، اختر الجدول ، وبالافتراض ان الحقل اسمه "رصيد" اضف التعبيرات الثلاثة التالية في الحقول :-
     
    دائن: IIf([رصيد] < 0, [رصيد], Null) مدين: IIf([رصيد] > 0, [رصيد], Null) منتهى: IIf([رصيد] = 0, [رصيد], Null) جرب واخبرني بالنتيجة
  21. Foksh's post in الترصيد بحسب اسم العميل was marked as the answer   
    المهم انك اكتشفت و وجدت الحل 
  22. Foksh's post in مساعدة في التواريخ was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ،،
    استخدم الكود التالي لتقسيم التاريخ الحالي وتوزيعه الى مربعات النص :-
     
    Private Sub oktxt_Click() Me.yn.Value = Year(Date) Me.mn.Value = Month(Date) Me.dn.Value = Day(Date) Me.mt.Value = Format(Date, "mmmm") Me.dt.Value = Format(Date, "dddd") End Sub  
    ملفك بعد التعديل : time.accdb
  23. Foksh's post in هل هنالك دالة في استعلامات الاكسس يعطي الفرق بين تاريخين 360 يوم بدلا من 365 يوم في كل سنة was marked as the answer   
    أعتقد أنه يمكنك ذلك ، من خلال الكود التالي ، قم بالتجربة والرجوع بالنتيجة ( لأنني لا استوعب فكرة أم تكون السنة 360 ، أو اعتبار أن جميع الشهور 30 يوم  ) 
     
    Function DateDiff360(date1 As Date, date2 As Date) As Long Dim monthsDiff As Long monthsDiff = DateDiff("m", date1, date2) Dim daysDiff As Long daysDiff = DateDiff("d", DateAdd("m", monthsDiff, date1), date2) DateDiff360 = monthsDiff * 30 + daysDiff End Function ويتم الإستدعاء كالتالي :-
    Dim daysDifference As Long daysDifference = DateDiff360([Date1], [Date2])  
     
  24. Foksh's post in تغيير اسم تقرير ( pdf او ورد ) الذي يتم تصديرة الى قيمة (لمتغير او حقل ) مع تاريخ والوقت was marked as the answer   
    تفضل يا صديقي ،، التعديل الجديد :-
     
    Private Sub ExportReport(formatType As String, userName As String) On Error Resume Next Dim fileName As String Select Case formatType Case "PDF" fileName = userName & " - " & Format(Now(), "yyyy-mm-dd") & " " & Format(Now(), "hh nn AM/PM") & ".pdf" Case "RTF" fileName = userName & " - " & Format(Now(), "yyyy-mm-dd") & " " & Format(Now(), "hh nn AM/PM") & ".doc" Case "Excel" fileName = userName & " - " & Format(Now(), "yyyy-mm-dd") & " " & Format(Now(), "hh nn AM/PM") & ".xls" End Select Dim filePath As String With Application.FileDialog(2) .Title = "اختر موقع الحفظ" .AllowMultiSelect = False .InitialFileName = fileName If .Show = -1 Then filePath = .SelectedItems(1) Else Exit Sub End If End With Dim outputFormat As Variant Select Case formatType Case "PDF" outputFormat = acFormatPDF Case "RTF" outputFormat = acFormatRTF Case "Excel" outputFormat = acFormatXLS End Select DoCmd.OutputTo acOutputReport, namerpts, outputFormat, filePath, True, , , acExportQualityPrint End Sub  
    الملف بعد التعديل :- (  شريط طباعة.accdb  )
  25. Foksh's post in اظهار اخر قيمة فى النموذج الفرعى was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ،،
    فقط استبدل مصدر سجلات النموذج الفرعي ، بالإستعلام التالي ( SQL ) :-
    SELECT s10.g10s1, s10.g1s1, s10.g1s29, s10.g1s30 FROM s10 WHERE (((s10.g1s1)=[Forms]![copy2]![g1s1]) AND ((s10.g1s30)=(SELECT MAX(g1s30) FROM s10 WHERE g1s1 = [Forms]![copy2]![g1s1] ))); حيث تم اضافة شرطين للإستعلام دون تغيير أو تعديل أي شيء في تصميمك ، ولكني أنصحك بالإبتعاد عن المسميات المحجوزة في آكسيس مثل Copy لإنه اسم إجراء في آكسيس ؛ وهذا سيلافيك حدوث أخطاء ومشاكل في المستقبل .
     
    ملفك بعد التعديل : (     copy.accdb     )
×
×
  • اضف...

Important Information