• 0
MonaAli

استخدام الدالة DLookup

سؤال

بسم الله الرحمن الرحيم <br>السلام عليكم ورحمة الله وبركاته , وبعد:<br>يا إخواني أنا حاولت أعمل برنامج مبيعات ومخازن وعملت جدول للبظاعة المشراة وجدول ثاني للبظاعة المباعة وأريد أستخدم الدالة DLookup لإحضار إجمالي الكمية المشتراة من الصنف من جدول فواتير الشراء في تكست و إجمالي الكمية المباعة من نفس الصنف في تكست ثاني علشان أطرح إجمالي الكمية المباعة من الصنف من إجمالي الكمية المشتراة من نفس الصنف علشان يطلع عندي الكمية المتوفرة بالمخزن في تكست ثالث علشان ما أبيع من الصنف لو الكميه خلصت بس ما قدرت بتطلع لي رسالة خطأ عندما أشغل النموذج <br>وهذا هو الكود اللي عملته

Me.QwaSh = DLookup("sum([QoaHa])", "SnfSh", "[Snf]='" & [Nam] & "'")

مع العلم إن Me.QwaSh هو اسم التكست اللي أريد أحط فيه إجمالي الكمية المشتراة من الصنف و  QoaHa  هو الكمية المشتراة من الصنف بموجب فاتورة الشراء و "SnfSh" اسم جدول فواتير شراء البظاعة و [snf] هو رقم الصنف في جدول فواتير الشراء .. أتمنى ألاقي إجابة ضروري ضروري ضروري<br>

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

24 إجابة على هذا السؤال .

  • 0

بسم الله الرحمن الرحيم

أستاذتي العزيزة زهرة .. السلام عليكم ورحمة الله وبركاته,

أولاً جزاكم الله كل خير

ولي استفسار .. ماذا عن استخدام الدوال DLookup أو DSum مع حقول وتكستات الوقت والتاريخ على النماذج؟

أتمنى تكرمكم بالرد

اختي الفاضلة : منى

كما تعلمين انه عند استخدام المعايير في هذه الجمل حساسة جدا لقبول اي صيغة وعند استخدام الدوال التجميعية مثل ( DLookup - DSum - DMax - DCount - DFirst - DLast ) في تعبير يجب التقيد بشروط معينه وهي :

1. شروط الحقل الرقمي ( يكون نوع الحقل في الجدول اساسا نوعه رقم ) .

2. شروط الحقل النصي ( يكون نوع الحقل في الجدول اساسا نوعه نص ) .

3. شروط الحقل تاريخ ( يكون نوع الحقل في الجدول اساسا نوعه - تاريخ / وقت )

نستعرض الآن الشرح لكل نوع من انواع الحقول والفروقات بينهم .

1. اذا كان الحقل رقمي Numerical ( اي انه في الجدول نوعه رقم ) فيجب ان يوضع في ( الإستعلام او التعبير ) بين علامتي تنصيص بهذه الطريقة "[iD]"

مثل


"[ID]=" & [ID]

لاحظ علامتي التنصيص فهي تخص فقط الحقل الأول وبعدها نضع حرف & لكي نسند قيمة المساواه الى نفس الحقل سواء في الجدول او النموذج

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]"; "TableName"; "[FieldName] =" & [FieldName])

لاحظ علامتي التنصيص المزدوجه " " للحقل الرقمي حيث تم وضع اول علامة تنصيص للحقل الرقمي الأول الموجود في الجدول ثم علامة = ثم علامة تنصيص مزدوجه " ثم & ثم الحقل الرقمي الثاني الموجود سواء في الجدول او النموذج او التقرير

2. اذا كان الحقل نصي Strings ( اي ان الحقل في الجدول نوعه نص ) فيجب ان يوضع في الإستعلام بين ثلاث علامات تنصيص بهذه الطريقة "'[NAME]"'

مثل


"[NAME]=' & [NAME] & ' "

لاحظ كيف اختلف التعبير عن الحقل الرقمي في الكود العلوي حيث تم اضافة عدد اثنين & بعد الفاصلة العلوية الثالثة لحقل الإسم الأول حيث يجب وضع حقل الإسم الثاني بين علامتي تنصيص مفرده ' ' اما علامتي التنصيص المزدوجة " " فهي خاصة لحقل الإسم الأول

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]"; "TableName"; "[FieldName] =' " & [FieldName] & " ' ")

لاحظ في الكود ترتيب علامات التنصيص سواء المزدوجة او المفرده فأول علامة تنصيص مزدوجه لحقل الإسم الأول يجب ان يغلق بعلامة تنصيص مفرده ' بعد علامة = فهذه اول ثلاث علامات تنصيص ' " للحقل الأول ثم نضع علامة تنصيص مزدوجه " للحقل الثاني لأنه نصي ثم

نضع & ثم نضع حقل الإسم الثاني ثم نضع & ثم نغلق علامة التنصيص المزدوجه " للحقل الثاني ثم نغلق علامة التنصيص المفرده ' لحقل الإسم الأول ثم نغلق كامل الجملة بعلامة تنصيص مزدوجة " وهي خاصة بحقل الإسم الأول

3. اذا كان الحقل من نوع تاريخ DATE ( يعني في الجدول نوعه تاريخ / وقت ) فيجب ان يوضع بين بين علامتي شبكة #[DATE]#

مثل


"[DATE]=#" & [DATE] & #"

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]", "TableName", "[Date]=#" & [Date] & "#")

لاحظ كيف تم استخدام علامات التنصيص المزدوجه " وعلامتي الشبكه #

حسنا ماذا لواردنا تجميع كل هذه المعايير حقل رقمي Numerical و حقل نصي Strings و حقل تاريخ Date في دالة واحده فيجب ان نكون حريصين جدا في وضع علامات التنصيص لكل حقل حتى لا نحصل على اخطاء

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]", "TableName", "[FieldNumerical] = " & [FieldNumerical] & " AND [FieldString] = '" & [FieldString] & "'" & " AND [FieldDate] = #" & [FieldDate]& "#" )

تطبيقات عملية للفائدة : لمعرفة طريقة استخدامها لكل نوع

1. الحقول الرقمية وطرق استخدام التعبيرات فيها :


DLookup("[UnitPrice]", "Order Details", "OrderID = 10248")

في هذا المثال لم نستخدم الحقل الرقم الثاني ولمن استخدمنا مباشرة رقم


DLookup("CustomerID", "Orders", "OrderID = " & Forms![Orders]!OrderID)

في هذا المثال اسندنا الحقل الرقمي الى الحقل الرقمي في النموذج Orders


DLookUp("[LastName]", "Employees", "[EmployeeID] = Form![EmployeeID]")

في هذا المثال اسندنا الحقل الرقمي للحقل الرقمي في النموذج الحالي الذي وضعنا به التعبير


DLookUp("[LastName]", "Employees", "[EmployeeID] = " & [EmployeeID])

في هذا المثال اسندنا الحقل الرقمي الى الحقل الرقمي في النموذج مباشرة بدون ان نشير الى النموذج بإعتبار ان الحقل الرقمي موجود اساسا في النموذج الذي نعمل عليه .


DLookUp("[LastName]", "Employees", "[EmployeeID] = " & Forms![Orders]![EmployeeID])

في هذا المثال اسندنا الحقل الرقمي الى الحقل الرقمي في النموذج المحدد Orders

جميع هذه التعبيرات صالحة وتعطي نفس النتيجة وهذا ينطبق على الحقول الرقمية فقط .

2. الحقول النصية وطرق استخدام التعبيرات فيها :


DLookUp("[Title]", "Employees", "[LastName] = 'zahrah'")

في هذا المثال اسندنا الحقل النصي مباشرة الى اسم موجود في الجدول

ويأتي ايضا بهذه الطريقه


DLookUp("[Title]", "Employees", "[LastName] = ""Callahan""")

لاحظ كيف تم استخدام علامات التنصيص مع الحقل النصي


DLookup("[ContactName]", "[Customers]", "[CustomerID]='" & [CustomerID] & "'")

او


DLookup("[ContactName]", "[Customers]", "[CustomerID]='" & Forms![Orders]![CustomerID] & "'")

المثال السابق والأخير متشابهه تماما والإختلاف في الأول اسندنا الى الحقل مباشره اما في الثاني فأسندناه الى الحقل الموجود في النموذج Orders

جميع هذه التعبيرات صالحة وتعطي نفس النتيجه وهذا ينطبق على الحقول النصية فقط .

3. حقول التاريخ والوقت وطرق استخدام التعبيرات فيها :


DLookUp("[LastName]", "Employees", "[BirthDate] = #01-27-66#")

في هذا المثال اسندنا حقل التاريخ الى احد التواريخ مباشرة

او


DLookUp("[LastName]", "Employees", "[BirthDate]=#" & [BirthDate] & "#")

في هذا المثال اسندنا حقل التاريخ الى حقل تاريخ موجود في النموذج

جميع هذه التعبيرات صالحة وتعطي نفس النتيجه وهذا ينطبق على حقول التواريخ فقط

ختاما اتمنى انني قد غطيت بعض الجوانب البسيطة في هذا الموضوع عن طرق استخدام التعبيرات لكل نوع من الأنواع .

بالتوفيق

تم تعديل بواسطه zahrah
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اختي الفاضل : منى

السلام عليكم ورحمة الله وبركاته

اتمنى ان تنتبهي للشرح

الدالة DLookup تقوم بعملية البحث عن سجل معين فقط وليس لها علاقة بالإجماليات ومن الخطأ وضع عبارة المجموع sum بداخل الداله .

الدالة DSum هي المسئولة عن الإجماليات ولهذا لابد من تعديل الطريقة :

لاحظي معي الآن :

اذا كان رقم الصنف وهو المعيار الذي سيتم من خلاله البحث عن الإجمالي نوعه ( رقمي ) فالعبارة لديك خاطئة لأنك استخدمتي علامات تنصيص الحقل النصي

1. اذا كان لديك رقم الصنف حقل رقمي ( Numerical ) فتكون العباره الصحيحه بهذه الطريقة :


Me.QwaSh = DSum("[QoaHa]", "SnfSh", "[Snf]=" & [Nam])

لاحظي علامتي التنصيص المزدوجه " " للحقل الرقمي حيث تم وضع اول علامة تنصيص للحقل الرقمي الأول الموجود في الجدول ثم علامة = ثم علامة تنصيص مزدوجه " ثم & ثم الحقل الرقمي الثاني الموجود سواء في الجدول او النموذج او التقرير

2. اذا كان حقل رقم الصنف نصي ( Strings فيجب ان يوضع بين ثلاث علامات تنصيص بهذه الطريقة :

مثل


Me.QwaSh = DSum("[QoaHa]", "SnfSh", "[Snf]=' & [Nam] & ' ")

لاحظي كيف اختلف التعبير عن الحقل الرقمي في الكود العلوي حيث تم اضافة عدد اثنين & بعد الفاصلة العلوية الثالثة لحقل الإسم الأول حيث يجب وضع حقل الإسم الثاني بين علامتي تنصيص مفرده ' ' اما علامتي التنصيص المزدوجة " " فهي خاصة لحقل الإسم الأول

بالتوفيق

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بسم الله الرحمن الرحيم

أولاً السلام عليكم ورحمة الله وبركاته ,

وتشكري أختي العزيزه وأستاذتي القدير زهره

ولي سؤال كمان ربنا يخليكِ لو أدرت أستعمل الدالة هذي في التقرير لحساب رصيد المخزن .. هل هناك فرق؟

حاولت أستعملها مع التقرير لكن ما اشتغلت معاي

أتمنى تتكرمي بالإجابة

وأسأل الله تعالى يجزيكِ عني كل الخير يارب

اختي الفاضل : منى

السلام عليكم ورحمة الله وبركاته

اتمنى ان تنتبهي للشرح

الدالة DLookup تقوم بعملية البحث عن سجل معين فقط وليس لها علاقة بالإجماليات ومن الخطأ وضع عبارة المجموع sum بداخل الداله .

الدالة DSum هي المسئولة عن الإجماليات ولهذا لابد من تعديل الطريقة :

لاحظي معي الآن :

اذا كان رقم الصنف وهو المعيار الذي سيتم من خلاله البحث عن الإجمالي نوعه ( رقمي ) فالعبارة لديك خاطئة لأنك استخدمتي علامات تنصيص الحقل النصي

1. اذا كان لديك رقم الصنف حقل رقمي ( Numerical ) فتكون العباره الصحيحه بهذه الطريقة :


Me.QwaSh = DSum("[QoaHa]", "SnfSh", "[Snf]=" & [Nam])

لاحظي علامتي التنصيص المزدوجه " " للحقل الرقمي حيث تم وضع اول علامة تنصيص للحقل الرقمي الأول الموجود في الجدول ثم علامة = ثم علامة تنصيص مزدوجه " ثم & ثم الحقل الرقمي الثاني الموجود سواء في الجدول او النموذج او التقرير

2. اذا كان حقل رقم الصنف نصي ( Strings فيجب ان يوضع بين ثلاث علامات تنصيص بهذه الطريقة :

مثل


Me.QwaSh = DSum("[QoaHa]", "SnfSh", "[Snf]=' & [Nam] & ' ")

لاحظي كيف اختلف التعبير عن الحقل الرقمي في الكود العلوي حيث تم اضافة عدد اثنين & بعد الفاصلة العلوية الثالثة لحقل الإسم الأول حيث يجب وضع حقل الإسم الثاني بين علامتي تنصيص مفرده ' ' اما علامتي التنصيص المزدوجة " " فهي خاصة لحقل الإسم الأول

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بسم الله الرحمن الرحيم

أستاذتي العزيزة زهرة .. السلام عليكم ورحمة الله وبركاته,

أولاً جزاكم الله كل خير

ولي استفسار .. ماذا عن استخدام الدوال DLookup أو DSum مع حقول وتكستات الوقت والتاريخ على النماذج؟

أتمنى تكرمكم بالرد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مبهرة دائماً .. دكتورة/ زهرة .. لقد لمست ما نحتاجه حقيقة .. زادك الله علماً وبارك فيك وآلك.

وكما يقول المثل .. لا تعطينى سمكة لآكل .. ولكن علمنى صيد السمك.

تم تعديل بواسطه omar19-3
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اخواننا واخواتنا الاعزاء

ارجو التوضيح

وجزاكم الله خير.

post-252239-066319300 1325424196_thumb.j

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : سلامنا لكم

بارك الله بك على المشاركه والتنبيه فلم انتبه لكلمة Dsum إلا بعد مشاركتك والصحيح هو DLookUp وقد تم التعديل

حتى نفهم الموضوع بكل بساطه يجب ان نتفق على شيء معين

اولا : هناك دوال للمجاميع وهي ( DLookup - DSum - DMax - DCount - DFirst - DLast ) - هذه جميعنا متفقون عليها . اذن سنتجاوزها لأنها أمر مفروغ منه .

ثانيا : هناك انواع من الحقول في الجدول تستخدم مع هذه الدوال وهذه الحقول اما ان تكون ( رقمية Numerical ) او ( نصيه Strings ) او ( تاريخ/ ووقت Date \Time ) - وايضا هذه جميعنا متفقون عليها - اذن سنتجاوزها لأنها امر مفروغ منه .

ثالثا : هناك شروط لابد من تحقيقها مع كل هذه الدوال

1. اذا كان الحقل الذي نريد اظهاره بواسطة معيار حقل رقمي فيجب ان نستخدم علامة تنصيص مزدوجه واحده في بداية الحقل وفي نهايته بهذه الطريقة مثل حقل رقمي اسمه EmpID فهذا حقل رقمي عباره عن رقم الموظف

واثناء تطبيق المعيار بواسطة هذا الحقل فسيكون بهذه الطريقة :


DLookup("LastName]"; "tblEmployees"; "[EmpID] =" & Me![EmpID])

الآن ركز معي جيدا في هذه العبارة

DLookup : دالة من دوال تجميع المجال مهمتها البحث عن سجل معين بشروط معينه

LastName : حقل الإسم الأخير ونوعه نصي في الجدول وهذا الحقل هو الذي نريده ان يظهر لنا في البحث

tblEmployees : اسم جدول الموظفين في قاعدة البيانات

EmpID : حقل رقم الموظف وهو عباره عن حقل رقمي في الجدول وهذا هو المعيار الذي نريد البحث به عن الإسم الأخير للموظف

Me![EmpID] هذا اسم مربع نص في النموذج

بحيث نقول للدالة DLookup

يا ايتها الدالة المحترمه ، لو سمحتي ابحثي لنا عن الإسم الأخير للموظف الذي رقمه في الجدول يطابق تماما رقمه في النموذج

وانتبهي لا تظهرين لنا اي اسماء من عندك فقط نريد الإسم المطابق بدلالة رقم الموظف

هنا الدالة تقوم بهذه المهمه على اكمل وجه اذا تحققت لها جميع الشروط واذا كان هناك اي خطأ في الشروط فإنها تعود وتقول اسفه لم اجد ما يطابق ما تبحث عنه ولكن حتى اكون كريمه معاك ومش رايحه ارجع بأيدي فاضية من عملية البحث سوف اقوم بوضع كل الأسماء لك دفعة واحده حتى تعدل الخطأ في الشروط .

اخطاء شروط البحث مع دوال تجميع الدوال :

1. فقدان احدى علامات التنصيص

2. عدم اقفال اقواس الدالة

3. استخدام حقل نصي او تاريخ مكان الحقل الرقمي اذا كان المعيار حقل رقمي

اذن الشرط اللازم مع الحقل الرقمي ( المعيار ) ان نضع في بداية الحقل ونهايته علامة التنصيص


"[EmpID] =" &

ويساوي قيمة مربع النص في النموذج


Me![EmpID]

هل لاحظت علامة التنصيص في الحقل الرقمي ( ممتاز ) الله ينور عليك دنيا وآخره .

قد يتبادر الى ذهنك سؤال :

كيف تكون الطريقة اذا كان حقل المعيار نصي ؟؟؟

الإجابه :

اذا كان حقل المعيار الذي نريد البحث به نصي فالوضع يختلف قليلا بحيث نستخدم علامتين تنصيص وبينها علامة تنصيص مفرده ( " ' " ) لحقل النصي

مثال :


DLookUp("[LastName]"; "tblEmployees"; "[Job] =' " & [Job] & " ' ")

لاحظ الفرق الآن في علامات التنصيص بين الحقل الرقمي والحقل النصي ( هناك فرق كبير )


"[Job] =' " &

هذا حقل الوظيفة وهو عبارة عن حقل نصي في الجدول استخدمناه كمعيار للبحث عن الأسم الأخير للموظف


Me![Job] & " ' "

هذا اسم مربع نص حقل الوظيفة للموظف في النموذج

هل رأيت الآن الفرق بين الحقل الرقمي والحقل النصي ( ممتاز ) الله ينور عليك دنيا وآخره .

اخيرا قد يتبادر الى ذهنك سؤال :

كيف تكون الطريقة اذا كان حقل المعيار تاريخ ؟؟؟

الإجابه :

اذا كان حقل المعيار الذي نريد البحث به تاريخ فالوضع يختلف قليلا بحيث نستخدم علامتين تنصيص وبينها علامة شبكه ( " # " ) لحقل التاريخ

مثال


DLookUp("[LastName]", "tblEmployees", "[BirthDate]=#" & [BirthDate] & "#")


"[BirthDate]=#" &

هذا حقل تاريخ الميلاد للموظف ونوعه تاريخ / وقت وهو المعيار الذي نريد البحث به عن الأسم الخير لمظف في الجدول


Me![BirthDate] & "#"

هذا حقل تاريخ الموظف في النموذج

الآن تقريبا غطينا كل الحقول وطرق استخدامها

بالتوفيق

تم تعديل بواسطه zahrah
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاكى الله كل خير يا ام عهود على هذا الشرح الرائع والوافى

ولى سؤال فى الكود ادناه تم استخدام دالة NZ مع دالة DLookup متى نستخدمهم مع بعض حتى تكتمل المعرفه والاستفاده لى وللجميع

 If Nz(DLookup("Kod", "TNames", "Kod = '" & Nz([Kod] & "'", 0)), 0) > 0 Then

وجزاكى الله عنا خير الجزاء

تقبلى منى وافر التحيه والاحترام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0


If Nz(DLookup("Kod", "TNames", "Kod = '" & Nz([Kod] & "'", 0)), 0) > 0 Then

اخي الفاضل : احمد

دعنا نحلل الكود عبارة عباره حتى نعرف ماذا يعني هذا الكود

اولا هذا الكود عليه بعض الملاحظات لأن حقل Kod عليه بعض الملاحظات

وسأخبرك لماذا عليه ملاحظات حتى لا نقع في مثل هذه الأخطاء مستقبلا

في الكود حقل kod حقل نصي والمفروض ان يكون حقل رقمي طالما اننا لم نستخدم حالات شاذه مثل خلط حروف وارقام مع بعض فهنا نحتاج الى مثل هذا الحقل ولكن طالما اننا سوف نستخدم هذا الحقل للأرقام فقط فيجب ان يكون حقل رقمي بحت .

حسنا متى نستخدم الحقل النصي المختلط ؟

1. نستخدمه اذا كان لدينا مثلا رقم هاتف او فاكس دولي لأننا سوف تحتاج الى علامة ( + ) معه في بداية كود الدوله وطبعا لا ينفع ان يكون حقل رقمي

2. في تعريف الأيبان الخاص بالبنوك حيث يكون بداية كل ايبان حرفين ثم بعده 16 رقم

3. عندما يكون الكود او الرقم المراد استخدامه اكبر من 10 ارقام لأن الحقل الرقمي لا يقبل في بدايته ( صفر )

اما في حالتك انت فهو حقل عادي وكان من المفترض انك استخدمت حقل رقمي بدلا من نصي لأنك وقعت الآن في اشكالية كيف تعيد الحقل النصي الى رقمي وذلك بإستخدام الدالة NZ

الدالة NZ تعيد قيمة الحقل الى ( صفر ) اذا لم يكن هناك قيمه في الحقل شأنها شأن الحقل الرقمي الذي قيمته الإفتراضية ( صفر )

الآن سنأخذ الكود من الداخل بداية بدالة البحث DLookup والتي تقول

ابحث عن قيمة حقل الـ kod في الجدول الذي يساوي قيمة مربع النص kod في النموذج فهنا فهنا سيتم اظهار النتيجة اذا كانت مطابقة

ثم تم اضافة NZ التي تعيد القيمة اذا كانت خالية الى ( صفر )

ثم تم اضافة IF الشرطية لكامل العباره والتي تشترط ان تكون القيمه اكبر من ( صفر )

بمعنى ان الكود في مجمله يبحث عن القيم التي اكبر من الصفر

وبدلا من هذا العذاب كله لو اننا استخدمنا حقل الـ kod كحقل رقمي كان سيكون شكل الكود بهذه الطريقة


If (Dcount("Kod", "TNames", "Kod = " & Me![Kod] ) > 0 Then

الآن هل رأيت الفرق بين الكودين حيث تم استخدام دالة Dcount لعد الحقول الرقمية في الجدول فإن كانت اكبر من الصفر نضع رسالة بعد الكود تخبرنا ان هذا السجل مكرر اكثر من مره

طبعا لم نستخدم لا NZ ولا DLookup فقط استخدما دالة المجال الصحيحه مع الحقل الصحيح

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيكى يامعلمتى على هذا الشرح والتوضيح

اختى العزيزه

من خلال قرائتى لأنواع الحقول فى شروحاتك

فى حالة اننا لن نستخدم هذا الرقم فى عمليات حسابيه ( ولمعلومية حجم الحقل لدى 14 رقم ولن أستخدمه فى عمليات حسابيه فتم تحديده نص )

تقبلى تحياتى واحترامى يامعلمتى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

استاذتنا ومعلمتنا واختنا في الله زهرة الخير.

هل هذا الشرح والشروط وعلمات التنصيص للحقول تكون نفسها في دالة Dsum

ارجو الشرح بمثال كما شرحتي في دالة Dlookup

وجزاك الله خير

post-252239-073507600 1325491162_thumb.j

تم تعديل بواسطه سلامنا لكم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

استاذتنا ومعلمتنا واختنا في الله زهرة الخير.

هل هذا الشرح والشروط وعلمات التنصيص للحقول تكون نفسها في دالة Dsum

ارجو الشرح بمثال كما شرحتي في دالة Dlookup

وجزاك الله خير

اخي الفاضل : سلامنا لكم

حتى نفهم الموضوع بكل بساطه يجب ان نتفق على شيء معين

اولا : هناك دوال للمجاميع وهي ( DLookup - DSum - DMax - DCount - DFirst - DLast ) - هذه جميعنا متفقون عليها . اذن سنتجاوزها لأنها أمر مفروغ منه .

ثانيا : هناك انواع من الحقول في الجدول تستخدم مع هذه الدوال وهذه الحقول اما ان تكون ( رقمية Numerical ) او ( نصيه Strings ) او ( تاريخ/ ووقت Date \Time ) - وايضا هذه جميعنا متفقون عليها - اذن سنتجاوزها لأنها امر مفروغ منه .

ثالثا : هناك شروط لابد من تحقيقها مع كل هذه الدوال

1. اذا كان الحقل الذي نريد اظهاره بواسطة معيار حقل رقمي فيجب ان نستخدم علامة تنصيص مزدوجه واحده في بداية الحقل وفي نهايته بهذه الطريقة مثل حقل رقمي اسمه EmpID فهذا حقل رقمي عباره عن رقم الموظف

واثناء تطبيق المعيار بواسطة هذا الحقل فسيكون بهذه الطريقة :


DLookup("LastName]"; "tblEmployees"; "[EmpID] =" & Me![EmpID])

اخي الفاضل : سلامنا لكم

يبدو انك لم تركز في الشرح منذ البداية

هل رأيت الأن انك لم تركز في الشرح

ما ينطبق على على اي دالة من دوال المجال فهو ينطبق على الجميع بدون استثناء فكلها لها الشروط والمعايير وايضا ينطبق على اختك زهره لأنها تعتبر داله على الخير :)

بالتوفيق

تم تعديل بواسطه zahrah
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اشكرك جدا

وفعلا انت اسمى دالة على الخير.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيكى يامعلمتى على هذا الشرح والتوضيح

اختى العزيزه

من خلال قرائتى لأنواع الحقول فى شروحاتك

فى حالة اننا لن نستخدم هذا الرقم فى عمليات حسابيه ( ولمعلومية حجم الحقل لدى 14 رقم ولن أستخدمه فى عمليات حسابيه فتم تحديده نص )

تقبلى تحياتى واحترامى يامعلمتى

هل هناك تعليق يا ام عهود على هذا الكلام حتى يتثنى لى الفهم الكامل فى الاختيار بعد ذلك .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : احمد

طالما ان طول الأحرف التي سوف تستخدمها في هذا الحقل حوالي 14 رقم ولن تستخدم في عمليات حسابية فلا بأس ان تستخدم الحقل النصي

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاكى الله كل خير يا ام عهود

وربنا يجعله فى ميزان حسناتك ان شاء الله

تقبلى تحياتى واحترامى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

هنا عندي مداخلة صغيرة

لاحظت عندما استخدم هذه الدالة لسحب ارقام مسجلة في جدول من نوع نص ووضعها في مربع نص تنسيقه كنص

يعطي رسالة خطأ في نوع البيانات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

هنا عندي مداخلة صغيرة

لاحظت عندما استخدم هذه الدالة لسحب ارقام مسجلة في جدول من نوع نص ووضعها في مربع نص تنسيقه كنص

يعطي رسالة خطأ في نوع البيانات

اخي الفاضل

تأكد من نوع الحقول انها متطابقه

وتأكد ايضا انك تستخدم علامات التنصيص بصوره صحيحة

يعني مع النصوص نستخدم ( " ' " ) حسب الشروحات السابقة والخاصة بالحقول النصية

اذا ظهرت لك المشكلة فضع العبارة كاملة هنا وسنرى ماذا قمت بعمله وطريقة استخدامك للدالة مع الحقول

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اختي الفاضلة : منى

كما تعلمين انه عند استخدام المعايير في هذه الجمل حساسة جدا لقبول اي صيغة وعند استخدام الدوال التجميعية مثل ( DLookup - DSum - DMax - DCount - DFirst - DLast ) في تعبير يجب التقيد بشروط معينه وهي :

1. شروط الحقل الرقمي ( يكون نوع الحقل في الجدول اساسا نوعه رقم ) .

2. شروط الحقل النصي ( يكون نوع الحقل في الجدول اساسا نوعه نص ) .

3. شروط الحقل تاريخ ( يكون نوع الحقل في الجدول اساسا نوعه - تاريخ / وقت )

نستعرض الآن الشرح لكل نوع من انواع الحقول والفروقات بينهم .

1. اذا كان الحقل رقمي Numerical ( اي انه في الجدول نوعه رقم ) فيجب ان يوضع في ( الإستعلام او التعبير ) بين علامتي تنصيص بهذه الطريقة "[iD]"

مثل


"[ID]=" & [ID]

لاحظ علامتي التنصيص فهي تخص فقط الحقل الأول وبعدها نضع حرف & لكي نسند قيمة المساواه الى نفس الحقل سواء في الجدول او النموذج

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]"; "TableName"; "[FieldName] =" & [FieldName])

لاحظ علامتي التنصيص المزدوجه " " للحقل الرقمي حيث تم وضع اول علامة تنصيص للحقل الرقمي الأول الموجود في الجدول ثم علامة = ثم علامة تنصيص مزدوجه " ثم & ثم الحقل الرقمي الثاني الموجود سواء في الجدول او النموذج او التقرير

2. اذا كان الحقل نصي Strings ( اي ان الحقل في الجدول نوعه نص ) فيجب ان يوضع في الإستعلام بين ثلاث علامات تنصيص بهذه الطريقة "'[NAME]"'

مثل


"[NAME]=' & [NAME] & ' "

لاحظ كيف اختلف التعبير عن الحقل الرقمي في الكود العلوي حيث تم اضافة عدد اثنين & بعد الفاصلة العلوية الثالثة لحقل الإسم الأول حيث يجب وضع حقل الإسم الثاني بين علامتي تنصيص مفرده ' ' اما علامتي التنصيص المزدوجة " " فهي خاصة لحقل الإسم الأول

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]"; "TableName"; "[FieldName] =' " & [FieldName] & " ' ")

لاحظ في الكود ترتيب علامات التنصيص سواء المزدوجة او المفرده فأول علامة تنصيص مزدوجه لحقل الإسم الأول يجب ان يغلق بعلامة تنصيص مفرده ' بعد علامة = فهذه اول ثلاث علامات تنصيص ' " للحقل الأول ثم نضع علامة تنصيص مزدوجه " للحقل الثاني لأنه نصي ثم

نضع & ثم نضع حقل الإسم الثاني ثم نضع & ثم نغلق علامة التنصيص المزدوجه " للحقل الثاني ثم نغلق علامة التنصيص المفرده ' لحقل الإسم الأول ثم نغلق كامل الجملة بعلامة تنصيص مزدوجة " وهي خاصة بحقل الإسم الأول

3. اذا كان الحقل من نوع تاريخ DATE ( يعني في الجدول نوعه تاريخ / وقت ) فيجب ان يوضع بين بين علامتي شبكة #[DATE]#

مثل


"[DATE]=#" & [DATE] & #"

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]", "TableName", "[Date]=#" & [Date] & "#")

لاحظ كيف تم استخدام علامات التنصيص المزدوجه " وعلامتي الشبكه #

حسنا ماذا لواردنا تجميع كل هذه المعايير حقل رقمي Numerical و حقل نصي Strings و حقل تاريخ Date في دالة واحده فيجب ان نكون حريصين جدا في وضع علامات التنصيص لكل حقل حتى لا نحصل على اخطاء

مثال لأي دالة من دوال المجال التجميعي


DSum("[FieldName]", "TableName", "[FieldNumerical] = " & [FieldNumerical] & " AND [FieldString] = '" & [FieldString] & "'" & " AND [FieldDate] = #" & [FieldDate]& "#" )

تطبيقات عملية للفائدة : لمعرفة طريقة استخدامها لكل نوع

1. الحقول الرقمية وطرق استخدام التعبيرات فيها :


DLookup("[UnitPrice]", "Order Details", "OrderID = 10248")

في هذا المثال لم نستخدم الحقل الرقم الثاني ولمن استخدمنا مباشرة رقم


DLookup("CustomerID", "Orders", "OrderID = " & Forms![Orders]!OrderID)

في هذا المثال اسندنا الحقل الرقمي الى الحقل الرقمي في النموذج Orders


DLookUp("[LastName]", "Employees", "[EmployeeID] = Form![EmployeeID]")

في هذا المثال اسندنا الحقل الرقمي للحقل الرقمي في النموذج الحالي الذي وضعنا به التعبير


DLookUp("[LastName]", "Employees", "[EmployeeID] = " & [EmployeeID])

في هذا المثال اسندنا الحقل الرقمي الى الحقل الرقمي في النموذج مباشرة بدون ان نشير الى النموذج بإعتبار ان الحقل الرقمي موجود اساسا في النموذج الذي نعمل عليه .


DLookUp("[LastName]", "Employees", "[EmployeeID] = " & Forms![Orders]![EmployeeID])

في هذا المثال اسندنا الحقل الرقمي الى الحقل الرقمي في النموذج المحدد Orders

جميع هذه التعبيرات صالحة وتعطي نفس النتيجة وهذا ينطبق على الحقول الرقمية فقط .

2. الحقول النصية وطرق استخدام التعبيرات فيها :


DLookUp("[Title]", "Employees", "[LastName] = 'zahrah'")

في هذا المثال اسندنا الحقل النصي مباشرة الى اسم موجود في الجدول

ويأتي ايضا بهذه الطريقه


DLookUp("[Title]", "Employees", "[LastName] = ""Callahan""")

لاحظ كيف تم استخدام علامات التنصيص مع الحقل النصي


DLookup("[ContactName]", "[Customers]", "[CustomerID]='" & [CustomerID] & "'")

او


DLookup("[ContactName]", "[Customers]", "[CustomerID]='" & Forms![Orders]![CustomerID] & "'")

المثال السابق والأخير متشابهه تماما والإختلاف في الأول اسندنا الى الحقل مباشره اما في الثاني فأسندناه الى الحقل الموجود في النموذج Orders

جميع هذه التعبيرات صالحة وتعطي نفس النتيجه وهذا ينطبق على الحقول النصية فقط .

3. حقول التاريخ والوقت وطرق استخدام التعبيرات فيها :


DLookUp("[LastName]", "Employees", "[BirthDate] = #01-27-66#")

في هذا المثال اسندنا حقل التاريخ الى احد التواريخ مباشرة

او


DLookUp("[LastName]", "Employees", "[BirthDate]=#" & [BirthDate] & "#")

في هذا المثال اسندنا حقل التاريخ الى حقل تاريخ موجود في النموذج

جميع هذه التعبيرات صالحة وتعطي نفس النتيجه وهذا ينطبق على حقول التواريخ فقط

ختاما اتمنى انني قد غطيت بعض الجوانب البسيطة في هذا الموضوع عن طرق استخدام التعبيرات لكل نوع من الأنواع .

بالتوفيق

بسم الله الرحمن الرحيم

أستاذتي العزيزه / زهرة .. لكِ خالص الشكر والتقدير والاحترام

وجزاكِ الله كل خير ولا أدري كيف أشكركِ على اهتمامكِ وتفاعلكِ معي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اخواننا واخواتنا الاعزاء

ارجو التوضيح

وجزاكم الله خير.

بسم الله الرحمن الرحيم

نعم أخي الكريم التسميات كما تفضلت حضرتك وذكرتها وبالنسبه لما سألت عنه :

Me.QwaSh هو عنصر تحكم (تكست) غير منظم في النموذج , QoaHa هو الحقل الذي أريد جمع قيمته في الجدول , SnfSh إسم الجدول الذي يحتوي على الحقل (QoaHa ) , Snf حقل رقم الصنف في الجدول SnfSh والذي هو عبارة عن مربع تحرير وسرد يأخذ قيمته من جدول الأصناف أي أننا نختار الصنف إختيار فيقوم هذا الحقل بتخزين رقم الصنف , Nam هو رقم الصنف في جدول فواتير البيع.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0


If Nz(DLookup("Kod", "TNames", "Kod = '" & Nz([Kod] & "'", 0)), 0) > 0 Then

حسنا متى نستخدم الحقل النصي المختلط ؟

1. نستخدمه اذا كان لدينا مثلا رقم هاتف او فاكس دولي لأننا سوف تحتاج الى علامة ( + ) معه في بداية كود الدوله وطبعا لا ينفع ان يكون حقل رقمي

2. في تعريف الأيبان الخاص بالبنوك حيث يكون بداية كل ايبان حرفين ثم بعده 16 رقم

3. عندما يكون الكود او الرقم المراد استخدامه اكبر من 10 ارقام لأن الحقل الرقمي لا يقبل في بدايته ( صفر )

اما في حالتك انت فهو حقل عادي وكان من المفترض انك استخدمت حقل رقمي بدلا من نصي لأنك وقعت الآن في اشكالية كيف تعيد الحقل النصي الى رقمي وذلك بإستخدام الدالة NZ

الدالة NZ تعيد قيمة الحقل الى ( صفر ) اذا لم يكن هناك قيمه في الحقل شأنها شأن الحقل الرقمي الذي قيمته الإفتراضية ( صفر )

الاستاذة زهزة يوجد لدي حقل جعتله نصي وفي القيم بهذه الصورة I117377321 حيث الحرف I ثم ارقام

وعندي الكود كان يعمل على حقول رقمية

Zhrani = Nz(DLookup("[raqmtal]", "tbl_tolab", "raqmtal=" & Forms!frm_hoood_t!raqmtal)&'' ' ")

ولكن يعطي عمد تطابق في نوع البانات

وعند التغيير إلى

Zhrani = Nz(DLookup("[raqmtal]", "tbl_tolab", "raqmtal=" & Forms!frm_hoood_t!raqmtal), 0)

يعطي لق قمت بالغاء العملية

فما هو الحل الصحيح

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

 

شرح أستاذتنا الفاضلة .. زهرة .. من أفضل ما رأيت بخصوص دالة DLookup.. جزاها الله خيرا

 

إن أمكن تصفيته وتثبيته ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاستاذة زهزة يوجد لدي حقل جعتله نصي وفي القيم بهذه الصورة I117377321 حيث الحرف I ثم ارقام

وعندي الكود كان يعمل على حقول رقمية

 

Zhrani = Nz(DLookup("[raqmtal]", "tbl_tolab", "raqmtal=" & Forms!frm_hoood_t!raqmtal)&'' ' ")
ولكن يعطي عمد تطابق في نوع البانات

وعند التغيير إلى

Zhrani = Nz(DLookup("[raqmtal]", "tbl_tolab", "raqmtal=" & Forms!frm_hoood_t!raqmtal), 0)

يعطي لق قمت بالغاء العملية

فما هو الحل الصحيح

وشكرا

 

 

 

 

 

 

 
يكون الكود الصحيح بهذه العبارة
Zhrani = Nz(DLookup("[raqmtal]", "tbl_tolab", "raqmtal='" & Forms!frm_hoood_t!raqmtal) & "'")
 
لم يتم وضع علامة تنصيص مفرده في الكود الخاص بك مما تسبب في الخطأ ولن يعمل الكود بطريقة صحيحة لأن هذا خاص الحقول الرقمية
"raqmtal="
 
والتعديل الصحيح هنا فقط للحقول النصية
"raqmtal='"
 
بالتوفيق
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

جزاكم الله خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .