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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. السلام عليكم بالنسبة لبيانات مربع التحرير والسرد / القائمة المنسدلة ، فعادة تأخذ بياناتها من جدول خاص بها ، نُدخل فيها البيانات مسبقا ، وكذلك يكون لدينا نموذج لكل جدول ، حتى نستطيع تغيير/إضافة/حذف احد هذه البيانات. هناك طريقة اخرى اسهل ، واستعملها في برامجي ، والتي تتكون من جدول واحد ونموذج واحد لكل الحقول ، و اود ان اشاركها معكم الجدول الذي به جميع الحقول اسمه tbl_Constants ، وسنأخذ أحد الحقول كمثال واسمه Department ، نستخدم هذا الحقل لإدخال بيانات عن طريق النموذج frm_Employees في الجدول tbl_Employees في الحقل Department ، ونستخدم هذا الحقل لإدخال بيانات عن طريق النموذج frm_Department في الجدول tbl_Department في الحقل Section_Name ، . في الجدول tbl_Constanats ، في حقل Department ، بالإضافة الى بيانات الحقل (الشؤون الادارية ، الشؤون المالي *تعمدت عمل هذا الخطا ، والذي نتيجته ظهرت في الجدولين الآخرين*) ، فإننا نكتب اسماء الجداول التي تُحفظ فيها البيانات واسم الحقل في ذلك الجدول (الجدول tbl_Emplyees واسم الحقل فيه هو Department ، وجدول tbl_Department واسم الحقل فيه هو Section_Name ، اما الاشارة _|_ التي قبل اسم الجدول ، فنستعملها لتصفية البيانات *تابع لاحقا*). العمل كله في الكود وفي اسماء الحقول ، والنموذج frm_Constants. نفتح نموذج ادخال البيانات frm_Employees او frm_Department . نريد ان نعمل تعديل على "الشؤون المالي" في حقل الدائرة ، ولأن النموذج مقفل ولا يسمح لتعديل البيانات ، فنضغط على زر "عمل تعديل على قيم البيانات" ، فندخل كلمة السر . فنرى طرق فتح النموذج frm_Constants ، ثم نختار الحقل الذي نريد ان نغير بياناته (الدائرة) مثلا ، ثم نضغط على الزر الذي على يسار الحقل (لجميع اصدارات الاكسس) او على الزر الذي يظهر اسفل يسار القائمة (للأكسس 2007 فما فوق ، وميزة هذا الزر انه من ضمن اعدادات الحقل ، ولا يحتاج عمل زر اضافي له ولا كود ، كما اننا نُدخل اسم النموذج frm_Constants في اعدادات الحقل كذلك) . النموذج frm_Constants يُفتح على بيانات الحقل الذي نريده Department ، وعلى المعلومة/السجل الذي كان مختار في النموذج الذي اتينا منه . وكذلك النموذج مُقفل ، ونحتاج الى الضغط على زر التعديل لتعديل المعلومة ، او زر الاضافة لإضافة معلومة جديدة ، وعند الضغط على زر الخروج ، فالكود سيقوم بتحديث البيانات . هنا نرى ان التحديث حصل لجميع الجداول ونموذج frm_Employees كذلك ، وهو المطلوب . النموذج الآخر frm_Department والذي يحمل اسم الحقل Department ، ولكن مصدر بياناته الحقل Section_Name ، كذلك يمكنه عمل نفس الشيء (كما تم شرحه اعلاه) . ومع انه عندنا 4 ازرار لتغيير بيانات الحقول ، إلا اننا استخدمنا حدث واحد فقط لفتح النموذج frm_Constants . والكود هو Private Function Open_frm_Constants() Me(Mid(Screen.ActiveControl.Name, 6)).SetFocus DoCmd.OpenForm "frm_Constants", , , , , acDialog End Function . . ----------------------------------------------------------------------------------------- وهذه إضافة حسب رغبة اخي شفان في إضافة النموذج الذي كنت استخدمه سابقا مع مراعاة اني عملت عليه الكثير من التعديلات حتى يتواكب مع الطريقة الجديدة ، وللعلم ، فالحقول في الجدول tbl_Constants يجب ان يكون لها تسميات "Captions" ،وقد اعطيت الحقول تسميات عربية ، كما هو ظاهر في النموذج ، والمرفق الذي به هذا النموذج هو ComboBox_Data_2.MDB.zip ، والذي يشمل جميع النماذج اعلاه ايضا . جعفر ComboBox_Data.mdb.zip ComboBox_Data.accdb.zip ComboBox_Data_2.MDB.zip
  2. أخي كريمو اخبرتك بأن الحقل Cridi_ID هو مصدر المشكلة كلها ، وقيمته صفر ، بينما الكود كان يبحث قيمتة 1 او 29 !! هذا كل الذي اعرفه !! جعفر
  3. تفضل لما شفت انك مستخدم الامر Dlookup في النموذج ونفسه في الكود ، يعني انك تطلب بيانات من الجدول 8 مرات * 2 = 16 مرة ، نظرت فيه ، . فجمعت بين الاستعلام مصدر بيانات النموذج ، والاستعلام QryRawBlnc اللى تحتاج منه نتيجة حقل Balance ، وربطت الجدولين بالحقل code . عليه ، اصبح هذا الاستعلام الجديد مصدر بيانات النموذج . وقيمة الحقل Balance اصبحت جاهزة . وعليه تم تعديل الكود ليشمل هذه التغييرات Private Sub Coun_Count() Dim rst As DAO.Recordset Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Counter = 0 For i = 1 To RC ''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim con As Long con = Nz(rst!cons, 0) * Nz(Me.T3, 0) Debug.Print "con= " & con & " >> " & "Balance= " & rst!Balance 'If con > Bal Then If con > rst!Balance Then Counter = Counter + 1 'Count cons 'Counter = Counter + rst!cons 'Sum cons End If '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' rst.MoveNext Next i Me.Coun = Counter rst.Close: Set rst = Nothing End Sub . ولكن خلينا نشوف الحساب والمقارنة اللي يشوفها الكود ، وبسبب استعمالك Long للمتغير con ، ترى قيمة معادلتك بدون كسور عشرية (Long معناه Integer طويل ، يعني رقم كامل بدون منازل عشرية) ، ولما غيرته الى Double ، اعطى القيمة حسب الظاهر في النموذج Dim con as Long con= 1 >> Balance= 100000 con= 4 >> Balance= 400000 con= 1 >> Balance= 100000 con= 0 >> Balance= 0.005 con= 0 >> Balance= 4 con= 2 >> Balance= 200000 con= 3 >> Balance= 0 con= 2 >> Balance= 200000 -------------------------------- Dim con as Double con= 1 >> Balance= 100000 con= 4 >> Balance= 400000 con= 1 >> Balance= 100000 con= 0.00004 >> Balance= 0.005 con= 0.00004 >> Balance= 4 con= 2 >> Balance= 200000 con= 3 >> Balance= 0 con= 2 >> Balance= 200000 جعفر 824.3.count.accdb.zip
  4. اللي تشوفه مناسب لعملك 824.count.accdb.zip
  5. استخدم هذا الكود Private Sub Coun_Count() Dim rst As DAO.Recordset Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Counter = 0 For i = 1 To RC If Nz(rst!cons, 0) * Nz(Me.T3, 0) > 0 Then Counter = Counter + 1 'Count cons 'Counter = Counter + rst!cons 'Sum cons End If rst.MoveNext Next i Me.Coun = Counter rst.Close: Set rst = Nothing End Sub Private Sub T3_AfterUpdate() Call Coun_Count End Sub جعفر
  6. اخي عمرو لا يمكن عمل اي متغيرات للامر Count او Sum في ذيل النموذج ، غير اسم الحقل مثل (Count(myField او Count(*)p اما اذا اردنا الحساب بشروط ، فيجب ان نعمله في الكود ، وعملت هذه الوحدة Private Sub Coun_Count() Dim rst As DAO.Recordset Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Counter = 0 For i = 1 To RC If rst!cons > 0 Then Counter = Counter + 1 'Count cons 'Counter = Counter + rst!cons 'Sum cons End If rst.MoveNext Next i Me.Coun = Counter rst.Close: Set rst = Nothing End Sub . وتستطيع مناداتها من اي حدث من النموذج هكذا Call Coun_Count . مثلا ، في حدث النقر على اسم productcode في الحقل t0 : Private Sub t0_Click() Me.T216 = "" & Me.t0.Column(0) & "" Me.T216.Requery search_Products = "" Me.Requery Me.T3.SetFocus Call Coun_Count End Sub جعفر 824.count.accdb.zip
  7. مثال رائع ، من اخ رائع بارك الله فيك اخوي ابو خليل ، من ضمن تجاربي ، عملت مثل عملك ، ولكن ما كان راضي يضبط كان محتاج يد معلم جعفر
  8. وعليكم السلام جرب هذا =Count(IIf([text286]>0,1,0)) جعفر
  9. اخي الفاضل انت كنت تتكلم عن ولكنك ارفت
  10. وعليكم السلام ارسلت قيمة ID_Sanf من النموذج الفرعي frm_mr الى حقل جديد "ID_Sanf" في النموذج frmEdrajSenfm ، وبعدين اضفته في كود انزالك البيانات الى النموذج الفرعي frmSub_Recall_sales جعفر 822.اداج اسم الصنف .mdb.zip
  11. الحمدلله
  12. الله يرضى عليك يا سفيان ، لا تفتكر اني اعرف اللي انت تعرفه ، واعطني المعلومة كاملة !! ثم ان برنامجك بالفرنسي !!
  13. السلام عليكم اخي سفيان انزلت مرفقك واشتغل عندي مباشرة ، رجاء تشوف الرابط الذي ارفقته لك في مشاركتي السابقة حول اعدادات الوندوز ، فالظاهر مشكلتك من هناك. جعفر
  14. اخي كريمو انا توصلت الى كيفية جعل كل رقم في صفحة مستقلة (لأني اعتقد بأنه الطريق الصحيح) ، ولكني لم اصل الى الحل بعد جعفر 820.التقرير المقسم.mdb.zip
  15. نعم يمكن ، ولكني في كودك لا انصح ابداً ، لأنك ما محتاج ان تقوم بهذا الشيء ، ثم انه يكون من المستحيل تعديل الكود لاحقا ، وانا هنا اضع كود "داخل مربع النص" للدعابة فقط Me.Total_Time = Int(DSum("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / 60) & ":" & Round((DSum("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / 60) - Int(DSum("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / 60) * 60) Me.Avg_Time = Int(DSum("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / DCount("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / 60) & ":" & Round((DSum("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / DCount("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / 60) - Int(DSum("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / DCount("[Minutes]", "qry_CT", "[سرعة الخدمة]='" & Me.OpenArgs & "'") / 60) * 60) واعتذر عن رفع صوتي ، ولكني اردت ان اتأكد انه وصلك جعفر
  16. العفو اخي عوض الظاهر انك فهمت ملاحظتي بالخطأ !! انا مجرد اشرت لموضوع كسر كلمة السر وعدم تجاوزه ، وارحب بمشاركة الاعضاء في الاجابة على سؤالك بس للعلم ، التفاصيل اللي اعطيتها ليست كافية للرد على سؤالك ، فيجب ان تعطي تفاصيل اكثر ، وياريت اسم/صورة من البرنامج الاخر اللي تتكلم عنه جعفر
  17. السلام عليكم كود اخي ابو خليل شغّال تمام ، بشرط ان تكون اعدادات النموذج تسمح بإصطياد ازرار الكيبورد قبل الذهاب الى الكود ، هكذا: . جعفر
  18. شكرا أخوي أبو خليل
  19. وعليكم السلام متابع من الرابط السابق ، وارجو من الاعضاء ان يكونوا على قدر المسؤولية بإلتزامهم بقوانين المنتدى ، والمُثل الاخلاقية ، فلا يرىد احدنا كسر "قفل برنامجه" عن طريق اشخاص آخرين: . جعفر
  20. وعليكم السلام وبدلا عن أخوي أبو خليل ، تفضل: الوحدة النمطية: Option Compare Database Option Explicit 'رمهان 'اوفيسنا Public Function fn(fld) Dim y As String Dim i As Integer Dim xx As String y = "أبجدهوزحطيكلمنسعفصقرشتثخذضظغـ ىؤءئةاآإ()><.؟}{][1234567890:,/" For i = 1 To Len(fld) If InStr(1, y, Mid(fld, i, 1)) > 0 Then xx = xx & Mid(fld, i, 1) Next i fn = xx End Function . وهذا كود النقر على الزر Private Sub Command2_Click() Me.Text5 = fn(Me.Text3) End Sub . والنتيجة . جعفر 821.delete char.accdb.zip
  21. السلام عليكم اخوي ابو خليل توقيعي في آخر كل مشاركة هي: وقد اعجبتني عبارتك لدقّة معانيها ، فإذا تسمح لي بإستعمالها ودمجها في توقيعي ليصبح: جعفر
  22. وعليكم السلام اهلا وسهلا بك في المنتدى ، اخي احمد هذا القسم من المنتدى هو لطرح الاسئلة البرمجية ، وليس للبرامج الجاهزة ابدا العمل على برنامجك واطرح الاسئلة ، وان شاء الله تجد الجميع يساعدك ، وقبل ان تضع اي سؤال ، استخدم خاصية البحث في المنتدى ، فهو مليء بأسإلة المبرمجين ، وهناك احتمال كبير بأن يكون سؤالك قد تمت الاجابة عليه جعفر
  23. مثل ما يقول المثل: الميدان يا حميدان ارفق هالجزئية من اللي انت عملته وما صار ، الاستعلام والوحدة النمطية ، واحنا نساعدك في الحل ان شاء الله جعفر
×
×
  • اضف...

Important Information