-
Posts
9903 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
طريقة تعاملي مع مربع تحرير وسرد / القائمة المنسدلة
jjafferr replied to jjafferr's topic in قسم الأكسيس Access
وعليكم السلام اخي شفان هذا كان النموذج القديم، وطلب مني المستخدمين تحديثه الى طريقة اسهل واوضح، وبالنسبة لأسماء الجداول، فكانت بطريقة غير مرنه أيضا. فإذا لازلت تريدها، استقطعها من برنامجي و وارفقها لك جعفر- 6 replies
-
- 1
-
-
- القائمة المنسدلة
- listbox
-
(و2 أكثر)
موسوم بكلمه :
-
تصدير تقرير الى اكسل مع الاحتفاظ بتنسيق التقرير
jjafferr replied to أبو عبدالله الحلوانى's topic in قسم الأكسيس Access
نعم ، الجدول او الاستعلام فقط ، ولا دخل للتقرير به. واذا رأيت ان هذه الطريقة تعمل الذي تريد ، فيمكن ان ننتقل للخطوة التالية لتسهيل عملك جعفر -
طريقة جديدة ورائعة لتعبئة القائمة المنسدة الكمومبوبوكس
jjafferr replied to عبد الله قدور's topic in قسم الأكسيس Access
السلام عليكم الحمدلله ، تم عمل موضوع خاص بطريقتي جعفر -
السلام عليكم بالنسبة لبيانات مربع التحرير والسرد / القائمة المنسدلة ، فعادة تأخذ بياناتها من جدول خاص بها ، نُدخل فيها البيانات مسبقا ، وكذلك يكون لدينا نموذج لكل جدول ، حتى نستطيع تغيير/إضافة/حذف احد هذه البيانات. هناك طريقة اخرى اسهل ، واستعملها في برامجي ، والتي تتكون من جدول واحد ونموذج واحد لكل الحقول ، و اود ان اشاركها معكم الجدول الذي به جميع الحقول اسمه 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
- 6 replies
-
- 4
-
-
- القائمة المنسدلة
- listbox
-
(و2 أكثر)
موسوم بكلمه :
-
أخي كريمو اخبرتك بأن الحقل Cridi_ID هو مصدر المشكلة كلها ، وقيمته صفر ، بينما الكود كان يبحث قيمتة 1 او 29 !! هذا كل الذي اعرفه !! جعفر
-
تفضل لما شفت انك مستخدم الامر 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
-
اللي تشوفه مناسب لعملك 824.count.accdb.zip
-
استخدم هذا الكود 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 جعفر
-
اخي عمرو لا يمكن عمل اي متغيرات للامر 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
-
مثال رائع ، من اخ رائع بارك الله فيك اخوي ابو خليل ، من ضمن تجاربي ، عملت مثل عملك ، ولكن ما كان راضي يضبط كان محتاج يد معلم جعفر
-
وعليكم السلام جرب هذا =Count(IIf([text286]>0,1,0)) جعفر
-
والله ما فهت !!
-
-
وعليكم السلام ارسلت قيمة ID_Sanf من النموذج الفرعي frm_mr الى حقل جديد "ID_Sanf" في النموذج frmEdrajSenfm ، وبعدين اضفته في كود انزالك البيانات الى النموذج الفرعي frmSub_Recall_sales جعفر 822.اداج اسم الصنف .mdb.zip
-
الحمدلله
-
الله يرضى عليك يا سفيان ، لا تفتكر اني اعرف اللي انت تعرفه ، واعطني المعلومة كاملة !! ثم ان برنامجك بالفرنسي !!
-
السلام عليكم اخي سفيان انزلت مرفقك واشتغل عندي مباشرة ، رجاء تشوف الرابط الذي ارفقته لك في مشاركتي السابقة حول اعدادات الوندوز ، فالظاهر مشكلتك من هناك. جعفر
-
اخي كريمو انا توصلت الى كيفية جعل كل رقم في صفحة مستقلة (لأني اعتقد بأنه الطريق الصحيح) ، ولكني لم اصل الى الحل بعد جعفر 820.التقرير المقسم.mdb.zip
-
حساب قيمة مجموع الوقت بناء على عنصر السجل المختار
jjafferr replied to hh88's topic in قسم الأكسيس Access
نعم يمكن ، ولكني في كودك لا انصح ابداً ، لأنك ما محتاج ان تقوم بهذا الشيء ، ثم انه يكون من المستحيل تعديل الكود لاحقا ، وانا هنا اضع كود "داخل مربع النص" للدعابة فقط 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) واعتذر عن رفع صوتي ، ولكني اردت ان اتأكد انه وصلك جعفر -
كود او امر يكتب ويقوم بإدخال بيانات على فورم لوحده
jjafferr replied to عوض's topic in قسم الأكسيس Access
العفو اخي عوض الظاهر انك فهمت ملاحظتي بالخطأ !! انا مجرد اشرت لموضوع كسر كلمة السر وعدم تجاوزه ، وارحب بمشاركة الاعضاء في الاجابة على سؤالك بس للعلم ، التفاصيل اللي اعطيتها ليست كافية للرد على سؤالك ، فيجب ان تعطي تفاصيل اكثر ، وياريت اسم/صورة من البرنامج الاخر اللي تتكلم عنه جعفر -
السلام عليكم كود اخي ابو خليل شغّال تمام ، بشرط ان تكون اعدادات النموذج تسمح بإصطياد ازرار الكيبورد قبل الذهاب الى الكود ، هكذا: . جعفر
-
شكرا أخوي أبو خليل
-
كود او امر يكتب ويقوم بإدخال بيانات على فورم لوحده
jjafferr replied to عوض's topic in قسم الأكسيس Access
وعليكم السلام متابع من الرابط السابق ، وارجو من الاعضاء ان يكونوا على قدر المسؤولية بإلتزامهم بقوانين المنتدى ، والمُثل الاخلاقية ، فلا يرىد احدنا كسر "قفل برنامجه" عن طريق اشخاص آخرين: . جعفر -
وعليكم السلام وبدلا عن أخوي أبو خليل ، تفضل: الوحدة النمطية: 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
-
السلام عليكم اخوي ابو خليل توقيعي في آخر كل مشاركة هي: وقد اعجبتني عبارتك لدقّة معانيها ، فإذا تسمح لي بإستعمالها ودمجها في توقيعي ليصبح: جعفر