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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    415

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

  1. يا باشمهندس محمد ، يعني لازم نعطيك كل اسرارنا !! هاي الله يسلمك نسخ/لصق آخر الليل كلامك صحيح ، مافي داعي للوزن هنا 🙂 جعفر
  2. او ممكن على اذا كان اسم قسم التفصيل بالعربي Private Sub تفصيل_Format(Cancel As Integer, FormatCount As Integer) End Sub اذا كان اسم قسم التفصيل بالانجليزي Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) End Sub جعفر
  3. حياك الله 🙂 هناك ملاحظات يجب ان تقوم بها : 1. حذف الجدول ، والحقول في النماذج التابعة له : 2. حذف جميع الحقول في الجدول All_P : ابتداءً من A_11 الى P_85 3. 4. اذا تم تنظيف ضرس اليوم ، فيعمل البرنامج حوله حلقة بلون اخضر ، طيب ، وبعد سنه عمل له حشو ، فيصير لون الضرس باللون الارزق ، حاليا (واعتقد هي الطريقة الصحيحة) ، فلون التنظيف الاخضر سيتم استبداله باللون الارزق ، كون لون العملية الاخيرة فقط هي التي تشير اليها الصورة. جعفر
  4. اخي طارق 🙂 كلامنا كله عن سحب البيانات : الموضوع يختلف كليا فيما اذا كانت الشبكة داخلية ، او على الانترنت ، لذا يجب ان تعرف بالضبط شو اللي تريده !! لذا تلاحظ اسئلتنا انا والاستاذ صالح تصب في هذه الناحية 🙂 وما يكفي ان تقول على الانترنت، بل يجب ان تعطينا معلومات اكثر لوسمحت 🙂 جعفر
  5. حياك الله 🙂 نعم تقدر تضيف اي عدد تريد ، وهذا الكود المسؤول عن الاخفاء (للخلع) ، او كأنك نقرت عليه ويتحول لونه للأزرق (للحشو) ، او عليه الدائة الحمراء (للتركيب) ، وتم اضافة حلقة خضراء للتنظيف في نهاية الكود : 'mark the tooth If rst!Service_Type = "خلع" Then 'خلع Me(iTooth & rst!Tooth_Number).Visible = False Me(iTooth & rst!Tooth_Number).BorderStyle = 0 'transparent ElseIf rst!Service_Type = "حشو" Then 'حشو Me(iTooth & rst!Tooth_Number) = -1 Me(iTooth & rst!Tooth_Number).BorderStyle = 0 'transparent ElseIf rst!Service_Type = "تركيب" Then 'تركيب Me(iTooth & rst!Tooth_Number).Visible = True Me(iTooth & rst!Tooth_Number).BorderStyle = 1 'solid Me(iTooth & rst!Tooth_Number).BorderWidth = 2 Me(iTooth & rst!Tooth_Number).BorderColor = RGB(255, 0, 0) ElseIf rst!Service_Type = "تنظيف" Then 'تنظيف Me(iTooth & rst!Tooth_Number).Visible = True Me(iTooth & rst!Tooth_Number).BorderStyle = 1 'solid Me(iTooth & rst!Tooth_Number).BorderWidth = 2 Me(iTooth & rst!Tooth_Number).BorderColor = RGB(0, 255, 0) End If . وبالنسبة لـ Service_Type ، فالافضل ان يكون له جدول مستقل ، بحيث تقدر وبدون برمجة ، ان تضيف اي نوع تريد 🙂 . وبسبب ان حقل الملاحظات صغير ، فلما تنقر عليه مرتين ، سترى نافذة اكبر تظهر (ZoomBox والتي تستطيع اظهارها بالضغط على F2) ، وتقدر ان تكتب فيها الملاحظة او مجرد ان تراها بالكامل 🙂 جعفر 1188.2.YOUSSEF_2020.accdb.zip
  6. السلام عليكم 🙂 ليش ما تحبون الوحدات النمطية ، سهلة ولذيذة 🙂 بدل هذا الحقل 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
  7. وعليكم السلام اخوي احمد 🙂 اهلا وسهلا بك في المنتدى 🙂 رجاء قراءة قوانين المنتدى ، حتى تستفيد الاستفادة القصوى من المنتدى 🙂 قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف جعفر
  8. يمكننا بهذه الطريقة التغلب على هذه الحركات في اسم المستخدم او كلمة السر ، بحيث نستبدل اشارة ' بـ _ ونقارن الكلمات بالجدول : 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 . جعفر
  9. شكرا جزيلا اخوي خالد 🙂 يا ريت اخوي محمد (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 جعفر
  10. هلا ومرحبا بيك ، وبأهلك ، وبالجمل اللي رحل بك 🙂
  11. شكرا جزيلا 🙂 انا ارد على السؤال اثناء تناول الغداء ، فمعذور فالمعادلة الصحيحة تكون : If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") = 0 Then جعفر
  12. وعليكم السلام 🙂 انا ما فهمت السؤال ، ولكن وجدت خطأ في الكود 🙂 وعلشان تعرف وين الخطأ ، دائما استعين بـ 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 جعفر
  13. تفضل 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 جعفر
  14. 1. هل جربت الكود ، وتم عمل اللازم ؟ 2. تصطاد رقم الخطأ ، ثم تضيف الكود برقم الخطأ 🙂 بس اعتقد بأن موضوعك لا يتم التعامل معه بهذه الطريقة !! على حسب تجربتي مع سكانر MRZ : فطريقة قراءة البطاقة ، سطر بسطر ، ولذلك ، ولما يصل الى السطر الاخير ، تستطيع: 1. ان تحفظ السجل تلقائيا ، وتنقل التركيز للسطر الاول (انظر رقم2) ، 1و 2. تجعل التركيز يذهب للسطر الاول (وتكون القيمة فيه مظلله) ، بحيث اذا اراد ان يُدخل بطاقة ثانية ، فلا يحصل على خطأ 🙂 جعفر
  15. في هذه الحالة ، السجل لم يتم حفظه بعد ، فلا يمكنك حذفه ، وانما يمكنك إلغاءه 🙂 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="" ومن الصورة الاخيرة اللي ارفقتها ، انت لم تنسخ الكود بالكامل ، نسيت اهم سطر : جعفر
  16. طبعا قصدك مع رقم الخطأ ، وإلا ، وبحدوث اي رسالة خطأ ، سيتم حذف الاخضر واليابس 🙂 اخي حسين ، صدقني لما قلت لك ، هذه طريقة اصطياد الخطأ ، والنتيجة ، وحسب طلبك : جعفر
  17. السلام عليكم 🙂 عندك رقم الخطأ ، صح ؟ اذا ما عندك : على حدث "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 . جعفر
  18. وعليكم السلام 🙂 جرب ضغط واصلاح ، وهذا الرابط قد ينفعك : جعفر
  19. السلام عليكم استاذ فايز 🙂 بدل ان تطلب البيانات من الجدول 6 مرات : . تقدر تطلبها مرة واحدة فقط : جعفر
  20. تفضل 🙂 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
  21. وعليكم السلام 🙂 عندك حقل بإسم المعرف ، فهل هذا حقل الباركود ؟ جعفر
  22. اذن مشاركتي الآولى لاتزال ، طريقة العمل 🙂 جعفر
  23. يعني هذا البرنامج (إشراق) يقوم بعملية تحويل البيانات من صورة الجواز الى ملف txt/xls او اي ملف آخر ؟
  24. على حدث "بعد التحديث" ، كالعادة 🙂 جعفر
×
×
  • اضف...

Important Information