-
Posts
9903 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
وعليكم السلام 🙂 الافضل ان تجعل الاستعلام مصدر بيانات للنموذج ، لأنك هناك تقدر تعمل تصفية ، و فرز (التسلسل) الذي تريده ، ويمكن عمل فرز لأاكثر من حقل ، مثلا: الفرز الاول يكون باسم القسم ، ثم الفرز التالي يكون للدرجة ، ثم الفرز التالي يكون للإسم ، وهكذا 🙂 جعفر
-
سؤوال مهم في خاصية تقسيم قاعدة البيانات
jjafferr replied to محمد التميمي's topic in قسم الأكسيس Access
وعليكم السلام 🙂 هذا رد على سؤالك : . والبرنامج يتحكم بهذا الكم الهائل من المرفقات في اول 2018 ، وفي 8/2019 وصل حجم المرفقات الى اكثر من 1 تيرا بايت : جعفر -
السلام عليكم 🙂 وهذه طريقة اخرى ، للنواتين 32 و 64بت : . او ايش رايك في كلمة سر متغيرة ، يعني مافي داعي تخاف احد يشوفها ، لأنها تتغير دائماً كل دقيقة 🙂 جعفر
-
جلب تاريخ السيرفر بدل من تاريخ الجهاز الي به البرنامج
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
شكرا جزيلا اخي حسين 🙂 شرح وافي 🙂 بس اللي لفت نظري في الفيديو ، انك تقرأ بيانات الهوية من قارئ البطاقة المدنية تلقائيا ، فياريت تتفضل علينا بالطريقة هنا 🙂 جعفر -
جلب تاريخ السيرفر بدل من تاريخ الجهاز الي به البرنامج
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
شكرا جزيلا اخي حسين 🙂 جعفر -
جلب تاريخ السيرفر بدل من تاريخ الجهاز الي به البرنامج
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
الله ان شاء الله يقويك على هذا العمل ، ويعطي الوالد الصحة والعافية ، ياريت تتفضل علينا بهذا الحل 🙂 جعفر -
حياك الله 🙂 جعفر
-
حياك الله 🙂 جعفر
-
عدم فتح تقرير طالما البيانات الخاصة بة فارغة
jjafferr replied to jo_2010's topic in قسم الأكسيس Access
بس الظاهر انك فهمت السؤال صح ، بينما انا قرأت رأس الموضوع ، وما لاحظت الملاحظة إلا بعد ان وضعت ملاحظتي !! على العموم ، هذه طريقتي ، لحدث الزر (طبعا بالاضافة الى الكود في مشاركتي السابقة) : 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 -
عدم فتح تقرير طالما البيانات الخاصة بة فارغة
jjafferr replied to jo_2010's topic in قسم الأكسيس Access
وعليكم السلام 🙂 في التقرير ، في حدث No Data ، اكتب هذا الكود (طبعا يمكنك حذف سطر الرسالة، ولكني افضل ان يعرف المستخدم ان البرنامج يعمل وان التقرير فارغ) : Private Sub Report_NoData(Cancel As Integer) MsgBox "لا توجد بيانات" Cancel = True End Sub جعفر -
السلام عليكم 🙂 الخطوة الاولى وبالتفصيل هي تصفية البيانات : . وهذا الكود كاملا لبرنامجك ، وحفظ البيانات في الجدول: 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
-
وعليكم السلام 🙂 الشيء الوحيد الذي يمكنك عمله هو التنسيق الشرطي : . وللأسف ، اخفاء الحقل مو من ضمن القائمة !! ليش ما تغير لونه الى لون مميز لما يكون فاضي !! انا تركت لك المعادلة في الصورة اعلاه 🙂 جعفر
-
الشكر لله على ما انعم ، ولك ولمن احببت مثل ما دعوت لي ، والشكر لك اخوي العود ابوخليل على جميل كلماتك 🙂 جعفر
-
السلام عليكم 🙂 هذه طريقتي لتفكيك الحقل الى حقول 🙂 نأخذ المرفق كالمثال من هذا الرابط : . هكذا تبدو السجلات ، بالعين المجردة : . والمطلوب ان نقسم بيانات السجل الواحد الى: الاسم ورقم التسلسل (وخلينا نستخدم السجل الاول كمثال) ، ونريد النتيجة تكون : . هناك طريقتين لفرز هذه البيانات : عن طريق كود ليقرأ الحروف/الارقام/العلامات واحدا واحدا ، ثم بوضع شروط اذا جصلنا على رقم ، فنتوقف ونحفظ الجزء الاول ، ثم نواصل ... ، وهذه العملية مرهقة وتحتاج الى تفاصيل كثيرة ، عن طريق الكود ، ولكن بإستخدام الدالة 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 تختلف عن غيرها من الخطوط ، والطريقة الوحيدة لتفكيك الاسطر كانت بإتباع خطوات شبيهه بالخطوات اعلاه 🙂 جعفر
-
السلام عليكم 🙂 هذا احد البرامج 🙂 الموقع : 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 لآول مرة الى الاكسس ، يجب ان نخبره بأن بتنسيق وصيغة البيانات : . . . ومثل ما اخبرتك في مشاركتي السابقة ، النتيجة لن تكون بالتنسيق الذي تريده ، فيجب عليك استعمال مجموعة من الاستعلامات في الاكسس ، لتفريق البيانات على الحقول الصحيحة 🙂 جعفر
-
ملفات pdf نوعين: - نوع النص ، ويمكن استخلاص النص عن طريق بعض البرامج الصغيرة بأوامر Command Line من الاكسس ، وقد جربت احد البرامج فأعطاني النص حسب الحقول في الملف (اي انها مبعثرة بدون مسميات الحقول) ، - نوع الصور ، مثل الملفات اللي ينتجها السكانر ، ولإستيراد البيانات منها ، يجب تحويلها اولا الى نص عن طريق برامج OCR ، ولا توجد برامج صغيرة لعمل هذا للغة العربية 🙂 للعلم ، انا كنت من ضمن فريق عمل Abbyy في تجربة استعمال برنامجها Fine Reader لتحويل الصور الى نص عن طريق OCR في بداية مشوارهم ، واذكر اني اقترحت عليهم بعض الملاحظات التي كان لها دور في عمل قفزة لعمل البرنامج (لا اتكلم برمجيا ، وإنما بملاحظاتي كوني اتحدث واكتب العربية) ، ولكني ولشدة ضغط العمل في اوقات معينة ، فلم استطع تلبية طلباتهم ، وتوقفت عنهم 🙂 جعفر
-
ممكن تختصرها الى : dl = Nz(DMax("idym", "tblNum", "(year([ddate]) & month([ddate]))='" & Format(Me.dDate, "yyyym") & "'"), 0) rd = int(Right([dl],3)) + 1 Me.IdYM = Format(Me.dDate, "yyyy/mm") & "/" & Format(rd, "000") ولكن تذكر ، انك تأخذ التاريخ من الحقل الآخر ، وليس من نفس الحقل الذي فيه الرقم. جعفر
-
وعليكم السلام 🙂 في سنة 2009 كان لي تجربة مع برنامج https://www.abbyy.com/ والظاهر الآن اسمه https://pdf.abbyy.com/ كان الافضل (في اللغة الانجليزية) في تحويل الصور (صور الرسائل التي تم ادخالها في الكمبيوتر بالماسح الضوئي scanner ، او ملفات pdf التي تحتوي على صور) الى ملف وورد بصيغة كلمات يمكن التعديل عليها ، ويمكن بنسخة Corporate ، ان يقوم البرنامج بالعمل تلقائيا ، وممكن ان يقوم الاكسس بإعطاء التعليمات ، وفي النهاية يكون عندك ملف txt وتأخذ بياناته الى جدول الاكسس. للغة العربية ، وقتها كانت نسبة صحّة/دقة البيانات المأخوذة من الصور تساوي حوالي 30-50% ، ولا علم لي بها الآن 🙂 جعفر
-
جلب تاريخ السيرفر بدل من تاريخ الجهاز الي به البرنامج
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
رحم الله إمرء عرف قدر نفسه 🙂 فأنا لا علم لي بأوامر SQL Server ، وحاولت ، لهذا السبب اخبرتك بأني : . لذا انصحك ان تستجدم كود اخي @صالح حمادي ، ويكون هكذا بمعلوماتك ، مع مراعاة ان تكون Dim str_conn As New ADODB.Connection Dim RS As New ADODB.Recordset str_conn.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=\\128.122.1.130" Set RS = str_conn.Execute("select GETDATE()") 'MsgBox RS(0) Me.srvr_Date_Time = RS(0) Set RS = Nothing str_conn.Close او نمشي في طريق اكسس : جرب هذا الكود ، فهو يقوم بإضافة سجل ، ثم يقوم بالمقارنة : Private Sub Form_Load() 'Me.iCompare = IIf(Format([Server_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM") = Format([Local_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM"), "OK", "Not OK") DoCmd.GoToRecord , , acNewRec Me.Temp = Now() If Format([Server_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM") = Format([Local_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM") Then Me.iCompare = "OK" Me.iCompare.ForeColor = vbBlack Else Me.iCompare = "Not OK" Me.iCompare.ForeColor = vbRed End If End Sub جعفر -
شكرا لك اخي محمد ، ولكن الاستاذ عبدالله يقول استعمل DMax ولا تستعمل DCount ، للسبب رقم 2 في ملاحظتي اعلاه 🙂 جعفر
-
هنا ملاحظة من الاستاذ المحاسب عبدالله قدور ، لما استعملت Dcount 🙂 جعفر
-
هولولولولولو وي (انا ازغرد ) الحمدلله 🙂 بس طلب الآن ، بما انك عرفت المشكلة ، فرجاء تجرب بقية البرامج ، لأننا جميعا بذلنا الوقت والجهد ، ونستحق ان نعرف اذا برامجنا اشتغلت (اعتبرها ضريبة وعليك دفعها 🙂 ) جميعنا جربنا برامجنا بالمرفقات اللي وضعتها انت ، واشتغلت ، فالظاهر انك تتكلم عن ملف آخر لم ترفقه !! وشكرا اخوي kanory على إحسانك وتفضلك 🙂 جعفر
-
جلب تاريخ السيرفر بدل من تاريخ الجهاز الي به البرنامج
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
وعليكم السلام 🙂 قمت بتغيير الكود ليناسب اسم الحقل 🙂 ولكن ومثل ما اخبرتك في آخر مشاركتي السابقة ، عملت جدول بإسم tbl_DateTime ، ونموذج يأخذ بياناته من الجدول ، ومن الجدول نأخذ وقت وتاريخ السيرفر ، فرجاء حوّل هذا الجدول الى SQL Server (بحيث انه لا يكون جدول اكسس) ، و اربطه مع النموذج ، ورجاء اخبرنا بالنتيجة : . اما المقارنة ، فهي بدون الثواني. جعفر 1250.Server_DateTime.mdb.zip -
العفو اخوي ابو ابراهيم ، فأنا من المتابعين لعملك دائما ، وبالتفصيل 🙂 جعفر
-
اهلا وسهلا بك اخي الكريم في المنتدى 🙂 كنت سأتغاضى عن مخالفتك لقوانين المنتدى ، بوضع عنوان للسؤال لا يعطي مدلول للموضوع ، ولكن الواضح انك تعدمت بوضع عنوان لا علاقة له اصلا بالموضوع. يُغلق. ومرحبا بك بعمل موضوع آخر ، بمراعاة شروط المنتدى 🙂 جعفر