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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. وعليكم السلام 🙂 سهلة ، في الاستعلام ، اذا الحقول اللي تريد تقارنهم A و B ، المعادلة تصبح : R: iif([A] = [B] , "OK" , "Not OK") ولتلافي الحقول الفارغة R: iif(nz([A],"|") = nz([B],"|") , "OK" , "Not OK") وعلشان الحبايب ، وعلشان تشوف كيف ان الحروف العربية قلبت الكود R: iif(nz([A],"|") = nz([B],"|") , "كله تمام يا معلم" , "لا لا ، الموضوع يحتاج تدخل من المعلم الكبير علشان يشوف لنا المشكله دي") وبعدين استخدم المعيار لتصفية "Not OK" 🙂 جعفر
  2. لهذا السبب ، الطريقة الافضل لك ، هي عمل سؤال جديد ، حتى يستطيع الاعضاء المعاصرون من الرد على سؤالك ، وبسرعة 🙂 جعفر
  3. اخي اسلام 🙂 هذا الموضوع من 12 سنه ، فلا تتوقع رد من اصحابه !! هذا الرابط سيفيدك : اجعل برنامجك يعمل على النواتين 32بت و 64بت - قسم الأكسيس Access - أوفيسنا (officena.net) جعفر
  4. الحمدلله 🙂 غير صحيح ، والصحيح ان الارقام يتم التعامل معها بطريقة اسرع في قواعد البيانات 🙂 اما سبب قلب الرموز ، فهي بسبب اللغة العربية ، ولكن لا تهتم بهذا التغيير ، لأن الكمبيوتر يقرأها بالطريقة الصحيحة ، كما في العمود الذي على اليمين : . والدليل ان الكود يقارن بين الحلقين ، ويأتي بالنتيجة الصحيحة 🙂 جعفر
  5. رجاء تجرب النتيجة الان 🙂 اصبحت الدالة هكذا: Function Add_RMZ() On Error GoTo err_Add_RMZ Dim rstT As DAO.Recordset Dim rstR As DAO.Recordset Dim rstX As DAO.Recordset Set rstT = CurrentDb.OpenRecordset("Select * From TAB") Set rstR = CurrentDb.OpenRecordset("Select * From TAB_RMZ") Set rstX = CurrentDb.OpenRecordset("Select * From TAB_RMZ_X") rstT.MoveFirst Do Until rstT.EOF rstR.MoveFirst Do Until rstR.EOF 'Debug.Print 'Debug.Print rstR!RMZ, rstT!NASS 'Debug.Print "-----------------" If InStr(rstT!NASS, rstR!RMZ & " ") > 0 Or InStr(rstT!NASS, rstR!RMZ & vbCrLf) > 0 Then 'Found it 'But is it already in TAB_MRZ_X rstX.FindFirst "[MNO]=" & rstT!MNO & " And [RMZno]=" & rstR!RMZno If rstX.NoMatch Then rstX.AddNew rstX!MNO = rstT!MNO rstX!RMZno = rstR!RMZno rstX.Update End If 'rstX.NoMatch End If 'InStr rstR.MoveNext Loop 'rstR rstT.MoveNext Loop 'rstT Exit_Add_RMZ: rstT.Close: Set rstT = Nothing rstR.Close: Set rstR = Nothing rstX.Close: Set rstX = Nothing MsgBox "Done" Exit Function err_Add_RMZ: If Err.Number = 3021 Then Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Add_RMZ End Function . جعفر 1361.RMZ02.accdb.zip
  6. استعملت هذه الدالة: Function Add_RMZ() On Error GoTo err_Add_RMZ Dim rstT As DAO.Recordset Dim rstR As DAO.Recordset Dim rstX As DAO.Recordset Set rstT = CurrentDb.OpenRecordset("Select * From TAB") Set rstR = CurrentDb.OpenRecordset("Select * From TAB_RMZ") Set rstX = CurrentDb.OpenRecordset("Select * From TAB_RMZ_X") rstR.MoveFirst rstT.MoveFirst Do Until rstR.EOF Start_Here: 'Debug.Print 'Debug.Print rstR!RMZ, rstT!NASS 'Debug.Print "-----------------" If InStr(rstT!NASS, rstR!RMZ) > 0 Then 'Found it 'But is it already in TAB_MRZ_X rstX.FindFirst "[MNO]=" & rstT!MNO & " And [RMZno]=" & rstR!RMZno If rstX.NoMatch Then rstX.AddNew rstX!MNO = rstT!MNO rstX!RMZno = rstR!RMZno rstX.Update End If End If If rstR.EOF = False And rstT.EOF = False Then rstR.MoveNext ElseIf rstT.EOF Then Exit Do End If Loop If rstR.EOF = True And rstT.EOF = False Then rstR.MoveFirst rstT.MoveNext GoTo Start_Here End If Exit_Add_RMZ: rstT.Close: Set rstT = Nothing rstR.Close: Set rstR = Nothing rstX.Close: Set rstX = Nothing MsgBox "Done" Exit Function err_Add_RMZ: If Err.Number = 3021 Then Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Add_RMZ End Function . واعرف فيها ملاحظات 😁 جعفر 1361.RMZ02.accdb.zip
  7. انا فهمي بطيء بعض الاوقات 😁 رجاء اعطني مثالين اثنين ، علشان اقدر اقتدي بهم 🙂 جعفر
  8. على العموم ، هذا عملك وانت ادرى به 🙂 وشو المطلوب الآن ، هل نفس الطلب حسب السؤال ، او الحل الغريب (اللي محتاجين تفاصيله ، ومثال عليه) 🙂 جعفر
  9. وعليكم السلام 🙂 السؤال ، ما فائدة هذا العمل ؟ جعفر
  10. وهنا يأتي الابداع ، كل مبرمج يتفنن في عمله 🙂 للتجربة ، قمت بإستخدام الكود من الرابط ، ونتيجة الجدول كانت غير صحيحة/كاملة : . لذا ، فهذا الميدان يا حميدان ، تستطيع الاستفادة من ذاك الكود وتطوعه لحاجتك ، او بالتحليل تفهم ملف النص ، وتشارك في كود يعمل 🙂 جعفر
  11. وانا سأوضح قصد اخوي ابو ابراهيم ، ولكن بالنظر في الملف بطريقة اخرى ، ليست الشفرة ، وانما استيراد البيانات الى جدول مؤقت ، وباستعلامات إلحاقية 🙂 - عملت برنامج اكسس جديد ، ثم استوردت من ملف النص IAS_Out_Cs_Detail.txt ، ثم نتابع طريقة الاكسس التلقائية لإستيراد الملف الى جدول جديد tbl_tmp ، وبدون تنظيف ، - عملت نسخ لجميع بيانات الجدول والصقتها في صفحة اكسل ، حتى يكون التحليل سهل : الحقول الصفراء والبرتقالية والمربع الاحمر ، هي معلومة واحدة ، اي ان جميع هذه الحقول لسجل واحد (رجاء المتابعة لشرح هذا) ، الحقول الصفراء متكررة مرتين ، فمثل ما قال اخوي ابو ابراهيم ، ممكن جعلها في جدول مستقل ، وفي الكود اشار اليه (If row Like) ("مركز*"Then ) ، الحقول البرتقالية كذلك ممكن جعلها في جدول مستقل (ElseIf row Like) ("الحساب*" Then) ، ونلاحظ بأن الحقول ابتداءً من field16 لسنا بحاجة اليها ، لأنها موجودة في المربع الاحمر ، وهذا ما اشار اليه اخوي ابو ابراهيم لما قال: "يوجد في هذا الملف بيانات خارجة عن الصف" ، والبيانات في المربع الاحمر هي للجدول الثالث ، وهذا الجدول يجب ان يحتوي على "رقم سجل" للجدول الاول ، و "رقم سجل" للجدول الثاني : . وبهذه الطريقة ، نعمل استعلام الحاقي لبيانات كل جدول ، واستعمال المعايير المناسبة لتنظيف البيانات قبل ادخالها للجدول 🙂 طريقة العمل تكون : 1. الاكسس يعمل اول جدول تلقائيا ، ونطلب منه ان لا يستورد الحقول التي لا حاجة لنا بها ، ثم في نهاية نطلب منه حفظ طريقة الاستيراد : . 2. نعمل استعلام الحاقي لكل جدول (قد نحتاج الى 3 استعلامات او اكثر) ، وتنظيف البيانات بإستخدام المعايير المناسبة ، 3. ثم عمل كود ليقوم بعمل 1 (طبها الاستيراد سيكون من نفس اسم الملف ولن يتغير ، فلابد لنا من عمل طريقة لهذه النقطة) و 2 🙂 وطبعا كود اخوي ابو ابراهيم جاهز وانظف واسهل للفهم 🙂 جعفر
  12. وعليكم السلام 🙂 بما انك اخترت ان تكون الصورة خلفية للنموذج (وليست كائن مستقل) ، فالصورة سيتغير مكانها بحجم الشاشة اذا استعملت Center (اي انها ستكون في منتصف الشاشة دائما) : . لذا وجب عليك استعمال Top Left بحيث مكانها لا يتغير ، ومن البداية ، العب في الصورة ، واضف المساحات الفارغة التي تحتاج اليها من فوق ومن اليسار ، وعلى اساسها سيكون الزر دائما ثابت 🙂 جعفر
  13. وعليكم السلام 🙂 تحتاج ان تعمل مجلد آمن : جعفر
  14. انت ارفقت 3 ملفات ، بالاضافة الى ملفك الاصل ، فيصبحوا 4 ملفات ، فهل هذا مجموع الملفات ، او ان هناك ملفات اخرى قد تخرج في المستقبل ؟ طلبك في انشاء جدول خاص (وبعدين استعلامات ، ونماذج ، وتقارير لكل جدول) لكل ملف لا يتماشى مع نظام قواعد البيانات ، فالطريقة الصحيحة هي استخدام نفس الجداول الموجودة ، ولكن بإضافة حقل يميز كل نوع من انواع الملفات . جعفر
  15. الظاهر هذه رسالة من اعدادات امان الوندوز ، فانا لا تظهر لي هذه الرسالة لما افتح الملف من : الكمبيوتر المحلي ، من الشبكة ، من الانترنت !! جرب هذه الطريقة ActiveX WebBrowser القديمة ، وطريقتك موجودة ولكنها مخفية ، ويمكنك حذفها لاحقا. جعفر 1360.1.نسخ الملفات.accdb.zip
  16. هممم سؤال غير تقليدي ، بحثت ولم احصل على جواب ، فقمت انا بعمل التجربة : . واوقفت البرنامج لأنه تأخر في اعطائي النتائج 🙂 هل انت راض عن الحجم الى الآن 🙂 جعفر
  17. هذا كل اللي عملته: Option Compare Database Dim web As Object ' Private Sub Form_Current() If Len(Me.txtPath & "") = 0 Then web.Navigate "about:blank" Else web.Navigate Me.txtPath End If End Sub Private Sub Form_Open(Cancel As Integer) Set web = Me.WebBrowser28.Object End Sub جعفر 1360.نسخ الملفات.accdb.zip
  18. بما ان المرفق واضح ، ولكي تستفيد وتعرف مكان الخطأ في كودك ، رجاء ارفاق ما عملته 🙂 جعفر
  19. عفوا الاخ هاني قد تستغرب من قدرة الاساتذة في الرد على الكثير من المواضيع ، وبدون مرفق ، واذا احتاجوا اليه ، فسيطلبونه 🙂 جعفر
  20. وعليكم السلام 🙂 الجواب هنا جعفر
  21. هذا كل اللي تحتاج اليه : dim strQuery as string strQuery="Sale_Daily" DoCmd.OpenQuery strQuery جعفر
  22. حياك الله 🙂 كلامي هنا عن تكرار البصمة بدون فاصل: وبما انك لم ترد علينا بإمكانية استعمال صيغة accdb ، والتي بها نستطيع التحكم في الوقت الفاصل بين البصمة والاخرى ، لذا سأعطيك استعلام حذف البيانات الاضافية والذي عملت عليه سابقا: . 1. الاستعلام الذي يعطيك اول قيمة (الدخول T_Min) وآخر قيمة لليوم (الخروج T_Max) ، . 2. نفس بيانات الجدول CHECKINOUT ، ولكن بإضافة حقل للتاريخ ، ولا نستخدمه مباشرة ، وانما استعلام الحذف التالي يستعمله ، . 3. استعلام الحذف : . وقوته في المعيار ليحصر لبيانات المتكررة: Between (SELECT top 1 DateAdd('s','1',[CHECKTIME]) FROM CHECKINOUT As C WHERE C.USERID= [qry_InOut].[USERID] And DateSerial(Year(C.[CHECKTIME]),Month(C.[CHECKTIME]),Day(C.[CHECKTIME]))=[qry_InOut].[D] ORDER BY [CHECKTIME]) And (SELECT TOP 1 DateAdd('s','-1',[CHECKTIME]) FROM CHECKINOUT As C WHERE C.USERID= [qry_InOut].[USERID] And DateSerial(Year(C.[CHECKTIME]),Month(C.[CHECKTIME]),Day(C.[CHECKTIME]))=[qry_InOut].[D] ORDER BY [CHECKTIME] DESC) جعفر 1356.1.att2000.accdb.zip
  23. يمكن كذلك ربط الاكسس بـ SQL Server عن طريق ODBC وتكون الجداول مربوطة بواجهة الاكسس ، وتستعمل الاكسس بطريقة عادية : . جعفر
×
×
  • اضف...

Important Information