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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. حياك الله 🙂 انا قمت بعمل شرح اكثر في مثال الرابط ، فرجاء مراجعته ، واخبرني اذا اصبح واضح 🙂 جعفر
  2. السلام عليكم اخوي احمد 🙂 أنا قد اجبت على سؤال الموضوع ، واخبرتك 🙂 فرجاء فتح موضوع جديد والاشارة الى هذا السؤال ، ورجاء تجاوب فيه على الاسئلة اللي طرحتها عليك (لأنك لم تجاوب عليها) ، حتى يعرف الاعضاء كيف يمكنهم مساعدتك 🙂 جعفر
  3. السلام عليكم 🙂 الفكرة هي ، انه الجداول موجودة في الواجهة الخلفية BE ، واللي موجودة على السيرفر ، واللي نريد نحصل على وقته ، نضع هذه الوحدة النمطية فيه: Public Function Server_Date_Time() As Date Server_Date_Time = Now() End Function . ثم في برنامج الواجهة FE نضع هذه الوحدة النمطية : Public Function Call_Server_F() Dim apAccess As New Access.Application apAccess.OpenCurrentDatabase (DLookup("[Database]", "MSysObjects", "[Flags]=2097152")) Call_Server_F = apAccess.Run("Server_Date_Time") End Function ثم من النموذج ننادي هذه الوحدة النمطية : me.Server_Time = Call_Server_F جرب المرفق: ضع BE على السيرفر ، والـ FE على كمبيوتر آخر ، ثم شغّل FE 🙂 جعفر Server Time.mdb.zip
  4. وعليكم السلام 🙂 تفضل جعفر
  5. وعليكم السلام 🙂 هكذا تضع اكثر من شرط ، وببساطة 🙂 جعفر
  6. وعليكم السلام 🙂 في حقل رقم في الجدول ، لا يمكنك ان تُدخل حروف ، ولكن يمكنك ان تُدخل اي رقم تريد 🙂 فخلينا نقول ، ان الغائب تعطيه علامة 200 : وفي الاستعلام ، نعمل معادلة: اذا كان الرقم = 200 ، فأعطنا الحرف غ 🙂 جعفر جمع الارقام من مربع نص تنسيقه نص1.zip
  7. مثل هذا الجهاز AT9000 ، ويعمل بنفس طريقة الجهاز CR100 بأته يأخذ كود MRZ ويفككه (وسيكون مشروعي التالي ان شاء الله 🙂 ) ، وبالاضافة يأخذ: صورة ملونة لصفحة الجواز ، صورة ابيض واسود لصفحة الجواز (لكشف التزوير) ، صورة من صورة صاحب الجواز الشخصية ، . . نعم يمكن التحكم في هذا ، بطريقتين: عن طريق ملف XML ، او بتفكيك السطر على اساس علامات "<" (لاحظ الوحدة النمطية في مشاركتي الأولى) ، او الاثنين معا 🙂 جعفر
  8. السلام عليكم 🙂 الجوازات والبطاقات الشخصية والهويات الحكومية ، في اسفلها كود يسمى MRZ وفيه معلومات من الوثيقة ، الجواز ، وفي اسفله سطرين من كود MRZ : . والهوية ، وفي اسفلها 3 اسطر من كود MRZ : . وهناك عدة اجهزة (هي في الواقع سكانرات) التي يمكنها قراءة هذه الوثائق ، وتستعمل نظام OCR وتحول الصورة الى نص ، ومن ضمن هذه الاجهزة ، جهاز 3M CR100 https://www.gemalto.com/govt/document-readers/cr100 والظاهر ان هذا الجهاز معتمد من قِبل البوابة الالكترونية الموحدة لحجاج الخارج . . تنزيل وتنصيب برنامج التشغيل : http://www.3m.com/ssdcp/3M Swipe Readers/SDK/3M Swipe Reader SDK 1.2.1.2 Setup.exe خلونا نستعمل هذا الجهاز عن طريق الاكسس 🙂 بعد تنصيب برنامج تشغيل الجهاز ، يقوم برنامج الاكسس بتشغيل برنامج الجهاز في الكمبيوتر (فإذا ما عملت تنصيب للبرنامج ، اوقف عمل السطر : ) Private Sub Form_Load() On Error GoTo err_Form_Load 'turn ON the scanner xml program ' Call Restart_XML '<<< اوقفوا عمل هذا السطر . النموذج يكون جاهز على الحقل Line_0 ، والذي يبدا بأخذ نتيجة OCR ، . . وتكون النتيجة بهذه الطريقة (انا وضعت الارقام امام الاسطر) : 0'START 1'OCR Line 1: IDOMN1900000<<3<<<<<<<<<<<<<<< 2'OCR Line 2: 7008529M2018227OMN<<<<<<<<<<<6 3'OCR Line 3: ALI<MOHAMMED<HUSSAIN<<AL<MOOSA 4'MSR Track 1: 5'MSR Track 2: 6'MSR Track 3: 7'End . لعمل البرنامج ، اضطررت لعمل الاكواد بنفسي ، لأن SDK الجهاز كانت للغات اخرى غير VBA ، وهذه الوحدة النمطية التي تقوم بتفكيك الكود اعلاه ، سواء لجواز او بطاقة او فيزا : Public Function Parse_MRZ(frmN As String) On Error GoTo err_Parse_MRZ ' '08-06-2018 'by jjafferr ' Dim L1 As String Dim L2 As String Dim L3 As String Dim gDocType As String Dim Pass_Type As String Dim gLastName As String Dim gFirstName As String L1 = Replace(Forms(frmN)!Line_1, "OCR Line 1: ", "") L2 = Replace(Forms(frmN)!Line_2, "OCR Line 2: ", "") L3 = Replace(Forms(frmN)!Line_3, "OCR Line 3: ", "") gDocType = Mid(L1, 1, 1) Select Case gDocType Case "P", "V" 'passport , Visa Forms(frmN)!gDocType = gDocType 'LINE 1 Pass_Type = Mid(L1, 2, 1) 'Either < or Passport type Forms(frmN)!gIssuing = Mid(L1, 3, 3) gLastName = Mid(L1, 6, InStr(L1, "<<") - 6) gLastName = Replace(gLastName, "<", " ") Forms(frmN)!gLastName = Trim(gLastName) gFirstName = Mid(L1, InStr(L1, "<<") + 2, InStr(InStr(L1, "<<") + 1, L1, "<<") - InStr(L1, "<<") - 2) gFirstName = Replace(gFirstName, "<", " ") Forms(frmN)!gFirstName = Trim(gFirstName) Forms(frmN)!gDocNumber = Mid(L2, 1, 9) 'LINE 2 Forms(frmN)!gCountry = Mid(L2, 11, 3) Forms(frmN)!gDOB = DateSerial(Mid(L2, 14, 2), Mid(L2, 16, 2), Mid(L2, 18, 2)) Forms(frmN)!gGender = Mid(L2, 21, 1) Forms(frmN)!gDocExpiry = DateSerial(Mid(L2, 22, 2), Mid(L2, 24, 2), Mid(L2, 26, 2)) Forms(frmN)!gAddInfo = Mid(L2, 29, InStr(L2, "<<") - 29) Case "I", "A", "C" 'ID Forms(frmN)!gDocType = Mid(L1, 1, 2) Pass_Type = Mid(L1, 2, 1) 'Either < or completing the first letter Forms(frmN)!gIssuing = Mid(L1, 3, 3) Forms(frmN)!gDocNumber = Mid(L1, 6, InStr(L1, "<<") - 6) Forms(frmN)!gDOB = DateSerial(Mid(L2, 1, 2), Mid(L2, 3, 2), Mid(L2, 5, 2)) 'LINE 2 Forms(frmN)!gGender = Mid(L2, 8, 1) Forms(frmN)!gDocExpiry = DateSerial(Mid(L2, 9, 2), Mid(L2, 11, 2), Mid(L2, 13, 2)) Forms(frmN)!gCountry = Mid(L2, 16, 3) gFirstName = Mid(L3, 1, InStr(L3, "<<") - 1) 'LINE 3 gFirstName = Replace(gFirstName, "<", " ") Forms(frmN)!gFirstName = Trim(gFirstName) gLastName = Mid(L3, InStr(L3, "<<") + 2) gLastName = Replace(gLastName, "<", " ") Forms(frmN)!gLastName = Trim(gLastName) End Select Exit_Parse_MRZ: Exit Function err_Parse_MRZ: If Err.Number = 9 Then 'susbcription out of order, ignore Resume Next ElseIf Err.Number = 13 Then 'Type mismatch, ignore Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Parse_MRZ End If End Function برنامجي الذي في الخدمة ، يقرأ بيانات الجوازات والهويات في اقل من 3 ثواني ، بالأضافة الى قراءة باركود بعض الهويات الاخرى ، وادخال يدوي لأنواع اخرى من الهويات ، لهذا السبب كان يتطلب مني استعمال هذه الاحداث🙂 Public Sub Line_0_BeforeUpdate(Cancel As Integer) Private Sub Line_0_KeyDown(KeyCode As Integer, Shift As Integer) Private Sub Line_0_AfterUpdate() Private Sub Line_7_AfterUpdate() . احد اهم الامور التي اخذت مني وقت طويل لمعرفتها هي ، يجب ان تكون لغة الكيبورد بالانجليزي ، وقت قراءة البطاقة ، وإلا فالنتائج تعطيك خطأ ، لهذا السبب فالبرنامج تلقائيا يحول اللغة الى انجليزي ، لما التركيز يكون في حقل Line_0 🙂 الجدول و الكود قد يكون فيه بقايا من برنامجي ، ولكن لن يضروكم ان شاء الله 🙂 جعفر CR100 card reader.zip
  9. هذا بيخلينا نفكر في طريق آخر 🙂 هل جداول قاعدة البيانات موجودة على هذا الجهاز ؟ جعفر
  10. سؤالك كان عن جلب التاريخ من السيرفر 🙂 جعفر
  11. عفوا ، اين الاجابه ؟ وهاي لازم لازم يكون معاها مرفق جديد يشمل هذه التغييرات 🙂 جعفر
  12. السلام عليكم 🙂 اخواني ، الجميع يساعد في المنتدى بوقته وبدون مقابل ، وعندنا مثل يقول: حبة الزبيب ما تشبّع ، ولكنها تحلّي الفم 🙂 فرجاء خلونا نشجع الاعضاء في العطاء 🙂 لما تحصل على رد له قيمة ، فتشجيعا للعضو الذي يساعدك ، اخبر العضو بأنك مُعجب برده ، هكذا : . . ولما تحصل على اجابة لسؤال موضوعك ، فرجاء اختيار افضل اجابة ، هكذا (حتى مستقبلا يسهل معرفة الاجابة الصحيحة) : . شكرا 🙂 جعفر ومع الاعتذار لأخي احمد لإستخدام اسمه في المثال 🙂
  13. اخي الفاضل 🙂 هذا المنتدى لتبادل الخبرات ، ومساعدة المبرمجين بعضهم البعض ، اذا اردت برامج جاهزة ، فرجاء وضع طلبك هنا: https://www.officena.net/ib/forum/157-إعلانات-شخصية-للاعضاء-فقط-فى-مجال-الموقع/ جعفر
  14. وعليكم السلام 🙂 1. أ. ولكن "اي مشروع حالي" ، لا يوجد لديك اختيار "المشروع المحدد" ؟ ب. واذا عملت حقل لإختيار المشروع (مثل ما اخترت الشهر والسنة) ، وقمت بإختياره ، فما بال الشهر والسنة ، وما بال المشروع اذا تم ارشفته !! 2 و 3. نفس الاسئلة اعلاه في #1 🙂 جعفر
  15. وعليكم السلام 🙂 اسمح لي اشارك معاك اخوي خالد 🙂 انا شايف ان الرقم العشوائي مجرد تمويه ، او لم يتم استعماله بالطريقة الصحيحة في الكود !! الكود يطلب منك كلمة السر ويحتفظ بها في المتغير x ، المتغير z يعمل عملية حسابية على كلمة السر التي ادخلتها ، اذا كانت كلمة السر صحيحة ، فيخبرك انها صحيحة ويفتح لك النموذج "معلومات التقارير" ، واذا كانت فيخبرك انها خطأ ويغلق النموذج "معلومات التقارير" !! ولكن النموذج "معلومات التقارير" : يا انه مُغلق ، فيتم فتحه ، او مفتوح فيتم غلقه ، ولكن الكود يعمل الاثنين ، حسب صحّة كلمة السر !! جعفر
  16. اخي الفاضل farahat رجاء الالتزام بقوانين المنتدى : https://www.officena.net/Tips/Questions.htm فانت فتحت 3 اسئلة مستقلة لهذا الموضوع ، ومن دون ان تضيف اي معلومة زيادة لكي يساعدك الاعضاء !! رجاء فكر في سؤالك ، و اعد طريقة العرض او ضع مثال ، و رد على اسئلة الاعضاء ، حتى يستطيعوا ان يساعدوك 🙂 جعفر
  17. تفضل يا سيدي 🙂 جعفر 1176.Network_PC_Time.mdb.zip
  18. شكرا اخوي محمد 🙂 جعفر
  19. السلام عليكم 🙂 لا اعتقد بأنك بحاجة الى جدول tbl_Years ، ولا Tbl_Archiv (تم عمل حقل Archived في الجدول Tbl_Projects ، بحيث لما تختار المشروع ، لا يظهر في التقارير) 🙂 طريقة العمل: أ. تختار الشهر والسنة من النموذج frm_A_A ، ب. الاستعلام qry_Project_in_Period يعمل تصفية للمشاريع ، ويعتمد على الجدول tbl_Projects: يقارن بين التاريخ الذي اخترته في النموذج ، وبين تاريخ بداية ونهاية المشروع ، فيظهر فقط المشاريع بين التاريخين ، يظهر المشاريع التي لم يم ارشفتها Archived . وحسب اختيارنا ، هذه نتيجة الاستعلام ، وهو المشروع الوحيد الذي سيتعامل معه البرنامج : . ج. الاستعلام qry_All هو العقل المدبر ، والذي يربط جميع البيانات المطلوبة معا : . د. وعلى اساس هذا الاستعلام ، عملنا التقرير rpt_All : . تفضل اذا عندك اي اسئلة ، فانا الى هنا واتوقف 🙂 جعفر HR.zip
  20. وعليكم السلام اخوي سلمان 🙂 لقيت لك هذا الكود ، بس ما عندي الشبكة علشان اجرب 🙂 http://visualbasic.happycodings.com/date-time/code3.html جربه واخبرنا النتيجة لوسمحت 🙂 جعفر
  21. وعليكم السلام 🙂 قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف رجاء فتح موضوع جديد يتناسب مع هذه القواعد 🙂 جعفر
  22. رجاء معاينة الاستعلام qry_All ، فهو كل اللي تحتاج له ، ولكنه بحاجة الى بيانات الجدول Tbl_Employees ، ومافي داعي تعبئ الحقل "بند الموازنة" ، فالحقل Dif يقوم بهذا تلقائيا على اساس اختيار الشهر من النموذج : . الباقي التصفية ، باسم المشروع ، والسنة (رجاء مراجعة مشاركتي السابقة) 🙂 وعمل تقرير يكون هذا الاستعلام مصدر بياناته 🙂 جعفر HR.zip
  23. اللي فهمته هو : في الجدول Tbl_A_c ، حقل التاريخ (01-03-2020) الموجود في السجل الاول ، واقعا يجب ان يكون لكل السجلات ، صح ؟ يعني في الصورة اعلاه ، السجل: تصنيع 1 ، سائق ، يجب ان يكون التاريخ امامه هو (01-03-2020) ، وهكذا لبقية السجلات ، صح ؟ او ان حقل التاريخ في الجدول فقط يرمز للتاريخ الذي تم اختياره من النموذج ، وان المقارنة لازم تكون لحقل مارس (وهو الذي تم اختياره في النموذج) ؟ سؤال : من اي جدول / حقل نحصل السنة ؟ جعفر
×
×
  • اضف...

Important Information