ارجو من اخوانى مساعدتى
اريد عمل استعلام يحسب متوسط التاريخ فمثلا تاريخ اول مبلغ 1/2/2007 وتاريخ ثانى مبلغ 1/5/2007 اريد ان احسب متوسطهم فى استعلام واذا تكرمتم شرح وافى او مثال مرفق وجزاكم الله خيراااا - برجاء سرعة الافادة افادكم الله
ارجو من اخوانى مساعدتى
اريد عمل استعلام يحسب متوسط التاريخ فمثلا تاريخ اول مبلغ 1/2/2007 وتاريخ ثانى مبلغ 1/5/2007 اريد ان احسب متوسطهم فى استعلام واذا تكرمتم شرح وافى او مثال مرفق وجزاكم الله خيراااا - برجاء سرعة الافادة افادكم الله
السلام عليكم ورحمة الله بصراحة أنا ادين لهذا المنتدى بفضل كثير في تعلم البرمجة والآن لدي مشكلة بسيطة وهي أنني اريد عمل جمع لحقلين في استعلام وهذين الحقلين عبارة عن تجميع لعدة سجلات مثال: الحقل الأول مجموع الايرادات الحقل الثاني مجموع المصروفات وطبعاً هذه الحقلين تجميع لعدة سجلات ومن جدولين مختلفين الأول جدول الايرادات ومنه الحقل الأول(مجموع الايرادات) والجدول الثاني المصروفات ومنه الحقل الثاني(مجموع المصروفات) وما اريده هو حقل في الاستعلام يبين ناتج حسم المصروفات من الايرادات ارجوا الرد بسرعة للأهمية
اخي الفاضل فقيهي
يمكن استخدام التعبير التالي في الإستعلام لطرح مجموع المصروفات من مجموع الإيرادات
Total:NZ(SUM([Masrofat])-SUM([Eradat]));0)
حيث حقل Masrofat هو حقل مجموع المصروفات
و حقل Eradat هو حقل مجموع الإيرادات
أخـــواني الأعزاء ... بعد التحية
بخصوص العمليات الحسابية في الاكسس
لقد واجهتني مشكلة كبيرة في العمليات الحسابية منها على سبيل المثال
احتساب الراتب الاساسي للموظفين والعمل الاضافي والتأمين الصحي والتأمين والمعاشات وكا، أكبر مشكلة هي احتساب ضريبة الدخل لأنها مربوطة بسعر الدولار وجميع فئات الاعفاء بالدولار والمحصلة الضريبة بالدولار ومن ثم تحويلها الى شيكل لأنه جميع الحسابات كانت تعتمد على سابقاتها ، وكانت النتيجة ظهور بعض الكسور العشرية غير مطابقة بزيادة أو نقص [0.01] لمعظم الموظفين وحاولت أن أحل المشكلة باستخدام دالة Format ولم تفلح ودالة Round وإن كانت أفضل من الدالة السابقة ولكن لم تلبي الغرض منها تماماً وجاء الحل الصحيح مائة في المائة وهو على سبيل المثال .. انظروا كيفية استخدام دالة راوند
Dim M10 As Single
Dim N10 As Single
Dim YYY As Single
Dim TF As Single
Dim TG As Single
Dim TH As Single
Dim aa As Single
Dim ab As Single
Dim AC As Single
Dim AD As Single
Dim AE As Single
Dim FGF As Integer
Dim QRY As String
QRY = "SELECT basic.No_Emp, basic.AT,BASIC.ATAKH ,basic.W, basic.wu, basic.solfa, basic.gest,basic.no_agsat, basic.Ratib, basic.Maqtoa, basic.Emp_Kind, basic.Work_NC, basic.Child, basic.trenc, basic.taminsh, basic.Have, basic.Rent, basic.UN, basic.Updats, sums_data.*, MOVES.*, basic.So FROM sums_data INNER JOIN ((DegOld INNER JOIN basic ON DegOld.Deg = basic.Deg) INNER JOIN MOVES ON basic.No_Emp = MOVES.No_Emp) ON sums_data.TTT = basic.TTT WHERE (((MOVES.mz)=0));"
Set Q2 = CurrentDb.OpenRecordset(QRY)
While Not Q2.EOF
TF = Round(Q2!C1 / 12 + 0.001, 2)
TG = Round(Q2!C2 / 12 + 0.001, 2)
TH = Round(Q2!C3 / 12 + 0.001, 2)
TI = Round(Q2!C4 / 12 + 0.001, 2)
aa = Q2!B1 / 100
ab = Q2!B2 / 100
AC = Q2!B3 / 100
AD = Q2!B4 / 100
AE = Q2!B5 / 100
'****************************************************************************
*
Q2.Edit
FGF = FGF + 1
Q2!totala = Round(Q2!jjj + Q2!Work_N + Q2!ATaKH + Q2!family + Q2!safarda + Q2!serafa + Q2!Maqtoa + Q2!alawam _
+ Q2!extra + Q2!Danger + Q2!Com + Q2!trenc + Q2!ATT + Q2!Dues + Q2!Auto + Q2!Froog + Q2!Adver + Q2!others + 0.001, 2) 'ÇÓÊÍÞÇÞÇÊ
'-------------------------------------------------------------------------------
Select Case Q2!So
Case 1
If Q2!W = True Then
M10 = Round(Q2!sing + ((Q2!Child - Q2!UN) * Q2!awlad) + (Q2!Have * Q2!moal) + (Q2!UN * Q2!univ) + Q2!Rent + 0.001, 2) 'ÇáÇÚÝÇÁ
Else
If Q2!WU = True Then
M10 = Round(Q2!sing + Q2!univ + ((Q2!Child - Q2!UN) * Q2!awlad) + (Q2!Have * Q2!moal) + (Q2!UN * Q2!univ) + Q2!Rent + 0.001, 2) 'ÇáÇÚÝÇÁ
Else
M10 = Round(Q2!sing + Q2!maried + ((Q2!Child - Q2!UN) * Q2!awlad) + (Q2!Have * Q2!moal) + (Q2!UN * Q2!univ) + Q2!Rent + 0.001, 2)
End If
End If
Case 2
M10 = Round(Q2!sing + (Q2!Have * Q2!moal) + (Q2!UN * Q2!univ) + Q2!Rent + 0.001, 2)
Case 3
M10 = Round(Q2!sing + (Q2!Have * Q2!moal) + (Q2!UN * Q2!univ) + Q2!Rent + 0.001, 2)
Case 4
M10 = Round(Q2!sing + ((Q2!Child - Q2!UN) * Q2!awlad) + (Q2!Have * Q2!moal) + (Q2!UN * Q2!univ) + Q2!Rent + 0.001, 2) 'ÇáÇÚÝÇÁ
End Select
If M10 > 12000 Then M10 = 12000
Dim NIS, DISC, SUMT
Q2!TS = Round((Q2!totala - (Q2!safarda + Q2!Absent + Q2!alawam + Q2!others + Q2!Auto + Q2!Dues)) + 0.001, 2)
Q2!TD = Round((Q2!TS - (Q2!tamins + Q2!taminm)) / Q2!Doll + 0.001, 2)
Q2!ddd = Round(M10 / 12 + 0.001, 2)
Q2!Taxxx = Round(Q2!TD - Q2!ddd + 0.001, 2)
Select Case Q2!Taxxx
Case Is <= 0: Q2!Taxxx = 0: Q2!taxx = 0: Q2!tax = 0
Case Is > 0
If Q2!Taxxx <= TF Then '833.33
YYY = Round(Q2!Taxxx * aa + 0.001, 2)
Else
YYY = Round(((Q2!Taxxx - TF) * ab) + (TF * aa) + 0.001, 2)
End If
Q2!taxx = Round(YYY + 0.001, 2)
End Select
NIS = Round((Q2!totala - (Q2!safarda + Q2!tamins + Q2!taminm + Q2!Absent + Q2!alawam + Q2!others + Q2!Auto + Q2!Dues)) + 0.001, 2)
DISC = Q2!ddd * Q2!Doll
SUMT = NIS - DISC
Select Case SUMT
Case Is > 0
If SUMT <= (TF * Q2!Doll) Then '833.33
Q2!tax = Round(SUMT * aa + 0.001, 2)
Else
Q2!tax = Round(((SUMT - (TF * Q2!Doll)) * ab) + ((TF * Q2!Doll) * aa) + 0.001, 2)
End If
End Select
'-----------------------------------------------------------------------------------------
Q2!totalb = Round(Q2!tamins + Q2!kiss + Q2!days + Q2!taminm + Q2!alawam + Q2!Absent + Q2!tax + Q2!Jawwal + Q2!gest + 0.001, 2)
Q2!Net = Round(Q2!totala - Q2!totalb + 0.001, 2)
Q2!mz = 1
Q2.Update
Q2.MoveNext
Wend
مع تحيات أخيكم / كمــــال النحــــال
تم تعديل هذه المشاركة بواسطة kamal alnahhal في 6 أغسطس 2007 في 07:36
[يمين]
إذا كـان تـرك الـدين يعــنــي تقــدمــاً
فـيا نفــس مـوتــي قبــل أن تتقـدمــي
[/يمين]
السلام عليكم
الاخوة الافاضل : مشكلة الزيادة او النقصان بنسبة 0.01 هي شئ طبيعي لأن الشئ اللي يجب مراعاته وفهمه قبل كل شئ هو كما يلي:
1- الدالة Format تقوم بعرض النتائج بشكل معين كخانتين مثلا.
2- الدالة round تقريب لاقرب خانة عشرية.
وبالتالي فان عمليات التقريبة تجمع في النهاية والرقم الناتج سيكون طبيعيا رقم اجمالي مقرب !. لأنه قد مر بمرحلة التقريب على مراحل ونتج في كل حالة رقم مقرب . سيكون تلقائيا المجموع النهائي رقما مقربا... وهذا شئ منطقي...
لذا افضل حل لهذه الاشكالية : هو ان يتم التخزين الفعلي برقم طويل يعني اكثر من 3 خانات عشرية ،، وليكن 5 خانات عشرية ويكون العرض في التقرير او في الاستعلام فقط خانتان عشريتان.... فقط للعرض...اي يعرض للمشاهد بالتقريب .
وحيئذ سيكون الناتج دائما مساوي للميزانية وذلك لان القيم المخزنة قيم طويلة والتقريب فيها معدوم.. وان ظهر التقريب في العرض فان ذلك يعني ان البيانات ليس فيها تقريب !!! وارجو ان يكون كلامي مفهوما وواضحا وشكرا جزيلا.
activeman كتب:السلام عليكمالاخوة الافاضل : مشكلة الزيادة او النقصان بنسبة 0.01 هي شئ طبيعي
أخـــي العزيـــز ... بعـــد التحيـــة
ليــس المقصـــود بنســـبة 0.01 النســـبة المئوية وإنمــا المقصـــود مثال هــذا الرقـــم 51.23 احتمـــال أن يكـــون 51.24 أو 51.22 نتيجـــة إجـــراء العمليــــات الحســـابية المعقــــدة لــكل حســـاب ، ولــو كــل حســـاب فــي البنـــك أو أي مؤســســـة زاد فلــس أو نقص فلــس ... هـــذا يعتبر كارثـــة كبــيرة فـــي البرمجــــة وكان علـــى شـــركــة ماكروسوفت أن تقفـــل مؤســســــتها مــن زمــن بعيـــد.
T = Round(salary + 0.001,2)
بهـــذه الطريـقــة تم التغلــب علـــى الفــروق البســـيـطة
أخيك / كمـــال النحــــال
تم تعديل هذه المشاركة بواسطة kamal alnahhal في 6 أغسطس 2007 في 18:52
[يمين]
إذا كـان تـرك الـدين يعــنــي تقــدمــاً
فـيا نفــس مـوتــي قبــل أن تتقـدمــي
[/يمين]
السلام عليكم مرة اخرى :
سيدي العزيز / كمال
بعد التحية والسلام..
أولا أنا لم أقصد اي نسب مئوية إطلاقا...!!!
انا أوضحت ان حدوث فروقات طفيفة مثل 0.001 عن الرقم الرئيسي بأنه شئ طبيعي هل تعلم لماذا؟ لأنه يا اخي الموضوع لا علاقة له بالبرمجة ولا لمايكروسفت :) ....!!!! لا من قريب ولا من بعيد !!!!!
ارجو التركيز:
عندما نقوم بعملية معقدة كالتالي:
x=1.2499
y=12.3345
z=(x+y)*2(x-0.23*y)
على سبيل المثال
ومن ثم نقرب النتيجة النهائية يكون حلنا منطقي وقريب من الواقع
ولكن اذا كنت تعمل تقريب كل عملية وتجمع النواتج ومن ثم تقوم بالتقريب كل عملية
الى ان تحصل على الناتج الاجمالي وتقوم بالتقريب فهذا يعني انك ستحصل على نتائج كارثية فعلا ولن ينفع معها اي كود ولا أي شئ!
ولكن دائما يجب ان يقرب الناتج الاجمالي النهائي
والذي هو المطلوب مثلا في الرواتب نقرب قيمة (في البنك) .، بحيث تظهر فيها النتائج النهائية والمقربة.. لها فقط
لكن عملياتها الاولى ومعادلة الحصول عليها لا تستخدم اي تقريب فيها اطلاقا..هذا هو الحل 100% ،، اما اضافة 0.001 ومن ثم تقريبه فأنا أشك بنجاعته في الحلول لانه مجرد اختبار منك وتجربة شخصية لا يمكن تعميمها ،، ولأن الرياضيات تستخدم لاعتماد المسلمات نظام الاثبات او البرهان: فهنا وحتى لا يقع المستخدم أو المبرمج بأخطاء رياضية خانقة أو حسابية مضللة له فمن حقه أن يسأل كيف تثبت لي أن المعادلة
اقتباسT = Round(salary + 0.001,2)
بأنها قد تحل مشاكله ،، والا فستكون تجربة بدون إثبات ،،، فعلم الرياضيات يتسم بالبحتيات أي اللااحتمالات : تطبيقي بحتي.
وكل قانون يوضع يكون الاولى قبل اعتماده : إثباته.. انا من جهتي طريقتي في الاحتساب والتقريب بحيث اجعل الناتج المعروض للمستخدم مقربا لكني لا أدخل التقريب في اي عمليات داخلية بل استخدم الرقم بحجمه الكبير الى ان اصل للرقم النهائي او الاجمالي وبعدها اقربه..
أمل ان اكون اضفت جانب علمي بحث رياضي وواضح...شكرا للجميع على القراءة.
أختي الغالية زهرة
الحمد لله فهمت عمل جميع الدوال ما عدا دالتي Last و First
فلم أفهم جيداً ما المقصود بهم
وفيما يستخدمون
فهل مزيد من الايضاح
شكراً لكي


يا استاذ محمد
First تعطينا أول قيمة في الوسيطتين الممررتين لها الأولى الحقل والثانية الجدول مثال
VarSalary=DFirst("[Salary]","SalaryTbl")السطر السابق سيعطينا أول راتب في جدول الرواتب
VarSalary=DFirst("[Salary]","SalaryTbl","[EmployedID=10")السطر السابق سيعطينا أول راتب للموظف الذي رقمه =10
VarSalary=DFirst("[Salary]","SalaryTbl","[EmployedID=10 And [ٍSalaryYear]=#2007#")السطر السابق سيعطينا أول راتب للموظف رقم 10 خلال عام 2007
كما يمكنك أضافة ما تريد من الشروط
Last
هي نفس دالة DFirst في الصيغة مع إختلاف أنها تعطينا أخر قيمة بدلا من أول قيمة
تم تعديل هذه المشاركة بواسطة مصلح الحريصي في 3 أكتوبر 2007 في 00:14
بارك الله فيك اخي ابو ساره
وكل عام وانت الى الله اقرب وعلى طاعته أدوم
وتقبل الله منا ومنك صالح الأعمال
تعديله صغنونه على شرحك
ياريت انك تضيف قبل الدالة First حرف D لتصبح DFirst لأنك تتكلم عن مجاميع والمجاميع تحتاج الى اسم الحقل واسم الجدول اما First لوحدها تأخذ فقط تعبير الحقل فقط او مربع النص بدون اضافة الجدول لها وما ينطبق على الدالة First او DFirst ينطبق ايضا على الدالة Last او DLast
بالتوفيق للجميع
اقتباستعديله صغنونه على شرحك
لا بل كارثه فأن الكود لا يعمل بدون اضافة حرف D قبل الدالة
أعتذر من الجميع على الخطأ وقد تم التعديل في المشاركة السابقة
مع الشكر للأخت زهره على التنبيه
تم تعديل هذه المشاركة بواسطة مصلح الحريصي في 3 أكتوبر 2007 في 00:13
أخي الغالي مصلح
أختي الغالية زهــــــــــرة
يظهر ان الكنافة وقطايف رمضان بدأ تأثيرهم يظهر علي عقل الواحد ( والله لم أفهم شيء ) آسف أنا عارف انه غباء مني لكن الموضوع ازداد صعوبة أكثر
أنا أقصد الدالة First والدالة Last الموجودين في الاستعلامات
طيب لو كانت هي ممكن ارفاق مثال للايضاح أكثر


أخي الفاضل محمد
اعلم ان مخك نظيف جدا ولا تفوت عليك مثل هذا الأمور الصغيره ولكن جل من لا يسهو
حسنا انظر للشرح المصور والمثال
بارك الله فيكي يا أختنا الغالية زهرة
أنا مش عارف انا كنت نايم ساعتها ولا اية ههه :lol:
رمضان كريم


الاخوة الافاضل بارك الله فيكم وجعل هذا العمل فى ميزان حسناتكم لى استفسار بخصوص العمليات الحسابية لو تكرمتم اقوم بغمل برنامج كنترول لمدرستى ةلكن صادفتنى بعض المشاكل فى تجمبع الدرجات والسؤوال هو كيف ارصد غ اى التتلمبذ الغائب وثانيا كيف اجمع غ + رقم = رقم أو رقم + غ = غ أو غ+غ = غ ولكم كل التقدير والاحترام اعضاء النتدى العظيم الذى نلجأ اليه فى وقت الشدة
وشكرا لكم
يمكنك بسهولة خلال الدالة COUNT
COUNT ([FIELDNAME]) P
جيث FIELDNAME هو أسم الحقل المراد عده
بالنسبة لجمع رقم مع غ يمكنك فعله كما يلى :
لديط طالب مثلا لديه 5 أيام غياب
أعمل LABEL داخل الفورم و زر COMMAND
داخل ال COMMAND أكتب
ME.LABEL1.CAPTION = "الطالب محمد لديه "& 5& "أيم غياب "
ملك الطغـــــــــــــاة عرينها إذ غـــــــــــــاب حيدرها الأشم
لأهتمامك أوضح لك أخى الكريم مثلا لدى جدول درجات التلاميذ فى امتحان آخر العام نفترض ان تلميذ غاب فى امتحان الترم الاول من المفترض ان ترص له ( غ ) وحصر فى الترم الثانى وأخذ درجة مثلا ( 8 ) المفترض ان يجمع الترم الاول + الترم الثانى والمفترض ان يكون المجموع = 8 والعكس اذا غاب فى الترم الثانى المفترص ان يكون ناتج الجمع = غ أما ثالثا اذا غاب فى الترم الاول والترم الثانى يجب ان يكون الناتج = غ فكيف يتم تنفيذ ذلك ارجو ان يكون السؤال واضح الان وشكرا للإخوة الافاضل
نور55 كتب:لأهتمامك أوضح لك أخى الكريم مثلا لدى جدول درجات التلاميذ فى امتحان آخر العام نفترض ان تلميذ غاب فى امتحان الترم الاول من المفترض ان ترص له ( غ ) وحصر فى الترم الثانى وأخذ درجة مثلا ( 8 ) المفترض ان يجمع الترم الاول + الترم الثانى والمفترض ان يكون المجموع = 8 والعكس اذا غاب فى الترم الثانى المفترص ان يكون ناتج الجمع = غ أما ثالثا اذا غاب فى الترم الاول والترم الثانى يجب ان يكون الناتج = غ فكيف يتم تنفيذ ذلك ارجو ان يكون السؤال واضح الان وشكرا للإخوة الافاضل
الأخت الفاضلة ..نور55.. السلام عليكم
أرجو أن تعملي موضوع مستقل جديد خاص بهذا السؤال
وإن شاء الله تجدين الاجابة
اقتباسلأهتمامك أوضح لك أخى الكريم مثلا لدى جدول درجات التلاميذ فى امتحان آخر العام نفترض ان تلميذ غاب فى امتحان الترم الاول من المفترض ان ترص له ( غ ) وحصر فى الترم الثانى وأخذ درجة مثلا ( 8 ) المفترض ان يجمع الترم الاول + الترم الثانى والمفترض ان يكون المجموع = 8 والعكس اذا غاب فى الترم الثانى المفترص ان يكون ناتج الجمع = غ أما ثالثا اذا غاب فى الترم الاول والترم الثانى يجب ان يكون الناتج = غ فكيف يتم تنفيذ ذلك ارجو ان يكون السؤال واضح الان وشكرا للإخوة الافاضل
نور
والله مافهمت حاجة .....
مش عارف السؤال مش مقهوم ولا انا اللى مش فاهم :wacko:
على العموم يمكنك وضع الموضوع كموضوع جديد كما أقترح الأخ أكسير و كذلك إرفاق البرنامج وسوف اقوم بتعديله بإذن الله
ملك الطغـــــــــــــاة عرينها إذ غـــــــــــــاب حيدرها الأشم
شكرا على سعة صدر الاخوة الافاضل نتناول السؤال على قسمين أولا مثال امتحان أخر العام - كيف نرصد غ ( لتلميذ غاب فى الترم الاول ثم حصر فى الترم الثانى وأخد درجة مثلا 25 كيف يتم جمع الترمين اعتقد ان الشق هذا من السؤال واضح وشكرا
نور أليست غ = صفر
اى انه لم يحضر فى هذه المادة و بالتالى درجته = صفر
ملك الطغـــــــــــــاة عرينها إذ غـــــــــــــاب حيدرها الأشم
نعم غ = صفر
لكن لابد ان ترصد غ لان بعد ذلك سوف يتم طباعة تقارير مثل الشهادات وكشوف النتيجة وعمل احصائيات الخ مثل كم حضور فى مادة اللغة العربية مثلا وكم غيائب وكم ناجح الخ
انا اريد كيفية لتنفيذ من خلال الجدول والاستعلامات وشكرا على ردكم الخوة الافاضل
هذا الكود سيحل المشكلة :
فى التقرير أفتحى ال EXPRESSION BUILDER
= [أسم الحقل الذى به الرقم ] & [أسم الحقل الذى به غ ]
وان كانت صعبى ارفقى لى البرنامج وسوف اعدله لك .....
ملك الطغـــــــــــــاة عرينها إذ غـــــــــــــاب حيدرها الأشم
الاخ الفاضل أنا اريد رصد ( غ ) فى الجدول ثم تجميعها مع الدرجة التى حضر فيها بواسطة استعلام لينم لعد ذلك عمل الاحصائيات حضور وغياب الخ وشكرا
اخواني ارجو منكم المساعدة مثلاً اريد قسمة خمسة على مربع المجموع كيف اعمل
الرجاء الرجاء افيدوني
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…