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

jjafferr

أوفيسنا
  • Posts

    9,755
  • تاريخ الانضمام

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

  • Days Won

    396

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

  1. وعليكم السلام 🙂 الطريقة الصحيحة هي ، بإعطاء الطالب رقم لا يتغير (حقل رقم الطالب) ، وحقل آخر للصف ، وكلما انتقل الطالب الى الصف التالي ، يمكنك اضافة رقم 1 الى الصف الحالي 🙂 خذها قاعدة: في قواعد البيانات ، وبما ان السرعة مطلوبة ، فإجعل لكل معلومة حقل خاص بها ، وهذا سيسهل عليك ربط الجداول بطريقة مباشرة كذلك.
  2. المنتدى به الكثير من المواضيع لجلب الوقت من الانترنت ، ولكن لم ارى موضوع لتوحيد تاريخ/وقت كمبيوترات الشبكة ، وهذا هو صلب الموضوع 🙂 قمت بإضافة شرح لسبب استخدامي لهذا الموضوع 🙂 جعفر
  3. السلام عليكم 🙂 لما يكون فيه مجموعة كمبيوترات تعمل على نفس البرنامج في الشبكة ، وتكون البيانات/الجداول سواء على السيرفر او على احد الكمبيوترات في الشبكة ، ولأنه تاريخ/وقت هذه الكمبيوترات يختلف من كمبيوتر الى آخر ، فهذا يعمل لنا اختلاف في قيمة وقت ادخال السجل ، من كبيوتر الى آخر. احد المؤسسات تشتغل على برنامج يستخدمه حوالي 6 اشخاص ، ويتم ادخال حوالي 2000 سجل يوميا ، والجدول فيه حقل رقم تلقائي ، وحقل التاريخ/الوقت وفيه قيمة افتراضية Now ، طبعا بالاضافة الى بقية الحقول. حقل الرقم التلقائي ما فيه اشكالية في تسلسل الارقام ، ولكن حقل التاريخ/الوقت لا يأخذ قيمة Now من السيرفر ، وانما يأخذه من الكمبيوتر الذي يعمل السجل ، واذا تاريخ/وقت اي من الكمبيوترات خطأ ، مما يعني انه من الصعب/المستحيل معرفة متى تم ادخال هذا السجل بوقته الصحيح مقارنة مع باقي السجلات. قد لا يشكل هذا مشكلة عند البعض ، ولكنه يشكل مشكلة ومعضله عندما تكون البيانات حساسة ومهمة ، ومعرفة من ادخل المعلومة و متى. توصلت الى الاستعانة بالدوال التالية ، واستعملها اول ما افتح البرنامج (ولمرة واحدة فقط) ، و اضع في المتغير Diff_Sec فرق التاريخ/الوقت بالثواني ، بين السيرفر والكمبيوتر ، ولما اضيف السجل اضيف قيمة هذا المتغير الى Now الكمبيوتر ، مما يعطي السجل وقت السيرفر ، وعليه تكون جميع السجلات تعمل على نفس التوقيت 🙂 اقوم بمناداة الدالة هكذا: call Get_Remote_PC_Time("\\192.168.100.88") Option Compare Database Option Explicit 'Fetch and display Net Remote Time Of Day from a 'remote Windows system. Supply a UNC hostname '(or a DNS name), or empty string for the local 'host's time and date. ' Private Const NERR_SUCCESS As Long = 0 Private Type TIME_OF_DAY_INFO tod_elapsedt As Long tod_msecs As Long tod_hours As Long tod_mins As Long tod_secs As Long tod_hunds As Long tod_timezone As Long tod_tinterval As Long tod_day As Long tod_month As Long tod_year As Long tod_weekday As Long End Type #If Win64 Or VBA7 Then Dim lngBufPtr As LongPtr Private Declare PtrSafe Function NetApiBufferFree Lib "netapi32" _ (ByVal lpBuffer As LongPtr) As Long Private Declare PtrSafe Function NetRemoteTOD Lib "netapi32" _ (UncServerName As Byte, BufferPtr As LongPtr) As Long Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pTo As Any, uFrom As Any, ByVal lSize As LongPtr) #Else Dim lngBufPtr As Long Private Declare Function NetApiBufferFree Lib "netapi32" _ (ByVal lpBuffer As Long) As Long Private Declare Function NetRemoteTOD Lib "netapi32" _ (UncServerName As Byte, BufferPtr As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pTo As Any, uFrom As Any, ByVal lSize As Long) #End If ' Public Diff_Sec As Double ' Public Function GetTOD(ByVal Server As String) As Date Dim bytServer() As Byte 'Dim lngBufPtr As Long Dim todReturned As TIME_OF_DAY_INFO bytServer = Trim$(Server) & vbNullChar If NetRemoteTOD(bytServer(0), lngBufPtr) = NERR_SUCCESS Then CopyMemory todReturned, ByVal lngBufPtr, LenB(todReturned) NetApiBufferFree lngBufPtr With todReturned GetTOD = DateAdd("n", _ -.tod_timezone, _ DateSerial(.tod_year, .tod_month, .tod_day) _ + TimeSerial(.tod_hours, .tod_mins, .tod_secs)) End With Else Err.Raise vbObjectError + 2000, _ "GetTOD", _ "Failed to obtain server time" End If End Function Public Function Get_Remote_PC_Time(txtServer As String) ' ' calling it: 'Get_Remote_PC_Time("\\192.168.100.88") ' Dim dtServerTime As Date 'Dim Diff_Sec As Double On Error Resume Next dtServerTime = GetTOD(txtServer) Diff_Sec = DateDiff("s", Now, dtServerTime) Debug.Print "Diff=" & Diff_Sec Debug.Print "Server=" & dtServerTime Debug.Print "Local ok= " & DateAdd("s", Diff_Sec, Now) ' If Err.Number <> 0 Then ' Debug.Print Err.Description ' Else ' Debug.Print CStr(dtServerTime) ' End If ' On Error GoTo 0 '' txtServer.SetFocus End Function . جعفر
  4. السلام عليكم 🙂 ضع هذا الملف مع ملف الاكسل "Unmanaged.xlsx" في نفس المجلد "D:\nw" ، وإلا ، فيجب تعديل المسار في الاستعلام qry_1_Excel_File (وهذا سيأخذ وقت لفتح الاستعلام 🙂) : استخدم الزر في النموذج ، حتى تعمل جدول جديد بإسم tbl_Data وبه بيانات الاكسل جاهزة لتحويلها الى اي جدول آخر ، او استعماله مباشرة في الاكسس ، ملاحظة ، يتم حذف الجدول tbl_Data ، ويتم عمله من جديد في كل مرة ، حتى نتأكد بأننا حصلنا على جميع حقول ملف الاكسل . 1569.as_Final.accdb.zip
  5. شكرا لك اخوي خالد على التجربة واخبارنا بذلك 🙂
  6. السلام عليكم اخوي خالد 🙂 هل اصبح التقرير اسرع من برنامجك السابق ، وخصوصا لما تنتقل بين الصفحات 😁 وهل اكملت تضبيط بقية حقول التقرير ؟
  7. السلام عليكم اخي بلال هل كان هذا طلبك؟
  8. سيدي الفاضل 🙂 يا ريت تقرأ الموضوع التالي: https://www.officena.net/ib/topic/113391-لا-تستعمل-dlookup-او-dsum-واخواتها-في-استعلام-،-واليك-البديل/ انت صحيح ما استعملت الامر في الاستعلام ، ولكنك استعملته في التقرير ، فيكون الموضوع ينطبق عليه ايضا 🙂 تم حذف جميع الكود الموجود في التقرير ehsa_sub_dor_New ، وتم عمل استعلام جديد room_list_New ، كمصدر بيانات للتقرير ، يقوم بالعملية كاملا. ما استطعت تكملة حقول التقرير (تعبت 😁) ، فرجاء اكملهم مثل الحقول اللي قبلها. 1578.1.تقرير احصاء.accdb.zip
  9. الاستعلام السابق ما كان يقبل اكتب فيه المعيار ، فاعدت كتابته ، وظهرت نتائج الاستعلام حسب تحديد مربع القائمة ، فاعتقدت بأن المشكلة انحلت 🙂 وعمل جميل من الشايب 🙂
  10. شكرا اخوي عمر 🙂 بس علشان الجميع يكون معانا على نفس الموجه ، هذه جميع بيانات الجداول والنماذج من جدول MSysObjects واللي فيها البيانات المطلوبة ، واللي على اساسها قام اخوي عمر بتصفية السجلات
  11. وعليكم السلام 🙂 وهل نتيجة جمع اجمالي هذه الارقام صحيحة ؟
  12. بس انا شايف اختلاف بين معيار الاستعلام ومعيار عدد الجداول ، فهل هناك سبب 🙄
  13. وعليكم السلام 🙂 اعدت عمل الاستعلام ، فجرب الآن لوسمحت 🙂 1577.رسم بياني.accdb.zip
  14. اخي الفاضل moho58 🙂 بعد متابعتي للمشاركات اعلاه ، وملاحظات اخي سامي الحداد ، فنصيحتي لك : رجاء اعادة صيغة سؤالك ، واعطنا امثلة عن اللي تريد حسب بيانات مرفقك ، يعني اكتب: - في النموذج abc ، - في الحقل qwe ، - لما اختار asd في الحقل qwe ، تظهر النتائج 1... و 2... و 3... - ولما اختار 2... ، يجب ان يظهر في الحقل zxc قيمة yhn وووو ويا ريت تدعم طلبك بالصور حسب الحاجة ، وتستطيع استعمال الاكسل او الوورد او برنامج الصور للشرح. رجاء اخذ من وقتك لعمل هذا ، وبعدها افتح موضوع جديد بجميع هذه التفاصيل ، حتى تكون فرصتك اكبر في استحواذ عدد اكبر من الاعضاء والخبراء 🙂 يُغلق هذا الموضوع
  15. وعليكم السلام 🙂 اخي الفاضل ، الكود عندك صحيح وما فيه اي مشكلة 😁 بس رجاء الانتباه الى ان نموذجك معمول لإدخال البيانات ، وليس لمعاينة البيانات السابقة : وانت لا ترى نتائج الكود ، لأن السجل ينتقل الى السجل التالي ، لهذا اعمل التغيير التالي في اعدادات نموذجك ، حتى ترى رقم السجل الذي انت عليه : .
  16. سيدي الفاضل ، الطريقة هذه لا تعمل التصفية ولا علاقة لها بالتصفية اصلا !! وهناك الكثير من الطرق ، منها : DoCmd.OpenReport "betweendates", acViewReport, , "days =#" & Me.start & "#" . ولكن ، انسى كل ما قلته اعلاه ، فمصدر بيانات تقريرك يعمل بنفس الطريقة التي عملتها لك في مشاركتي السابقة 😁
  17. نعم، البيانات موجودة في المرفق، ولكن ليس مثال عن طلبك 🙂 استغنيت عن فلتر النموذج ، ووضعت معيار التصفية في الاستعلام مصدر بيانات النموذج ، هكذا : . وعملت نفس المعيار في الاستعلام مصدر بيانات التقرير. 1575.1.exemple.accdb.zip
  18. السلام عليكم في دوال التغيير ، لا تعمل لها تنسيق عن طريق الامر Format ، فعندها يتحول متغير التاريخ الى نص ، والسبب هو انك قد تحتاج الى استعمال هذه الدالة مرة اخرى بتنسيق آخر. لذا قم بعمل التنسيق بعد جلب البيانات من الدالة. وامر CDate ليس مضمونا ان يحول النص الى تاريخ ، والامر الاصح هو DateSerial ، حتى لا يختلط الشهر باليوم . هكذا اصبحت دالة ToHijri : Option Compare Database Option Explicit Private CorctAdjustDay As Integer Private SavedCal As Integer Private d As Date Private s As String 'التحويل من التاريخ الميلادى للهجرى Public Function ToHijri(ByRef myData As String) 'إحضار القيمة العددية لفرق الأيام من جدول إعداد ضبط التاريخ الهجرى CorctAdjustDay = DLookup("[AdjustDay]", "tblAdjustHjriDate") 'ضبط التاريخ الميلادى بالزيادة أوالنقصان 'حسب القيمة العددية والتى تساوى التاريخ الهجرى 'myData = Trim(Format(DateAdd("d", CorctAdjustDay, myData), "dd/mm/yyyy")) myData = Trim(DateAdd("d", CorctAdjustDay, myData)) 'التحويل من التاريخ الميلادى للهجرى SavedCal = Calendar VBA.Calendar = 0 'd = CDate(myData) d = myData 'Hijri VBA.Calendar = 1 s = CStr(d) 'ToHijri = Format(s, "dd/mm/yyyy") ToHijri = s VBA.Calendar = SavedCal 'يتم استدعاء الموديول بالشكل التالى 'txt Hijri date = ToHijri(txt Milady date) End Function . وهكذا نناديها (لاحظ التنسيق يتم بعد مناداة الدالة) ، وهنا استخدم جدول tbl_Months لنحصل على الاسماء باللغة العربية : Private Sub Report_Load() On Error Resume Next DoCmd.ShowToolbar "Ribbon", acToolbarNo Dim Arabic_Month As String 'Georgian Arabic_Month = DLookup("[Months_Georgian]", "tbl_Months", "[Months_English]='" & Format(Date, "mmmm") & "'") Me.H_TEXT = ConArNum(Format(Date, "dd ")) & _ Arabic_Month & _ ConArNum(Format(Date, " yyyy م")) 'Hijri Me.txtHijriDate = ToHijri(Date) Arabic_Month = DLookup("[Months_Hijri]", "tbl_Months", "[Months_Number]=" & Month(Me.txtHijriDate)) Me.txtHijriDate = ConArNum(Format(Me.txtHijriDate, "dd ")) & _ Arabic_Month & _ ConArNum(Format(Me.txtHijriDate, " yyyy هـ")) End Sub . الدالة ConArNum هي لتحويل الارقام العربية الى ارقام هندية (نعم الارقام التي نستخدمها هي ارقام هندية) : Public Function ConArNum(ByVal strStringToConvert As String) As String ' 'https://www.vbforums.com/showthread.php?584388-Arabic-Numbers-display-on-one-machine-but-not-another&p=3609151&viewfull=1#post3609151 ' ' Convert the Arabic number to Indian ' On Error GoTo ErrorHandler strStringToConvert = Replace$(strStringToConvert, "0", ChrW$(1632)) strStringToConvert = Replace$(strStringToConvert, "1", ChrW$(1633)) strStringToConvert = Replace$(strStringToConvert, "2", ChrW$(1634)) strStringToConvert = Replace$(strStringToConvert, "3", ChrW$(1635)) strStringToConvert = Replace$(strStringToConvert, "4", ChrW$(1636)) strStringToConvert = Replace$(strStringToConvert, "5", ChrW$(1637)) strStringToConvert = Replace$(strStringToConvert, "6", ChrW$(1638)) strStringToConvert = Replace$(strStringToConvert, "7", ChrW$(1639)) strStringToConvert = Replace$(strStringToConvert, "8", ChrW$(1640)) strStringToConvert = Replace$(strStringToConvert, "9", ChrW$(1641)) ConArNum = strStringToConvert Exit Function ErrorHandler: ConArNum = vbNullString End Function . اما جدول tbl_Months ، وتستطيع قراءة طريقة استعماله وفوائده من هنا: https://www.officena.net/ib/topic/81063-كتابة-التاريخ-بصيغة-لا-تتغير-بتغير-اعدادات-الوندوز/ . والنتيجة النهائية هي : 1574.الارقام.accdb.zip
  19. وعليكم السلام 🙂 ما شاء الله على شغلك ، متعوب عليه 🙂 الله يطول في عمرك اخوي ابو امين ، خذها قاعدة ، اذا لم يتم الرد على موضوع ليس بذلك الصعوبة ، خلال يوم واحد وهناك اكثر من 80 عضو قرأه ، فمعناه ان الاعضاء ما فهموه !! رجاء اخبرنا وين المشكلة ، واعطنا مثال عن كيف تريد ان يكون الجواب (سواء بصورة او بالاكسل او ... ) ، وكلما شرحك كان اكثر ، كلما سهلت على الجميع سرعة الرد على سؤالك 🙂
  20. السلام عليكم 🙂 الطريقة الوحيدة التي اعرفها ، هي عمل صورة ببرنامج خارجي ، وتدير الصورة بالزاوية التي تريدها ، ثم تلصقها في التقرير
  21. وعليكم السلام 🙂 1. الخطأ في هذا السطر فانت طلبت التركيز ينتقل الحقل xtdAmt ، بينما لا يوجد حقل في النموذج الفرعي بهذا الاسم. 2. انت عملت المعادلة التالية ، والتي تعمل بطريقة صحيحة ، ولكن قيمة المتغير xtdAmt = صفر ، لهذا السبب لا تتغير قيمته ظاهرا ، بينما قد تم اضافة صفر الى 100 واصبحت القيمة = 100 : 'update Customer Current Balance Forms!arEnterPayments!cmCurBalA = Forms!arEnterPayments!cmCurBalA + tdAmt
  22. وعليكم السلام في موضوعك السابق ، اشرت لك على الرابك الذي به الاوامر الصحيحة : وبما انك مُصر على استعمال الكود الذي لديك ، اليك المشكلة : الاكسس يحفظ السجلات تلقائيا عند خروجك من السجل ، وانت تقول له برمجيا اذا كان هناك اي شيء في السجل تم تغييره (If Frm.Dirty Then) ، فاعطني الرسالة اعلاه
  23. السلام عليكم اخي بلال 🙂 رجاء اعطنا معلومات كافية لمعرفة المشكلة ، والحل الذي تريده !! انا على سبيل المثال ، لا افهم الطلب "على الطاير" مثل ما يقولون ، وانا متأكد بوجود الكثير مثلي ، فساعدنا علشان نساعدك 🙂 ليس في هذا الموضوع فقط ، وانما في جميع مواضيعك لوسمحت 🙂 جعفر
  24. السلام عليكم 🙂 عمل جميل اخوي ابوخليل ، والحاجة اليه ماسة ، وان شاء الله اقوم بتجربته 🙂 جعفر
×
×
  • اضف...

Important Information