اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    408

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

  1. في الواقع هذه الخطوة عبارة عن تسهيل جدا كبير للمبرمج 🙂 وقد يكون في الامكان الاستغناء عن الخطوة السابقة ، وعمل كل شيء في هذه الخطوة ، طبعا هذا سيعقد الكود و "رسم النمط وفق النسق" 🙂 شكرا جزيلا اخوي ابو ابراهيم لهذه المشاركة الدسمة 🙂 جعفر
  2. عمل جميل استاذ ابو ابراهيم ، ولكننا اضطررنا الى العودة الى الوحدة النمطية 🙂 والشيء الجميل في طريقتك ، انها تخلصت من علامات الاستفهام كذلك مرة واحدة 🙂 يبقى تفكيك نتيجة السجل النظيف الى 3 سجلات 🙂 جعفر
  3. هذه الرسالة لا علاقة لها بأي من انواع الاكسس ، فهي تقول : بأن البرنامج لم يحصل على الوحدة النمطية InputBoxDK في برنامجك !! اذا ممكن ترفق لنا برنامجك ، او ترفعه الى احد مواقع الرفع واعطاءنا الرابط 🙂 جعفر
  4. اخي الفاضل ، لا يكفي ان تنقل هذه الجزئية فقط الى برنامجك ، فهناك وحدة نمطية اسمها ويجب نقلها كذلك الى برنامجك الآخر 🙂 جعفر
  5. تفضل 🙂 جعفر اخفاء الرقم السري.zip
  6. السلام عليكم 🙂 شكرا جزيلا اخوي أبو إبراهيم على كلماتك العطرة 🙂 انا احاول قد الامكان ان استعمل الاستعلام لتنفيذ اي موضوع في الاكسس ، لأنه سيكون الاسرع ، ونفس الشيء حاولته لهذا التفكيك قبل ان اعمل الموضوع ، ولكني لم اصل لنتيجة !! ومن الوقت الذي وضعت فيه ملاحظتك ، وانا افكر ، وما توصلت لنتيجة : ما ممكن نستعمل Split ، إلا اذا عرفنا "شرط القطع" (علامة تجارية مسجلة 🙂 ) ، حاولت مع Split ان اخليه يتعرف على الارقام بواسطة "شرط القطع" isNumeric و IN ، ولكن اكسس لا يقبل هذا ، ما ممكن نستعمل inStr و inStrRev ثم isNumeric ، لأن الارقام اللي في السجلات ، ليست بأرقام في نظر الاكسس (استعملت inStrRev في الصورة المرفقة) : . وفي كل خطوة من الخطوات اعلاه في الاستعلام ، اشوف نفسي انجذب لعمل وحدة نمطية لجزئية معينه من كود الاستعلام جعفر
  7. هل جربت هذا الموضوع ؟ جعفر
  8. كنت اعتقد بأني انتبهت لهذه النقطة !! شكرا على الملاحظة ، وقد تم تعديل المرفق في المشاركة الاصل ، فرجاء انزال المرفق مرة اخرى 🙂 جعفر
  9. وعليكم السلام 🙂 سؤالك غير واضح !! جعفر
  10. وعليكم السلام 🙂 الافضل ان تجعل الاستعلام مصدر بيانات للنموذج ، لأنك هناك تقدر تعمل تصفية ، و فرز (التسلسل) الذي تريده ، ويمكن عمل فرز لأاكثر من حقل ، مثلا: الفرز الاول يكون باسم القسم ، ثم الفرز التالي يكون للدرجة ، ثم الفرز التالي يكون للإسم ، وهكذا 🙂 جعفر
  11. وعليكم السلام 🙂 هذا رد على سؤالك : . والبرنامج يتحكم بهذا الكم الهائل من المرفقات في اول 2018 ، وفي 8/2019 وصل حجم المرفقات الى اكثر من 1 تيرا بايت : جعفر
  12. السلام عليكم 🙂 وهذه طريقة اخرى ، للنواتين 32 و 64بت : . او ايش رايك في كلمة سر متغيرة ، يعني مافي داعي تخاف احد يشوفها ، لأنها تتغير دائماً كل دقيقة 🙂 جعفر
  13. شكرا جزيلا اخي حسين 🙂 شرح وافي 🙂 بس اللي لفت نظري في الفيديو ، انك تقرأ بيانات الهوية من قارئ البطاقة المدنية تلقائيا ، فياريت تتفضل علينا بالطريقة هنا 🙂 جعفر
  14. الله ان شاء الله يقويك على هذا العمل ، ويعطي الوالد الصحة والعافية ، ياريت تتفضل علينا بهذا الحل 🙂 جعفر
  15. حياك الله 🙂 جعفر
  16. بس الظاهر انك فهمت السؤال صح ، بينما انا قرأت رأس الموضوع ، وما لاحظت الملاحظة إلا بعد ان وضعت ملاحظتي !! على العموم ، هذه طريقتي ، لحدث الزر (طبعا بالاضافة الى الكود في مشاركتي السابقة) : Private Sub T_m_Click() On Error GoTo err_T_m_Click If Len(Me.FROM & "") = 0 Then MsgBox "رجاء تعبئة التاريخ من" Me.FROM.SetFocus ElseIf Len(Me.TO & "") = 0 Then MsgBox "رجاء تعبئة التاريخ الى" Me.TO.SetFocus ElseIf Len(Me.PN & "") = 0 Then MsgBox "رجاء اختيار اسم المشروع" Me.PN.SetFocus Me.PN.Dropdown Else DoCmd.OpenReport "All_Proj", acViewPreview End If Exit_T_m_Click: Exit Sub err_T_m_Click: If Err.Number = 2501 Then 'No data Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_T_m_Click End Sub . جعفر 1253.APE (1).accdb.zip
  17. وعليكم السلام 🙂 في التقرير ، في حدث No Data ، اكتب هذا الكود (طبعا يمكنك حذف سطر الرسالة، ولكني افضل ان يعرف المستخدم ان البرنامج يعمل وان التقرير فارغ) : Private Sub Report_NoData(Cancel As Integer) MsgBox "لا توجد بيانات" Cancel = True End Sub جعفر
  18. السلام عليكم 🙂 الخطوة الاولى وبالتفصيل هي تصفية البيانات : . وهذا الكود كاملا لبرنامجك ، وحفظ البيانات في الجدول: Public Function Split_Names() Dim rst, rst2 As DAO.Recordset Dim x() As String: Dim x2() As String Dim i, j As Long Dim a As String Set rst = CurrentDb.OpenRecordset("Select * From MyTxt_from_pdf") Set rst2 = CurrentDb.OpenRecordset("Select * From tbl_Names") ' Do Until rst.EOF ' For i = 1 To Len(rst!Field1) ' a = Mid(rst!Field1, i, 1) 'الحروف/الارقام/العلامات ' a = a & "(" & AscW(a) & ") " 'رقمها AscW ' Debug.Print a ' Next i ' loop Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) 'Debug.Print x(i) x2 = Split(x(i), ChrW(8236) & ChrW(32) & ChrW(32)) For j = LBound(x2) To UBound(x2) 'Debug.Print x2(j) a = Replace(x2(j), ChrW(8234), "") a = Replace(a, ChrW(8235), "") a = Replace(a, ChrW(8236), "") a = Trim(a) 'If j / 2 = Int(j / 2) Then If j = 0 Then 'even rst2.AddNew rst2!iName = a Else 'odd 'the numbers in Arabic are different (text) than those in English, so we have to get the value of the normal number '0=1632, 1=1633, 2=1634, 3=1635, 4=1636, 5=1637, 6=1638, 7=1639, 8=1640, 9=1641 'Arabic Numbers '0=48, 1=49, 2=50, 3=51, 4=52, 5=53, 6=54, 7=55, 8=56, 9=57 'ascii 'instead of using long if statements, lets make a formula: 0=48=1632-1584 rst2!iID = ChrW(AscW(a) - 1584) rst2.Update End If 'Debug.Print a Next j Next i rst.MoveNext Loop rst.Close: Set rst = Nothing End Function . اما البحث عن مشكلة مع اللغة العربية في ال او لفظ الجلالة ، فانا عملت وحدة نمطية تقوم بتغيير الاسم ، ولكن يتوجب عليك اضافة بقية الاسماء المقطوعة في الوحدة النمطية ، في المتغير arr : Public Function Reconstruct_Allah_Name(N As String) As String Dim arr() Dim x arr = Array("عطاا", "عبدا") For Each x In arr If InStr(N, x & " ") > 0 Then 'there is a space after the missing name Reconstruct_Allah_Name = Replace(N, x, x & "لله") Exit Function ElseIf InStr(N, x) + Len(x) - 1 = Len(N) Then 'the missing name is at the end of the line Reconstruct_Allah_Name = Replace(N, x, x & "لله") Exit Function Else Reconstruct_Allah_Name = N End If Next x End Function . ثم يقوم استعلام التحديث qry_Reconstruct_Allah_Name بمناداة الوحدة النمطية اعلاه ، وتغيير الكلمات 🙂 والعمل يتم بالنقر على الزر المشار اليه في الصورة ادناه ، في النموذج Form1 : . جعفر 1251.db1.mdb.zip
  19. وعليكم السلام 🙂 الشيء الوحيد الذي يمكنك عمله هو التنسيق الشرطي : . وللأسف ، اخفاء الحقل مو من ضمن القائمة !! ليش ما تغير لونه الى لون مميز لما يكون فاضي !! انا تركت لك المعادلة في الصورة اعلاه 🙂 جعفر
  20. الشكر لله على ما انعم ، ولك ولمن احببت مثل ما دعوت لي ، والشكر لك اخوي العود ابوخليل على جميل كلماتك 🙂 جعفر
  21. السلام عليكم 🙂 هذه طريقتي لتفكيك الحقل الى حقول 🙂 نأخذ المرفق كالمثال من هذا الرابط : . هكذا تبدو السجلات ، بالعين المجردة : . والمطلوب ان نقسم بيانات السجل الواحد الى: الاسم ورقم التسلسل (وخلينا نستخدم السجل الاول كمثال) ، ونريد النتيجة تكون : . هناك طريقتين لفرز هذه البيانات : عن طريق كود ليقرأ الحروف/الارقام/العلامات واحدا واحدا ، ثم بوضع شروط اذا جصلنا على رقم ، فنتوقف ونحفظ الجزء الاول ، ثم نواصل ... ، وهذه العملية مرهقة وتحتاج الى تفاصيل كثيرة ، عن طريق الكود ، ولكن بإستخدام الدالة Split ، ويشترط فيها ان نعرف اين (بعد اي حرف/رقم/علامات) نقسم السطر ، ولنسمية شرط القطع . سنتعامل مع الطريقة الثانية وهي الاسهل 🙂 لمعرفة شرط القطع ، يمكننا ان نتعامل مع الحروف/الارقام/العلامات مباشرة ChrW ، او نتعامل مع ارقام هذه (الحروف/الارقام/العلامات) AscW ، وانا لا استغني عن هذه الصورة المرفقة لعملي ، الحرف Chr ، ومقابله رقمه Dec : . وبالنسبة للحروف العربية ، هذا رابطها : https://sites.psu.edu/symbolcodes/languages/mideast/arabic/arabicchart/ او https://www.ssec.wisc.edu/~tomw/java/unicode.html#x0600 وقد قمت باخذ البيانات من الموقع ورتبتها في صفحة واحد : فمثلا اول حروف اسم ابراهيم : ا = 1575 ، ب = 1576 ، ر = 1585 ، بمعنى AscW(ا) = 1575 , AscW(ب) = 1576 , AscW(ر) = 1585 والعكس يكون ChrW(1575) = ا , ChrW(1576) = ب , ChrW(1585) = ر . للحصول على الاسم ، نريد ان يكون لدينا شرط القطع بعد الاسم وقبل بداية الرقم (اي في المنطقة 1) ، للحصول على التسلسل ، نريد ان يكون لدينا شرط القطع بعد التسلسل وقبل بداية الاسم التالي (اي في المنطقة 2) ، لمعرفة شرط القطع يجب علينا ان نحلل البيانات التي يراها الكمبيوتر ، وذلك بتحويل الحروف/الارقام/العلامات الى AscW ، هذا الكود يقوم بهذه العملية: Public Function Split_Names() Dim rst As DAO.Recordset Dim x() As String Dim i As Long Dim a As String Set rst = CurrentDb.OpenRecordset("Select * From MyTxt_from_pdf") Do Until rst.EOF For i = 1 To Len(rst!Field1) a = Mid(rst!Field1, i, 1) 'الحروف/الارقام/العلامات a = a & "(" & AscW(a) & ") " 'رقمها AscW Debug.Print a Next i Loop rst.Close: Set rst = Nothing End Function ونناديه من نافذة الكود هكذا (يجب ان يكون الكيبور باللغة الانجليزة عند كتابة علامة الاستفهام) : . ونرى ان النتيجة للسجل الاول فقط : . وبعد التدقيق ، نلاحظ ان في نهاية الارقام نرى ان AscW التالية متكررة 8236 ثم 8236 ثم 32 ثم 32 ، وبذلك يمكننا استعمال هذه كشرط القطع بعد الاسم ا(1575) ق(1602) ل(1604) ح(1581) ا(1575) د(1583) م(1605) ح(1581) ي(1610) ا(1575) م(1605) و(1608) د(1583) د(1583) س(1587) ه(1607) ?(8236) ?(8236) ?(8236) -32 -32 -32 -32 -32 -32 . بعد الرقم 3(1635) 2(1634) ?(8236) ?(8236) ?(8236) ?(8236) -32 -32 -32 -32 . وعليه نستعمل هذا الكود ، ونرى نتيجته (للسجل الاول) : Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) Debug.Print x(i) Next i rst.MoveNext Loop ونتيجته ?ابراهيم احمد يحيى احمد? ??3 ?ابتهاج سامح نسيم اقلديوس? ??2 ?ابتسام محمد عبدا حماده? ??1?? . والآن خلينا نفكك الاسم من الرقم : Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) 'Debug.Print x(i) x2 = Split(x(i), ChrW(8236) & ChrW(32) & ChrW(32)) For j = LBound(x2) To UBound(x2) Debug.Print x2(j) Next j Next i rst.MoveNext Loop والنتيجة ?ابراهيم احمد يحيى احمد ??3 ?ابتهاج سامح نسيم اقلديوس ??2 ?ابتسام محمد عبدا حماده ??1?? . ونلاحظ من القائمة اعلاه ، ان علامات الاستفهام ارقامها ?(8235) ?(8234) ?(8236) . الخطوة الاخيرة هي تنظيف النتيجة من علامات الاستفهام هذه عن طريق الامر Replace ، والتخلص من المسافة الزائدة قبل وبعد النتيجة عن طريق الامر Trim ، وبعدها نريد ان نحفظ الاسم في اول حقل ، والرقم في الحقل الثاني: LBound دائما تساوي صفر Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) 'Debug.Print x(i) x2 = Split(x(i), ChrW(8236) & ChrW(32) & ChrW(32)) For j = LBound(x2) To UBound(x2) 'Debug.Print x2(j) a = Replace(x2(j), ChrW(8234), "") a = Replace(a, ChrW(8235), "") a = Replace(a, ChrW(8236), "") a = Trim(a) 'If j / 2 = Int(j / 2) Then If j = 0 Then 'even Debug.Print "Name: ", a Else 'odd Debug.Print "ID: " & a End If 'Debug.Print a Next j Next i rst.MoveNext Loop والنتيجة Name: ابراهيم احمد يحيى احمد ID: 3 Name: ابتهاج سامح نسيم اقلديوس ID: 2 Name: ابتسام محمد عبدا حماده ID: 1 Name: احمد السيد على محمد ID: 6 Name: ابراهيم كمال ابراهيم محمد ID: 5 Name: ابراهيم سمير عياد عطاا ID: 4 Name: احمد حسن احمد رسلن ID: 9 Name: احمد حجازى على محمد ID: 8 Name: احمد السيد محمد عبدالرحمن ID: 7 . -------------------------------------------------------- وفي سياق هذا الموضوع ، كان عندي مشروع القرآن الكريم ، وحفظه في قاعدة البيانات بعدة طرق: كل صفحة عبارة عن سجل ، وفي جدول آخر ، كل سطر في سجل ، وفي جدول آخر ، كل آية في سجل وقمت بتنزيل القرآن الكريم من مجمع الملك فهد لطباعة المصحف الشريف : https://fonts.qurancomplex.gov.sa/wp02/حفص والمرفق يحتوي على الخط العثماني ، والذي تم عمله في المجمع ، ولذا فهو يحتوي على حروف/ارقام/علامات AscW تختلف عن غيرها من الخطوط ، والطريقة الوحيدة لتفكيك الاسطر كانت بإتباع خطوات شبيهه بالخطوات اعلاه 🙂 جعفر
  22. السلام عليكم 🙂 هذا احد البرامج 🙂 الموقع : http://www.xpdfreader.com/about.html رابط التحميل : https://dl.xpdfreader.com/xpdf-tools-win-4.02.zip رابط البرامج في ملف التنزيل : http://www.xpdfreader.com/support.html وتوجد في الملف اوامر كل برنامج منهم ، وهذه اوامر البرنامج pdftoText الذي تريد العمل عليه : http://www.xpdfreader.com/pdftotext-man.html تجربتي قبل ان اكتب هذه المشاركة : استعملت احدى هذه الاوامر : pdftotext -enc UTF-8 -table M.pdf M.csv pdftotext -enc UTF-8 -table -nopgbrk M.pdf M.txt . وبالاكسس يصبح (رجاء مراعاة اسماء مجلدات مكان البرنامج ، وملف pdf ، وملف النتيجة txt ) : Dim App_Name As String Dim Input_File As String Dim Output_File As String Dim Command_Line As String App_Name = Chr(34) & Application.CurrentProject.Path & "\Data\pdftotext.exe" & Chr(34) Input_File = Chr(34) & Application.CurrentProject.Path & "\pdf_Files\abc.pdf" & Chr(34) Output_File = Chr(34) & Application.CurrentProject.Path & "\txt_Files\myTxt_from_pdf.txt" & Chr(34) Command_Line = App_Name & " -enc UTF-8 -table -nopgbrk " & Input_File & " " & Output_File 'Debug.Print Command_Line Shell_n_Wait Command_Line, vbHide . والوحدة النمطية Shell_n_Wait موجودة في البرنامج في هذا الرابط : https://www.officena.net/ib/topic/90906-كارنيهات-باستخدام-باركود-ماتركس-qr-code/ ثم لما نستورد/نربط ملف txt او csv لآول مرة الى الاكسس ، يجب ان نخبره بأن بتنسيق وصيغة البيانات : . . . ومثل ما اخبرتك في مشاركتي السابقة ، النتيجة لن تكون بالتنسيق الذي تريده ، فيجب عليك استعمال مجموعة من الاستعلامات في الاكسس ، لتفريق البيانات على الحقول الصحيحة 🙂 جعفر
×
×
  • اضف...

Important Information