بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9998 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
ابو ياسين انت تريد الكمية Alkmiah من الجدول Hrakatsanf بشرط رقم الفاتورة Rjmfatwra و رقم الصنف ID_Sanf يكونان الموجودان في النموذج الفرعي SubSales وهذا السجل هو السجل الموجود عليه التركيز هل هذا المطلوب؟
-
السلام عليكم ومثل ما اخبرتك: . في النموذج الفرعي sfrm_Room_No_Available ، السطر بين سطري j' هو الذي حل المشكلة: Private Sub cmd_Disposal_Click() Forms!frm_Rooms_Available.SetFocus If IsNull(Me.Patient_No) Or (Me.Patient_No) = "" Then MsgBox "There is no Patient", vbOKOnly, "" Me.Undo Cancel = True Exit Sub End If Me.Check = True Forms!frm_Rooms_Available!xxx = Me.Patient_No 'j Me.Dirty = False 'j DoCmd.OpenForm "frm_Discharge_Endorsement" DoCmd.OpenForm "frm_Rooms_Available", , , , , acHidden End Sub . جعفر
-
قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف وعليكم السلام أخي طاهر رجاء الإلتزام بقوانين المنتدى ، هذا الموضوع سوف يُغلق ، ويمكنك فتح موضوع آخر حسب قوانين المنتدى بالاضافة الى انه لاحظت انك تضع اسئلة في مواضيع قديمة ، فرجاء ، كذلك افتح لنفسك مواضيع جديده لها جعفر
- 1 reply
-
- 1
-
-
طيب في نموذج ، واسماء الحقول ، وكيف اصل الى المكان/الحدث؟
-
شكرا اخوي ابو خليل ، فمقتنياتك لا تُقدر بثمن جعفر
-
يجب عليك كسر الكود الى متغيرات اصغر ، حتى تستطيع فهم الكود لما تضعه مع بعض ، هكذا مثلا (معلومات المتغير B انا كتبتها من رأسي ، فيحتاج لها تعديل ، وتعديلها في if كذلك) : A = DLookup("[Alkmiah]", "[Hrakatsanf]", "[Rajmsanf]='" & [Forms]![frm_Recall_sales]![SubSales].[Form]![Rajmsanf] & "'") B = DLookup("[Rjmfatwra]", "[Hrakatsanf]", "[Rajmsanf]='" & [Forms]![frm_Recall_sales]![SubSales].[Form]![Rjmfatwra] & "'") If [Forms]![frm_Recall_sales]![SubSales].[Form]![Alkmiah].Value = 0 Then Exit Sub If [Forms]![frm_Recall_sales]![SubSales].[Form]![Alkmiah] > A _ And [Forms]![frm_Recall_sales]![SubSales].[Form]![Rjmfatwra] > B Then DoCmd.Beep MsgBox " كـمـيـة الـمـرتـجـع اكـبـر مــن كـمـيـةالـبـيـع" & " ", , "تـنـبـيـه" Me.Undo Exit Sub End If
-
في الاستعلام لا تستطيع استعمال if وانما تستطيع استعمال iff ادخل في تصميم الاستعلام ، ثم اضفها
-
وعليكم السلام اخوي ابو ياسين لا تعمل جملة SQL في الكود ، اعمل العكس ، اعمل الاستعلام اللي تريده ، ثم حوله الى SQL ، ثم اخذه الى الكود واعمل التعديل. ادخل الكود عن طريق Ctrl + G (ولا تدخله بطريقة اخرى) ، والذي سيعطيك شاشة الكود ، بالاضافة الى شاشة صغيرة في الاسفل ، والتي سنأخذ منها SQL لتجربيته في الاستعلام. ولما تأخذ SQL الاستعلام الى الكود ، فككه الى اسطر ، واربط كل سطر مع اللي قبله (لاحظ الكود التالي) ، واهم شيء تعمله هو ان تكتب جملة debug.print mySQL بعد نهاية عمل جملة الـ SQL وقبل ان تنفذ الامر docmd.runsql ، هذا الامر سوف يعطيك في اسفل شاشة الكود ، سيعطيك جملة الـ SQL بعد اضافة القيم فيها ، عندها تستطيع ان تنسخ هذه الجملة من اسفل شاشة الكود ، وتذهب الى الاستعلام وتلصقه هناك ، وتشغل الاستعلام ، واذا اعطاك خطأ ، فإصلح الاستعلام ، ثم اخذ SQL الى الكود للمقارنه ، وهكذا .... هذه طريقة كتابة الكود (مثلا) : mySQL = "UPDATE [Hrakatsanf]" mySQL = mySQL & " SET [Alkmiah]=[Alkmiah]-" & [Forms]![frm_Recall_sales]![SubSales]![Alkmiah] mySQL = mySQL & " WHERE Rajmsanf='" & [Forms]![frm_Recall_sales]![SubSales]![Rajmsanf] & "'" mySQL = mySQL & " And Rjmfatwra='" & [Forms]![frm_Recall_sales]![frm_mr]![Rjmfatwra] & "'" Debug.Print mySQL DoCmd.RunSQL mySQL . جعفر
-
حفظ البيانات في النموذج تعملها مرة واحدة فقط ، ثم تعمل استعلامات قدر اللي تريد
-
وعليكم السلام اخوي بدر هناك 3 طرق لإضافة/تعديل البيانات: من النموذج مباشرة ، عن طريق ادخال/تعديل المعلومة من الجدول/الاستعلام مصدر بيانات النموذج ، عن طريق Recordset . الاكسس يراك في النموذج وبياناته ، ولكن لا يعرف من قام بتغيير البيانات عن طريق الاستعلام او Recordset ، فالاكسس لا يعرف يأخذ بيانات النموذج او البيانات المحدثه في الجدول ، فيعطيك الاختيار طريقة التغلب على هذه الرسالة هي ، ان تحفظ بيانات النموذج ، ثم تشغل الاستعلام او Recordset ، مثلا docmd.runcommand accmdsaverecord او me.dirty = false او me.requery او me.refresh ثم تعطي الامر للإستعلام docmd.openquery "aabbcc" او rst.addnew او rst.edit rst!A=123 rst.update جعفر
-
تفضل هذا الجدول بحقلين اضافيين . وهذا الكود (قد اكون قلبت قيمة Filled_Fields ، فلم افهم طلبك ، ايهم صفر وايهم 1 ) Private Sub cmd_No_Empty_Fields_Click() Dim Counter As Integer Set rst = CurrentDb.OpenRecordset("Select * From tbl_Letters") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount RF = rst.Fields.Count 'Records For i = 1 To RC Counter = 0 'Fields For j = 0 To RF - 1 'Debug.Print rst(j).Name & vbTab & rst(j) If rst(j).Name <> "Auto_ID" And rst(j).Name <> "Auto_Date" And _ rst(j).Name <> "Number_of_Filled_Fields" And rst(j).Name <> "Filled_Fields" Then If Len(rst(j) & "") <> 0 Then Counter = Counter + 1 End If End If 'rst Next j rst.Edit rst!Number_of_Filled_Fields = Counter If Counter = 0 Then rst!Filled_Fields = 0 Else rst!Filled_Fields = 1 End If rst.Update rst.MoveNext Next i rst.Close: Set rst = Nothing End Sub جعفر 826.Records.mdb.zip
-
السلام عليكم ومشاركة مع اخي ابو آدم ، انظر الى طريقة عملي في هذا الرابط جعفر
-
السلام عليكم هذا ليس جوابا ، ولكن يعطيك الطريق لعمل المطلوب جعفر
-
السلام عليكم اعرض عليكم هنا طريقة قرءة السجلات Records عن طريق Recordset ، وقراءة اسماء الحقول Fields وقيمة كل حقل (للجداول والاستعلامات) . عندنا الجدول tbl_Letters ، فيه 3 سجلات ، وترقيمها يبدأ من الرقم 1 ، وعندنا 6 حقول ، وترقيمها يبدأ من الرقم صفر . هذا الكود به حدث لقراءة Fields وقيمة كل حقل ، وحدث لقراءة السجلات Records : Option Compare Database Option Explicit Dim rst As DAO.Recordset Dim i As Integer Dim RC As Integer Dim RF As Integer Dim j As Integer ' Private Sub cmd_Fields_Click() Set rst = CurrentDb.OpenRecordset("Select * From tbl_Letters") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount RF = rst.Fields.Count 'Records For i = 1 To RC Debug.Print Debug.Print rst!A & vbTab & rst!B & vbTab & rst!C & vbTab & rst!D 'Fields For j = 0 To RF - 1 Debug.Print rst(j).Name & vbTab & rst(j) Next j rst.MoveNext Next i rst.Close: Set rst = Nothing End Sub Private Sub cmd_Records_Click() Set rst = CurrentDb.OpenRecordset("Select * From tbl_Letters") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC Debug.Print rst!A & vbTab & rst!B & vbTab & rst!C & vbTab & rst!D rst.MoveNext Next i rst.Close: Set rst = Nothing End Sub . . نتيجة الزر الاول: a1 b1 c1 d1 a2 c2 d2 a3 b3 d3 . ونتيجة الزر الثاني (انا طلبت طباعة السجلات قبل طباعة اسم الحقل وقيمته) : a1 b1 c1 d1 Auto_ID 1 Auto_Date 26-Dec-17 2:33:22 PM A a1 B b1 C c1 D d1 a2 c2 d2 Auto_ID 2 Auto_Date 26-Dec-17 2:33:26 PM A a2 B C c2 D d2 a3 b3 d3 Auto_ID 3 Auto_Date 26-Dec-17 2:33:31 PM A a3 B b3 C D d3 جعفر 825.Records.mdb.zip
-
طريقة تعاملي مع مربع تحرير وسرد / القائمة المنسدلة
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)) جعفر