بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9903 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
السلام عليكم 🙂 ليش ما تحبون الوحدات النمطية ، سهلة ولذيذة 🙂 بدل هذا الحقل UnionUnit: IIf([units]="جرام","كيلو جرام",IIf([units]="كيلو جرام","كيلو جرام",IIf([units]="قرص","قرص"))) استعمل units2: G_to_K_u([units],[wzn]) وهاي الوحدة النمطية ماله Public Function G_to_K_u(u As String, w As Double) As String 'convert Gram to Kilogram 'units If u = "جرام" Then G_to_K_u = "كيلو جرام" Else G_to_K_u = u End If End Function . وبدل هذا الحقل UnionMeasure: IIf([units]="جرام",Format([wzn]/1000,"#,##0.000"),IIf([Units]="كيلو جرام",Format([wzn],"#,##0.000"),IIf([units]="قرص",[wzn]))) استعمل wzn2: G_to_K_w([units],[wzn]) وهاي الوحدة النمطية ماله Public Function G_to_K_w(u As String, w As Double) As Double 'convert Gram to Kilogram 'wzn If u = "جرام" Then G_to_K_w = w / 1000 Else G_to_K_w = w End If End Function . جعفر 1202.Qs For Weight (UP2).mdb.zip
-
وعليكم السلام اخوي احمد 🙂 اهلا وسهلا بك في المنتدى 🙂 رجاء قراءة قوانين المنتدى ، حتى تستفيد الاستفادة القصوى من المنتدى 🙂 قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف جعفر
-
طريقة لحل مشكلة SQL injection في فورم دخول المستخدم
jjafferr replied to rey360's topic in قسم الأكسيس Access
يمكننا بهذه الطريقة التغلب على هذه الحركات في اسم المستخدم او كلمة السر ، بحيث نستبدل اشارة ' بـ _ ونقارن الكلمات بالجدول : Dim u, p As String u = Replace(Me.Texte1, "'", "_") p = Replace(Me.Texte3, "'", "_") والآن جربها على اي من الطرق التي اقترحتها : Dim rs As dao.Recordset Dim u, p As String u = Replace(Me.Texte1, "'", "_") p = Replace(Me.Texte3, "'", "_") ' Set rs = CurrentDb.OpenRecordset("select * from test1", dbOpenDynaset) ' If Not rs.EOF Then rs.MoveFirst ' Debug.Print "login='" & u & "'" & " and passe='" & p & "'" ' rs.FindFirst ("login='" & u & "'" & " and passe='" & p & "'") ' If rs.NoMatch = True Then ' MsgBox "????" ' Else ' DoCmd.OpenForm "test2", acNormal ' DoCmd.Close acForm, Me.Name, acSaveNo ' End If ' ' Set rs = Nothing ' If DCount("*", "test1", "login='" & u & "'" & " and passe='" & p & "'") = 0 Then ' MsgBox "????" ' Else ' DoCmd.OpenForm "test2", acNormal ' DoCmd.Close acForm, Me.Name, acSaveNo ' End If Dim myWhere As String myWhere = "login='" & u & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & p & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe Debug.Print myWhere ' rs.FindFirst myWhere ' ' او If DCount("*", "test1", myWhere) = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If . جعفر -
طريقة لحل مشكلة SQL injection في فورم دخول المستخدم
jjafferr replied to rey360's topic in قسم الأكسيس Access
شكرا جزيلا اخوي خالد 🙂 يا ريت اخوي محمد (rey360) اعطيتنا هذه التفاصيل من البداية 🙂 على العموم ، انا ارفقت لك هذا الكود في مشاركاتي السابقة ، فرجاء تجربه : Dim myWhere As String myWhere = "login='" & Me.Texte1 & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & Me.Texte3 & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe Debug.Print myWhere If DCount("*", "test1", myWhere) = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If جعفر -
طريقة لحل مشكلة SQL injection في فورم دخول المستخدم
jjafferr replied to rey360's topic in قسم الأكسيس Access
هلا ومرحبا بيك ، وبأهلك ، وبالجمل اللي رحل بك 🙂 -
طريقة لحل مشكلة SQL injection في فورم دخول المستخدم
jjafferr replied to rey360's topic in قسم الأكسيس Access
شكرا جزيلا 🙂 انا ارد على السؤال اثناء تناول الغداء ، فمعذور فالمعادلة الصحيحة تكون : If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") = 0 Then جعفر -
طريقة لحل مشكلة SQL injection في فورم دخول المستخدم
jjafferr replied to rey360's topic in قسم الأكسيس Access
وعليكم السلام 🙂 انا ما فهمت السؤال ، ولكن وجدت خطأ في الكود 🙂 وعلشان تعرف وين الخطأ ، دائما استعين بـ Debug.print ، وفي حالتك : Debug.Print "login='" & Me.Texte1 & "'" & "and passe='" & Me.Texte3 & "'" والنتيجة login='mmm'and passe='bb' . وتلاحظ انه ما في مسافة قبل and لهذا السبب ، الكود بعد التعديل يصير : Dim rs As dao.Recordset Set rs = CurrentDb.OpenRecordset("select * from test1", dbOpenDynaset) ' If Not rs.EOF Then rs.MoveFirst Debug.Print "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'" rs.FindFirst ("login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") If rs.NoMatch = True Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If rs.close Set rs = Nothing . وتستطيع ان تستعمل كود اخف : If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") > 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If . ولكن هذين الكودين يعتمدون على المعيار ، لذلك اعطيك طريقتي في عمل المعيار ، واللي يسهل عليك : . فيكون الكود في حالتك : Dim myWhere As String myWhere = "login='" & Me.Texte1 & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & Me.Texte3 & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe rs.FindFirst myWhere او If DCount("*", "test1", myWhere) > 0 Then جعفر -
كود حذف عند ظهور اي رسالة خطأ في نموذج ادخال بيانات
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
تفضل Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 2113 Then Response = acDataErrContinue me.undo msgbox "ادخل البطاقة مرة اخرى" me.ID.setfocus End If End Sub . ولكني لازلت اقول بأنه ممكن فيه طريقة افضل من هذه ، تلك التي يتسلسل فيها دخول البيانات من البطاقة !! لأنك بهذه الطريقة تضطر تصيد الاخطاء واحدة خلف الاخرى وووو ، بينما مثلا : لما تُدخل البطاقة في الجهاز ، يجب ان يكون التركيز على حقل رقم البطاقة ، وآخر حقل يتم ادخاله هو تاريخ الانتهاء ، ومنها ينتقل التركيز للحقل التالي ، هنا ، وعلى حدث "بعد التحديث" للحقل تاريخ الانتهاء ، يمكنك ان تظهر رسالة: هل تريد حفظ البيانات ، نعم ، لا : Dim Msg, Style, Title, Response Msg = "هل تريد حفظ البيانات ?" & vbcrlf & _ "نعم: احفظ البيانات" & vbcrlf & _ "لا : لا تحفظ البيانات" Style = vbYesNo + vbCritical + vbDefaultButton1 ' Define buttons. Title = "تم ادخال البيانات، ولكنها لم تُحفظ بعد" ' Define title. ' context. ' Display message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' User chose Yes. docmd.runcommand accmdsaverecord ' احفظ السجل me.id.setfocus 'وانتقل الى حقل ID مرة اخرى استعدادا لإدخال بيانات بطاقة جديدة Else ' User chose No. me.undo ' Perform some action. me.id.setfocus 'وانتقل الى حقل ID مرة اخرى استعدادا لإدخال بيانات بطاقة جديدة End If . الميزة في ظهور الرسالة هو ، انه لا يسمح لك عمل اي شيء آخر في السجل ، إلا بعد ان تستجيب للرسالة ، مما يسهل عليك ولا تحتاج الى بقية الكود ولا ولا 🙂 Private Sub Form_Error(DataErr As Integer, Response As Integer) Dim x As Integer x = DataErr If x > 0 Then ' Response = acDataErrContinue 'ÞÏ áÇ ÊÍÊÇÌ Çáì åÐÇ ÇáÓØÑ Me.Undo End If End Sub هو بمثابة هذا الكود لأن تقريبا جميع الاخطاء ارقامها موجبه Private Sub Form_Error(DataErr As Integer, Response As Integer) Response = acDataErrContinue Me.Undo End Sub جعفر -
كود حذف عند ظهور اي رسالة خطأ في نموذج ادخال بيانات
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
1. هل جربت الكود ، وتم عمل اللازم ؟ 2. تصطاد رقم الخطأ ، ثم تضيف الكود برقم الخطأ 🙂 بس اعتقد بأن موضوعك لا يتم التعامل معه بهذه الطريقة !! على حسب تجربتي مع سكانر MRZ : فطريقة قراءة البطاقة ، سطر بسطر ، ولذلك ، ولما يصل الى السطر الاخير ، تستطيع: 1. ان تحفظ السجل تلقائيا ، وتنقل التركيز للسطر الاول (انظر رقم2) ، 1و 2. تجعل التركيز يذهب للسطر الاول (وتكون القيمة فيه مظلله) ، بحيث اذا اراد ان يُدخل بطاقة ثانية ، فلا يحصل على خطأ 🙂 جعفر -
كود حذف عند ظهور اي رسالة خطأ في نموذج ادخال بيانات
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
في هذه الحالة ، السجل لم يتم حفظه بعد ، فلا يمكنك حذفه ، وانما يمكنك إلغاءه 🙂 Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 2113 Then Response = acDataErrContinue 'قد لا تحتاج الى هذا السطر me.undo End If End Sub او تحذف بيانات النموذج : me.text1="" me.text2="" ومن الصورة الاخيرة اللي ارفقتها ، انت لم تنسخ الكود بالكامل ، نسيت اهم سطر : جعفر -
كود حذف عند ظهور اي رسالة خطأ في نموذج ادخال بيانات
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
طبعا قصدك مع رقم الخطأ ، وإلا ، وبحدوث اي رسالة خطأ ، سيتم حذف الاخضر واليابس 🙂 اخي حسين ، صدقني لما قلت لك ، هذه طريقة اصطياد الخطأ ، والنتيجة ، وحسب طلبك : جعفر -
كود حذف عند ظهور اي رسالة خطأ في نموذج ادخال بيانات
jjafferr replied to حسين العربى's topic in قسم الأكسيس Access
السلام عليكم 🙂 عندك رقم الخطأ ، صح ؟ اذا ما عندك : على حدث "on Error" للنموذج (وليس للحقل) ، اكتب Private Sub Form_Error(DataErr As Integer, Response As Integer) MsgBox DataErr End Sub . وبعد ان تصطاد رقم الخطأ (مثلا 1111) ، استعمل كود اخوي احمد لحذف السجل : Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 1111 Then Response = acDataErrContinue 'قد لا تحتاج الى هذا السطر DoCmd.RunCommand acCmdDeleteRecord End If End Sub . جعفر -
وعليكم السلام 🙂 جرب ضغط واصلاح ، وهذا الرابط قد ينفعك : جعفر
-
السلام عليكم استاذ فايز 🙂 بدل ان تطلب البيانات من الجدول 6 مرات : . تقدر تطلبها مرة واحدة فقط : جعفر
-
تفضل 🙂 Private Sub B_Code_AfterUpdate() If DCount("*", "المستخدمين", "[المعرف]=" & [Forms]![الدخول]![B_Code]) > 0 Then Dim SplitUp() As String Dim StrMyLookup As String StrMyLookup = DLookup("[الصلاحية] & '|' & [اضافة] & '|' & [حذف] & '|' & [تعديل] & '|' & [كلمة السر] & '|' & [اسم المستخدم]", "المستخدمين", "[المعرف]=" & [Forms]![الدخول]![B_Code]) SplitUp = Split(StrMyLookup, "|") Me.الصلاحية = SplitUp(0) Me.اضافة = SplitUp(1) Me.حذف = SplitUp(2) Me.تعديل = SplitUp(3) Me.كلمة_السر = SplitUp(4) Me.اسم_المستخدم = SplitUp(5) Else Exit Sub End If End Sub جعفر 1198.مستخدم.accdb.zip
-
وعليكم السلام 🙂 عندك حقل بإسم المعرف ، فهل هذا حقل الباركود ؟ جعفر
-
استفسار عن إمكانية مطابقة البيانات مع الصورة
jjafferr replied to عفرنس's topic in قسم الأكسيس Access
اذن مشاركتي الآولى لاتزال ، طريقة العمل 🙂 جعفر -
استفسار عن إمكانية مطابقة البيانات مع الصورة
jjafferr replied to عفرنس's topic in قسم الأكسيس Access
يعني هذا البرنامج (إشراق) يقوم بعملية تحويل البيانات من صورة الجواز الى ملف txt/xls او اي ملف آخر ؟ -
استفسار عن إمكانية مطابقة البيانات مع الصورة
jjafferr replied to عفرنس's topic in قسم الأكسيس Access
شو اسمه البرنامج ؟ -
على حدث "بعد التحديث" ، كالعادة 🙂 جعفر
-
استفسار عن إمكانية مطابقة البيانات مع الصورة
jjafferr replied to عفرنس's topic in قسم الأكسيس Access
وعليكم السلام 🙂 اللي اشوفه من صورة ، واللي يمكن قراءته بجهاز قارئ الباركود : الهوية : فيها باركود اُحادي ، والباركود عبارة عن رقم ، ولا اعرف اذا هذا الرقم له علاقة بمعلومات الشخص ، او هو مجرد رقم تسلسل ، فلا ادري اذا ممكن الاستفادة منه ، الجواز : فيه باركود من نوع PDF417 ، وبحثت في الانترنت على جوازات سعودية ، وحاولت استعمل مجموعة من برامج قراءة الباركود في هاتفي ، لقراءة هذا الباركود ، واتضح انه لا يمكن قراءته (يمكن عند الجهات الرسمية Decoder خاص لقراءة هذا الباركود) ، لذا ، كذلك لا يمكن الاستفادة منه ، الجواز : فيه كود من نوع MRZ (في اسفل الجواز ، ذو السطرين) ، وهاي مافيه بيانات عربية ، وفيه : الاسم بالانجليزي ، الجنسية ، رقم الجواز ، تاريخ الميلاد ، تاريخ الاصدار ، وتاريخ الانتهاء ، فهنا ممكن تستفيد من هذه البيانات 🙂 طبعا علشان تقدر تقرأ هذه البيانات ، لازم يكون عندك برنامج يقرأ MRZ ، ويوجد منهم الكثير ، وحسب تجربتي في استعمال برامج تحويل الصورة الى نص (OCR) ، فارى ان برنامج Abbyy Fine Reader عنده القابلية ، وصحيح ممكن تستعمل نسخة Professional ولكن نسخة Corporate هي الاصلح في حالتك ، ويجب ان يكون البرنامج متنصب على الكمبيوتر ، والذي نطلب منه ان يصدر بيانات MRZ الى ملف TXT او xls ، وبإسم كل ملف حسب اسم ملف pdf الموجود عندك ، ومنه نعمل كود لقراءة هذه الملفات ، ونُدخل/نقارن البيانات بالموجوده عندك ، والطريقة الاخرى ، انك تستعمل برنامج آخر من شركة Abbyy واسمه ABBYY FlexiCapture ، وفيه امكانيات مهولة ، بحيث تخبره بكل حقل من الجواز ومافيه ، فيقوم بجمع جميع بيانات الجواز ، باللغة العربية والانجليزية ، ويحفظها في ملف xls ، ومنه نعمل كود لقراءة هذه الملفات ، ونُدخل/نقارن البيانات بالموجوده عندك 🙂 سهلة هاه 🙂 ولكن وقبل ان تشمّر عن ساعديك وتشتري برنامج ABBYY FlexiCapture ، رجاء انظر الى مواصفات الصورة التي قمت بعمل سكان لها ، فإذا كان نقاوة الصورة اقل من 300dpi ، فلا تتعب نفسك ، فلن يستطيع برنامج OCR من قراءة بيانات الصورة ، وخصوصا بالعربية !! جعفر -
وعليكم السلام 🙂 1_اذا كانت قيمة الحقل رقم if a= 123 then 2_اذا كانت قيمة الحقل نص if a="abc123" then او if a='zxc23' then 3_اذا كانت قيمة الحقل تاريخ if a=#22-2-2020# then 4-اذا كان الحقل فارغ if len(a & "")=0 then جعفر
-
1. انا نصحتك انك ما تستعمل حدث "عند التغيير" في البحث ، وخصوصا في شبكة ، لأن برنامجك بيصير جدا بطيء ، بحيث بعد ان تضغط على زر الرقم يحتاج البرنامج الى عدة ثواني حتى يُدخل الرقم التالي .. ، واخبرك مسبقا ، بأن المستخدم لن يقبل بهذه السرعة ، ولن يقبل بطريقة اخرى للبحث ، ولا توجد طريقة لحل هذه المشكلة ، وستكون متورط !! 2. تفضل : . جعفر
-
لما تكون في صفحة الكود VBE ، اضغط على الزر F1 ستأتيك هذه النافذة ، اكتب في مكان البحث كلمة: mask ، وستحصل على جميع التعليمات : . جعفر
-