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

محمد ايمن

الخبراء
  • Posts

    1,663
  • تاريخ الانضمام

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

  • Days Won

    8

كل منشورات العضو محمد ايمن

  1. الرقم 100 هو رقم افتراضي وضعته لاسم الصورة اذا وجدت الرقم 100 بهذا نكون عرفنا الكود المسؤول عن التسمية و يمكننا تعديله ببساطة
  2. طبعا هذا شي اكيد غير اللغة الى اللغة العربية كما في الصورة
  3. نعم اخي الكريم دخلت الى النموذج صادر و قمت بتحميل الاداة الخاصة بسحب الصور جرب هذا السطر Shell ("c:\program files\irfanview\i_view32.exe /batchscan=(tempscan & "100",1,1,2,1," & Trim(db_path) & "tempscan,jpg,0)") عوضا عن هذا السطر Shell ("c:\program files\irfanview\i_view32.exe /batchscan=(tempscan,1,1,2,1," & Trim(db_path) & "tempscan,jpg,0)") من المفترض ان تجد صورة اسمها 100.jpg في المجلد temp scan جرب ووافيني بالنتيجة
  4. اخي الكريم النموذج يعمل بشكل جيد وهذه الصور
  5. اخي الكريم لماذا رقم المستند Shorttext ؟؟؟؟؟؟؟؟؟؟؟؟ قم بتحويله الى رقم و جرب
  6. اخي الكريم بداية انت ارسلت البرنامج كاملا وهذا نوعا ما يعصب العمل لاني بحاجة ان اعرف النموذج المطلوب ليتم التعديل عليه ثانيا انت قلت انك استطعت تعديل الكود ليسحب اكثر من صورة من خلال السكانر وعند البحث عند الكود هذا ما وجدته 'المفروض ان يتم وضع الكود الخاص بربط وفتح الاسكنر هنا Shell ("c:\program files\irfanview\i_view32.exe /batchscan=(tempscan,1,1,2,1," & Trim(db_path) & "tempscan,jpg,0)") لاحظ كلمة المفروض هنا ؟؟؟؟ هل هذا يعني ان البرنامج عمل لديك ام لا ؟؟؟؟؟؟ ثالثا عند فتح النموذج تظهر رسالة خطا في الاتصال بالسيرفر رابعا و بعد حذف رسالة التاكد من وقت السيرفر تظهر رسالة ان الملف غير موجود هذا يعني انه يوجد تطبيق مرتبط ليسحب الصورة اخي الكريم اعد رفع مرفق اصغر و ابسط و بدون اكواد الحماية و مع البرامج الملحقة ان وجدت
  7. 'متغير لفتح سجلات الجدول الاول Dim rs1 As DAO.Recordset 'متغير لفتح سجلات الجدول الثاني Dim rs2 As DAO.Recordset 'متغير نصي لتخزين اسم الصورة Dim s1 As String 'شرط اذا كان حقل الموظف فارغا يعطي رسالة تنبيه و يخرج من الكود If IsNull(Me.Text11) Then MsgBox "يجب اختيار رقم الموظف اولا", vbCritical Exit Sub ' في حال تم اختيار رقم الموظف Else 'نفتح سجلات الجدول الاول table2 و تتم تصفية السجلات حسب رقم الموظف الذي تم اختياره من النموذج Set rs1 = CurrentDb.OpenRecordset("select * from table2 where table2.emp_id =" & Me.Text11) 'نفتح سجلات الجدول الثاني IETEM_NEM و تتم تصفية السجلات حسب رقم الموظف الذي تم اختياره Set rs2 = CurrentDb.OpenRecordset("select * from IETEM_NEM where IETEM_NEM.ITEM_NO =" & Me.Text11) 'حلقة دورانية للدوران على كافة سجلات جدول Table2 التي تم تحديديها برقم الموظف Do While rs1.EOF = False 'يستخرج اسم الصورة من الجدول table2 s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare)) 'Debug.Print s1 'السماح بالتعديل على الحقل ' الرقم 5 يرمز الى حقل اسم الصورة لان الترقيم يبدا من 0 و الحقل مسار الصورة رقمه 5 - اذا بدأنا عد الحقول من 0 rs1.Edit ' تعديل مسار الصورة ' اسم الصورة + ننسخ القيمة من الجدول الاول و نضيف اليها مسار الصورة rs1.Fields(5) = rs2.Fields(5) & "\" & s1 'تحديث الحقل rs1.Update 'الذهاب الى السجل التالي rs1.MoveNext 'تكرار دوران الحلقة Loop 'اعادة تحديث النموذج الفرعي بعد الانتهاء من تحديث مسار الصورة Form_form1.subform1.Requery End If s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare)) هذا السطر يحتوي على ثلاث دوال ساقوم بتقسيمها لسهولة الشرح InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare) هذا السطر يبحث في سلسلة نصية عن قيمة معينة ويعيد الينا مكان تواجد هذه القيمة هنا بحثت عن السطر المائل \ في الجدول table2 لاستخرج اسم الصورة وطبعا هذه الدالة تبدا البحث من نهاية القيمة مثلا C:\Users\pcHome\Desktop\All_Files\123\2017-05-11_02.55.07_11.jpg الدالة تبدا من الحرف g وتبحث عن السطر المائل \ وعندا ايجاده تعيد الينا مكان تواجده Len(rs1.Fields(5)) هذا السطر يعيد الينا طول احرف السلسة اي اننا هنا نعرف عدد الاحرف الموجودة في حقل اسم الصورة Right(rs1.Fields(5), عدد الاحرف ) هذا السطر يعيد الينا قيمة نصية من قيمة معينة مع تحديد عدد الاحرف المطلوب اعادتها حيث تبدا الدالة من يمين القيمة النصية المحددة مثلا right("ayman",3) ستعيد الدالة man وبدمج هذه الدوال الثلاثة يصبح ليدنا هذا الكود s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare)) تعيد الدالة من يمين الحقل مسار الصورة نص طول حروفه هو عدد طول حروف النص في حقل مسار الصورة - مكان السطر المائل في حقل مسار الصورة ارجو ان اكون قد وفقت في الشرح
  8. الخطا في اسم الجدول اي انك كتبت اسم جدول خاطئ تاكد من اسم الجدول و اعد المحاولة او ارفع مرفقا للتعديل
  9. هذا كان طلبك اخي الكريم على العموم لا مشكلة انت تريد اذا اخذ مسار الصورة ثم تعديل المسار من الجدول الاول و اضافة مسار الصورة لهذا المسار
  10. الفرق بين ByVal و ByRef Byval يقصد بها الاستدعاء بالقيمة ByRef يقصد بها الاستدعاء بالمرجع الكود التالي سيوضح الفكرة أكثر لنفرض لدينا عددين و نريد تطبيق كود معين او معادلة ما على هذين العددين 'نضع هذا الكود خلف زر امر في نموذج dim x as intger dim y as intger dim i as intger x=10 y=5 'استدعاء كود الجمع بالقيمة و اظهار الناتج i=add1(x,y) msgbox i msgbox x 'استدعاء كود الجمع بالمرجع و اظهار الناتج i=add2(x,y) msgbox i msgbox x 'كود الجمع باستخدام Byval private function add1(byval n1, byval n2) as intger add1=n1+n2 n1=3 end function 'كود الجمع باستخدام ByRef private function add2(byref n1, byref n2) as intger add2=n1+n2 n1=3 end function الشرح في المثال انشئت وظيفة بسيطة لجمع عددين هما X Y عرفت متغيرين و وضعت قيم فيها وهي (x=10) و (y=5) الوظيفة Add1 انشئت وظيفة اسمها Add1 تستقبل عددين هما n1 و n2 ( بالقيمة ) Byval تقوم الوظيفة بجمع العددين و ارجاع الناتج ( و هنا الناتج 15 ) من خلال هذا السطر add1=n1+n2 ثم غيرت قيمة العدد الاول من 10 الى 3 من خلال هذا الكود n1=3 هذا يعني ان x يجب ان تصبح قيمتها 3 ولكن ستجد ان قيمة X مازالت 10 !!!!!!!!!!!!!!!! ( لاحظ انه بعد تعديل قيمة X من الوظيفة وضعت رسالة لتعطي قيمة x ) الوظيفة Add2 الوظيفة Add2 في نفس الوظيفة Add1 لكن الفرق ان الوظيفة Add2 تستقبل القيم n1 و n2 ( بالمرجع ) ByRef تقوم الوظيفة بجمع العددين و ارجاع الناتج ثم غيرت قيمة العدد الاول من 10 الى 3 ولكن هنا ستجد ان قيمة X اصبحت 3 !!!!!!!!!!!!!!!! السبب ان Byval تحافظ على القيمة الاصلية للمتغير المرسل لها اما Byref فهي تغير القيم للمتغير المرسل لها ارجو ان اكون قد وفقت في الشرح
  11. الفرق بين Class و module الوحدة النمطية يخزن بها كود يستدعى من اي مكان في قاعدة البيانات وهو يخفف من كتابة الكود و تسهيل تطوير قاعدة البيانات في المثال السابق عندما عرفنا الوظيفة AdNum وهي تقوم بجمع عددين لنفرض انه لدينا 10 نماذج و نحن بحاجة لتطبيق كود الجمع في جميع هذه النماذج من غير المنطقي تكرار كتابة الوظيفة في كل نموذج اي اننا سنكتب الكود السابق 10 مرات و اذا اردنا ان نعدل او نطور الكود ستكون العملية صعبة و مملة و قابلة للخطا لذلك ننشئ وحدة نمطية ونضع الكود داخلها و بذلك يمكن استدعاء الكود من اي مكان class الكلاس هي تقريبا نفس الوحدة النمطية و لكن يوجد بعض الفروق الاساسية بينهما يتم التعامل مع الوحدة النطية باسم الكود المكتوب ضمنها مثال لنفرض لدينا وحدة نمطية اسمها Mod1 وبداخلها عشرة اكواد code 1 code 2 code 3 وهكذا و انا بحاجة الى استخدام الكود الاول في النموذج اقوم باستدعائه بهذا الشكل call code1 اما الكلاس فالموضوع يختلف لنفرض لدينا كلاس اسمها Class1 و بها عشرة اكواد code1 code2 code3 الخ وانا اريد استخدام الكود الثاني لا يمكن ابدا كتابة الاستدعاء هكذا Call Code2 السبب لانه عليك تعريف متغير يحتوي على الكلاس اولا ثم استخدامه ويتم تعريفها بهذا الشكل dim Cl = new class1 cl.code2 يتبع
  12. اهلا بك اخي الكريم private تعني خاص مثال private sub total في السطر السابق قمت بتعريف كود على انه خاص اي ان هذا الكود يستدعى و يعمل ضمن النموذج المكتوب فيه الكود و اذا حاولت استدعائه من غير نموذج لن يجدي ذلك نفعا public تعني عام مثال public sub total في السطر السابق قمت بتعريف كود على انه كود عام اي انك اذا وضعت الكود السابق في نموذج فيمكنك استدعائه من نموذج آخر دون الحاجة لكتابة الكود مرة اخرى global تعني عالمي Global Strcod as String في السطر السابق تم تعريف متغير من نوع نص على انه عالمي و المقصود هنا ان المتغير يمكن استخدامه في اي مكان من قاعدة البيانات مع ملاحظة انه يمكنك ايضا تعريف المتغيرات بكلمة Public Public Strcod as String لكن عندما تريد استخدام المتغيرات لكافة النماذج يجب عليك وضعها ضمن وحدة نمطية كلمة ( Global ) هي كلمة قديمة و حاليا يحل محلها كلمة ( Public ) dim كلمة يقصد بها تعريف متغير Dim ii as Intger في السطر السابق تم تعريف المتغير ii على انه متغير من نوع رقمي set وتعني ضبط dim db as dao.database set db=currentdb في الكود السابق dim ii as intger المتغير في هذه الحالة يملك قيمة افتراضية وهي 0 اما في السطر السابق قمت بتعريف المتغير Db كقاعدة بيانات و لكنه مازال بحاجة الى تعريف قاعدة البيانات التي عرفته بها لذلك تستخدم كلمة Set و في هذا المثال ضبطت المتغير على قاعدة البيانات الحالية يتبع الفرق بين Sub و Function sub تعني موضوع او كود في في هذه الحالة الكود ينفذ دون ارجاع قيمة مثال public sub Amsg msgbox "aa" end sub عرفت الكود ليعطي رسالة مكتوب فيها aa و يستدعى بهذا الشكل call Amsg لاحظ هنا ان الكود لا يعيد قيمة هو فقط يعطي رسالة اما Function فهي وظيفة و هي تعيد قيمة مثال Public Function AdNum (ii as intger,ss as intger) as intger adnum=ii+ss end function في هذا المثال عرفت الوظيفة لتقوم بجمع عددين وتعطي الناتج حيث يمثل Adnum اسم الوظيفة و ii العدد الاول و ss العدد الثاني تستدعى بهذا الشكل call AdNum(10,15) لاحظ هنا ان الوظيفة تعيد قيمة وهي ناتج جمع العددين يتبع
  13. تفضل اخي الكريم اسم المستخدم admin كلمة السر admin Base de données2-1.rar
  14. سامحك الله يا استاذ جعفر باختصار لنفرض لديك وحدة نمطية تحتوي على عدة اكواد ووظائف تقوم بتحويل الوحدة النمطية الى ملف Dll ثم تستورده كمرجع الى الاكسس
  15. اخي ابو ابراهيم تحية طيبة لماذا لا تنشئ ملفات Dll و تستخدمها كمرجع عوضا عن استخدام الاكسس
  16. Private Sub cmd_Android_Camera_Click() On Error GoTo err_cmd_Android_Camera_Click 'KEYCODE_POWER = 26 'KEYCODE_CAMERA = 27 'KEYCODE_BACK = 4 'KEYCODE_HOME = 3 Dim cmmd As String 'how long does it take to take the picture istart = Timer 'set BE_Path Call BE_or_FE 'Adb location App_Location = BE_Path & "Camera_App\Android_Mobile\Adb.exe" Save_images_to = BE_Path & "images\" 'image capture mode cmmd1 = App_Location & " shell " & Chr(34) & "am start -a android.media.action.STILL_IMAGE_CAMERA" & "; sleep 1; " cmmd2 = "input keyevent KEYCODE_ENTER" & "; sleep 2; " cmmd3 = "input keyevent KEYCODE_BACK" & ";" & Chr(34) cmmd = cmmd1 & cmmd2 & cmmd3 'Debug.Print cmmd Call ShellWait(cmmd, vbHidden) 'transfer the image to the PC cmmd = App_Location & " pull /sdcard/DCIM/100ANDRO/ " & Save_images_to & "temp\" Call Shell(cmmd, vbHidden) 'Delete the pictures from the mobile camera folder cmmd = App_Location & " shell rm /sdcard/DCIM/100ANDRO/*.jpg" Call Shell(cmmd, vbHidden) PauseTime = 1 Start = Timer Do While Timer < Start + PauseTime DoEvents Loop 'Delete the existing Employee_ID Kill Save_images_to & Me.Employee_ID & ".jpg" 'move the picture from folder temp and change its name Dim StrFile As String StrFile = Dir(Save_images_to & "temp\") Do While Len(StrFile) > 0 Mobile_Pic = StrFile StrFile = Dir Loop Name Save_images_to & "temp\" & Mobile_Pic As Save_images_to & Me.Employee_ID & ".jpg" PauseTime = 1 Start = Timer Do While Timer < Start + PauseTime DoEvents Loop 'show the picture in the Form Me.Pic.Picture = Save_images_to & Me.Employee_ID & ".jpg" 'Delete the temp folder RmDir Save_images_to & "temp\" 'MsgBox Timer - istart End Sub هذا هو الكود بعد التعديل
  17. طبعا ممكن اخي الكريم انشئ زر امر وضع هذا الكود خلفه و عدل اسماء التقارير المراد طباعتها Docmd.openreport"name1" Docmd.openreport"name2" غير name الى اسم التقرير و كرر الامر كما شئت
  18. تحية طيبة استاذي الغالي جعفر المشكلة ليست من عندي و لا من عندك المشكلة من السوني بحد ذاته كما توقعت تماما للسوني سيناريو خاص به لالتقاط الصورة فعوضا عن الزر Camera يجب ارسال الزر Enter وعوضا عن المسار /sdcard/DCIM/Camera/ يكون المسار /sdcard/DCIM/100ANDRO وهذه ورقة اجابتي
  19. ما تزال التجارب جارية على جهازي السوني تظهر مشكلة عدم العثور على الملف لدي سؤال ؟؟ هل قام احد الاعضاء بالتجربة على اندرويد 5 ؟؟ قد يكون اصدار 5 بحاجة الى بعض التعديلات او ان السوني لديه طريقته الخاصة بالعمل
×
×
  • اضف...

Important Information