البحث في الموقع
Showing results for tags 'dlookup'.
تم العثور علي 14 نتائج
-
السلام عليكم 🙂 عند عمل البرنامج ، لا تجرب برنامجك على عدد اقل من 10 الآف سجل ، فسرعة الاستعلام الصحيحة هي لما تجرب البرنامج على اكثر من 10 الآف سجل 🙂 لا تستعمل DlookUp او DSum واخواتها في استعلام ، لأنها تجعل الاستعلام بطيء ، واذا كانت البيانات كثيرة ، فالاستعلام سيكون بطيء بشكل غير مقبول !! وللعلم ، فالاوامر DlookUp او DSum هي واقعا استعلام ، ولكن تم عمله بهيئة دالة ، ترسل لها المتغيرات ، وترج لك النتيجة 🙂 والبديل هو فك كل امر DlookUp او DSum في استعلام مستقل (قد نستطيع جمعهم ، ولكن هذا يعتمد على المعايير) ، بحيث نستخدم معايير الاستعلام بدلا عن معايير الاوامر DlookUp او DSum ، ونستخدم ربط الجداول كنوع من المعيار كذلك. المثال التالي سيوضح قصدي: احد المؤسسات التي اتعامل معها ، ارسلت لي هذا الملف وبه حوالي مليون سجل ، وطُلب مني النظر في بطئ استعلام الحاقي. الجدول التالي يحتوي على 100 الف سجل (حذفت الباقي 🙂) ، وسجلات سنة 2019 = 7 سجلات فقط ، وبقية السجلات لسنة 2018 : . الاستعلام الالحاقي الاصل هو : . ومن اجل هذا المثال ، سنحول الاستعلام الى استعلام عادي ، وسنفك الحقول ، وسنستخدم مجاميع سنة 2019 في استعلام مستقل وكذلك لسنة 2018 : . بالنسبة لسنة 2019 ، بدل عن استخدام الامر DSum (سبب بطئ الاستعلام) ، سنفك الامر DSum الى استعلام مستقل ، هكذا : . ونفس الشيء لسنة 2018 ، والآن نأتي الى المعيار الاخير (3) ، وهو حقل id لجدول var ، يجب ان يساوي حقل المعرف لجدول data ، وانا هنا وضعت استعلام 2019 (والذي يحتوي على 7 سجلات كما رأينا اعلا) ، ووضعت الاستعلام 2018 كذلك ، فيصبح بهذه الطريقة : . هذا الاستعلام يأخذ حوالي ثانيتين في تنفيذه ، ورجاء تجربته 3 مرات للحصول على متوسط وقت التنفيذ 🙂 واترك لكم تجربة الاستعلام qry_DSum_Egaza_9 ، رجاء تجربته 3 مرات كذلك ، وكل من يشارك في هذا الموضوع ، رجاء اعطائنا وقت التنفيذ 🙂 رجاء لا تستخدم الكود في حساب الوقت ، وانما افتح الاستعلام يدويا ، 3 مرات 🙂 اما الاستعلام qry_DSum_Egaza_8 ، فلا انصحك بتجربته ، إلا اذا ما كان عندك شغل آخر تعمله 😁 جعفر استعمل سجلات هذا الملف لتجاربك: --------------------------------------------------------------------------------------------------- هذا مثال آخر يؤيد الفرق في سرعة الاستعلام بين الطريقتين : 1475.Dont_use_DlookUp_DSum_in_Query.accdb.zip
-
بناء على طلب احد الاخوة شرح تفصيلى لدالة: DLookup Function الوصف-Description : ترجع الدالة DLookup قيمة حقل واحد إذا لم يكن هناك سجل يلبي المعايير أو إذا كان المجال لا يحتوي على أي سجلات، ترجع الدالة DLookup القيمة Null إذا كان هناك أكثر من حقل ترجع الدالة DLookup التكرار الأول لذلك يجب تحديد معايير تضمن أن تكون قيمة الحقل التي يتم إرجاعها بواسطة الدالة DLookup فريدة قد تحتاج إلى استخدام قيمة مفتاح أساسي للمعايير او قيمة فريدة للتأكد من أن الدالة DLookup ترجع قيمة فريدة بناء الجملة الدالة-Syntax DLookup : يختلف بناء الجملة الخاص بوظيفة DLookup الشكل العام البسيط لبناء الجملة يكون كالتالى DLookup("FieldName" , "TableName") وعندما نريد بناء جملة ترجع قيمة حقل من جدول بناء على قيمة محددة لابد ان يحتوى بناء الجملة على معيار الشكل العام لبناء الجملة كالتالى DLookup("FieldName" , "TableName" , "Criteria") و لابد من الاخذ فى الاعتبار انه سوف نعتمد فى بناء جملة DLookup من هذا النوع الذى يعتمد على معيار على نوع البيانات المستخدم فى هذا المعيار انواع البيانات المستخدمة فى المعيار هى لا تخرج عن الثلاث انواع الاتية (رقم - نص - تاريخ - Numeric - String - Date ) ودائما تلك الجزئية هى مصدر القلق والخطأ والتساؤل ولكى نبسطها DLookup("FieldName" , "TableName" , "Criteria = n") '|Numeric DLookup("FieldName" , "TableName" , "Criteria = 'S'") '|String DLookup("FieldName" , "TableName" , "Criteria = #D#") '|Date بكل بساطه فى بناء الجملة الرئيسي عندما نستخدم معيار يحتوى على نوع بيانات من النوع رقم فقط تم وضع علامة = بعد Criteria ثم الرقم بدون اى اضافات عندما نستخدم معيار يحتوى على نوع بيانات من النوع نص فقط تم وضع علامة = بعد Criteria ثم النص بين علامتين تنصيص مفرده ' عندما نستخدم معيار يحتوى على نوع بيانات من النوع تاريخ فقط تم وضع علامة = بعد Criteria ثم التاريخ بين علامتين هاش # يستخدم ما سبق عندما نكتب قيمة المعيار بطريقة مباشرة وعندما يكون المعيار مستمد من عنصر موجود اما حقل فى استعلام او مربع نص فى نموذج يكون بناء الجملة كالأتى DLookup("FieldName" , "TableName" , "Criteria =" & [ObjectName]) '|Numeric DLookup("FieldName" , "TableName" , "Criteria ='" & [ObjectName] & "'") '|String DLookup("FieldName" , "TableName" , "Criteria =#" & [ObjectName] & "#") '|Date ملاحظة هامة عند التعامل مع التاريخ لابد ان يكون تنسيق التاريخ فى المعيار على الطريقة الأمريكية mm/dd/yyyy -------------------------------------------------------------------------------------------------------------------------- وعندما يكون المعيار مستمد من متغير يتم اسناد قيمة المعيار اليه داخل محرر الأكواد يكون بناء الجملة كالأتى ولا ننسى عند التعامل مع التاريخ لابد ان يكون تنسيق التاريخ فى المعيار على الطريقة الأمريكية mm/dd/yyyy Dim MyVariable As String Dim stLinkCriteria As String MyVariable = 1 stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'MyVariable = "Mahmoud" 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'MyVariable = "03/01/1982" 'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#" '|Date stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'stLinkCriteria ="[FldCriteria] =#" & MyVariable & "#" '|Date DLookup("FieldName", "TableName", stLinkCriteria) مثال متقدم : احضار بيانات دفعة واحدة من اكثر من حقل عن طريق المصفوفات من خلال الـ DLookup على طريقة استاذى الجليل ومعلمى القدير و والدى الجبيب الاستاذ @jjafferr Dim strDLookupFlds As String Dim stLinkCriteria As String Dim MyVariable As String Dim Arry() As String Dim ChosFld As String MyVariable = 1 stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'MyVariable = "Mahmoud" 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'MyVariable = "03/01/1982" 'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#" '|Date strDLookupFlds = DLookup("[Fld1] & '|' & [Fld2] & '|' & [Fld3] & '|' & [Fld4] & '|' & [Fld5] & '|' & [Fld6] & '|' & [Fld7] & '|' & [Fld8]& '|' & [Fld9]", "[tblName]", stLinkCriteria) Arry = Split(strDLookupFlds, "|") Debug.Print strDLookupFlds ChosFld = Arry(0) Debug.Print ChosFld 'Arry(0) = Fld1 'Arry(1) = Fld2 'Arry(2) = Fld3 'Arry(3) = Fld4 'Arry(4) = Fld5 'Arry(5) = Fld6 'Arry(6) = Fld7 'Arry(7) = Fld8 'Arry(8) = Fld9
- 6 replies
-
- 4
-
- dlookup
- dlookup function
- (و9 أكثر)
-
السلام عليكم تعمل هذه الصيغة فى الاستعلام لكنها أحيانا تعطى نتيجة غير صحيحة خاصة داخل السنة أرجو تدقيقها علما أنه لا يمكننى إرسال نموذج للقاعدة حاليا وهذه صورة وشكرا لكم
-
السلام عليكم الاخوة بارك الله فيكم اريد مثال لتطبيق دالة للاستاذ جعفر وجدتها في المنتدى وهي لاحضار عدة بيانات من جدول عن طريق دالة dlookup والموجودة على هذا الرابط وجزاكم الله خيرا وهي كالتالي Dim x() As String A = DLookup("[pn] & '|' & [Size] & '|' & [Vendor] & '|' & [Description] & '|' & [Maxrl] & '|' & [Maxrlegyptair] & '|' & [actype] & '|' & [pos] & '|' & [biasradial] & '|' & [code]", "code", "[pn]=forms!frm_dataentry!Combopn") x = Split(A, "|") ' For i = LBound(x) To UBound(x) ' Debug.Print x(i) ' Next i Me.pn = x(0) Me.size = x(1) Me.vendor = x(2) Me.Description = x(3) Me.Maxrl = x(4) Me.Maxrlegyptair = x(5) Me.ACType = x(6) Me.Pos = x(7) Me.BiasRadial = x(8) Me.code = x(9)
-
السلام عليكم ورجمة الله وبركاته المرفق برنامج لتسجيل وارد طلبات للموظفين لغرض التنقل من جهة العمل من خلال جدولين جدول بيانات الموظف TblEmployeeData جدول تسجيل طلبات الوارد TblAppOrders ونموذج لتسجيل الطلبات الخاصة بكل موظف WaredTalabat ولا يوجد علاقة بين الجدولين عند التسجيل مع العلم انه عند ادخال رقم الموظف يقوم بجلب باقي بيانات الموظف من جدول بيانات الموظف المشكلة التى اريدها انه عند كتابة كود الموظف بالخطا ( لا يوافق اى رقم بجدول الموظفين ) يقبل البرنامج التسجيل مع العلم بوجود رسالة تنبية في حالة عدم توافق الرقم المدخل ولا اريد ان يقوم البرنامج بالتخطي قبل كتابة كود يتوافق مع حقل كود الموظف واعادة التركيز الى كود الموظف ( ولا اريد التاكد عند الضغط على مفتاح (حفظ))!!! كذلك اريد تفريغ الحقول بعد عملية الحفظ في مشكلة تانية في حالة جعل الحقول unbound والضغط على حفظ يقوم بحفظ الحقول فارغة بالكامل مسموح بتكرار رقم الوارد مسموح بتكرار رقم الموظف غير مسموح بتكرار ( رقم الوارد + رقم الموظف ) منع الاذدواجية في التسجيل طلب اخر عند الضغط على مفتاح العودة يقوم بحذف الحقول من النموذج وعدم الحفظالتحقق من المدخلات.rar انا عارف ان الطلب تقيل بالنسبة لي ولكن لعمالقة المنتدي بسيط دورت كتير وملاقتشي موضوع يتحدث بهذا الشأن او فشلت في عملية البحث ارجو شرح التعديل وليس فقط اضافة الاكودا لتعم الفائدة للمبتدئين امثالي جزاكم الله خير الجزاء معلومة اخيرة مفتاح البحث السريع يقوم بالبحث في جدول الموظفين من خلال نموذج لمعرفة رقم الحاسب للموظف قبل عملية التسجيل Private Sub tx1_AfterUpdate() If DCount("[CompID]", "TblEmployeeData", "tx1='" & Me.tx1 & "'") = 0 Then If MsgBox("ÚÝæÇ! ÇÏÎá ÑÞã ÇáÍÇÓÈ Çæ ÇáÑÞã ÇáÐì ÇÏÎáÊå ÛíÑ ÕÍíÍ ... ÇÚÏ ÇáãÍÇæáÉ ãÑÉ ÇÎÑì", vbCritical + vbYesNo, "ÊäÈíå") = 0 Then Me.Undo Me.tx1.SetFocus Else Me.w1 = "" Me.ÊÇÑíÎ_ÇáæÇÑÏ = "" Me.tx1 = "" Me.tx2 = "" Me.tx3 = "" Me.tx4 = "" Me.tx5 = "" Me.tx6 = "" Me.tx7 = "" Me.tx8 = "" Me.tx9 = "" End If Else Me.tx2 = DLookup("[EmpName]", "TblEmployeeData", "CompID= " & [tx1]) Me.tx3 = DLookup("[Quali]", "TblEmployeeData", "CompID= " & [tx1]) Me.tx4 = DLookup("[DateOQuali]", "TblEmployeeData", "CompID= " & [tx1]) Me.tx5 = DLookup("[QualGroup]", "TblEmployeeData", "CompID= " & [tx1]) Me.tx6 = DLookup("[Sector]", "TblEmployeeData", "CompID= " & [tx1]) Me.tx7 = DLookup("[CenAdmin]", "TblEmployeeData", "CompID= " & [tx1]) Me.tx8 = DLookup("[PupAdmin]", "TblEmployeeData", "CompID= " & [tx1]) Command40.Enabled = True End If End Sub
-
السلام عليكم وجدت صعوبة في كيفية استعمال الدالة DlookUp في نموذج فمثلا عند الضغط على زر اضافة مستخدم اذا كان اسم المدخل من طرف المستعمل موجود مسبقلا في النموذج فان النموذج لا يقوم باضافة المستخدم وتخرج رسالة بان اسم المستخدم موجود الرجاء اعادة اسم اخر. وهل يمكنني فعل هذا باستعمال if. افدوني والسلام عليكم سارفق الملف اضافة مستخدم.rar
-
السلام عليكم ورحمة الله وبركاتة بالمرفق نموذج Frm المطلوب : بعد إدخال رقم في مربع النص Num_rihla وليكن 10 ومربع النص Num_intr وليكن الرقم 25 عند النقر على زر أمر فتح التقرير أن يتم إظهار رقم PcDigt في مربعات النص غير المنظمة حسب الشرط التالي Num_rihla =Forms!Frm!Num_rihla And Num_intr = Forms!Frm!Num_intr مطلوب كود dlookup في مصدر عنصر التحكم في مربع النص الغير منظم في التقرير من الجدولين بحيث يجلب رقم PcDigt من الجدول Tabl_bus الى الحقل s10 مثلا بشرط أن يكونNum_rihla = Num_rihla!Frm And Num_intr=Frm !Num_intr وحقل Chair_No = 10 ويتم معه جلب الأسم الأول والأخير من جدول Tabl_Emp بشرط PcDigt = PcDigt الذي تم جلبه من جدول Tabl_bus وعند عدم وجود الرقم Chair_No في جدول Tabl_Bus تظهر عبارة لم يتم التخصيص عملت هذا الكود لكنه لم يأتي بنتيجه صحيحه حيث انه يرجع القيمة لأول سجل في الجدول ولم أتمكن من تعديله وإكماله ليحقق المطلوب =DLookUp("[PcDigt]";"Tabl_bus";"[Num_rihla] = " & [Forms]![Frm]![Num_rihla] And "[Num_intr] = " & [Forms]![Frm]![Num_intr] And "[Chair_No]=10") ارجو المساعده ولكم جزيل الشكر dlook.rar
-
بسم الله الرحمن الرحيم الاخوة الاعزاء دى اول مشاركة لى فى هذا المنتدى موجود بالمرفقات قاعدة بيانات عبارة جدول و استعلام و نموذج المطوب انه بعد كتاب رقم الصنف فىN1 و رقم FifoNo فى N2 و عند الضغط على زر الامر يجلب القيمة QUT , Price من الاستعلام FIFO الى N3,N4 بالنموذج FIFO.rar
-
السلام عليكم لدي نموذج به حقلين متجاورين رقم الحساب واسم الحساب اتمني عند كتابة رقم الحساب يظهر اسم الحساب وعند اختيار اسم الحساب من القائمة يظهر رقم الحساب وشكرا مقدما 123.accdb
-
السلام عليكم لما رأيت هذه المشاركة خشيت أن تتوه فى الزحام من إبداعات الأستاذ جعفر الكود مع تعليقى عليه فى رأس التقرير ترى الناتج فى عرض الطباعة Private Sub ReportHeader_Format(Cancel As Integer, FormatCount As Integer) 'الإعلان عن مصفوفة نصية Dim x() As String 'جلب آخر قيمة مضافة بدلالة حقل الترقيم التلقائى 'بشرط [qty_in]<>0 MX = DMax("[ID]", "Transactions", "[Qty in]<>0") 'البحث فى حقل مكون من حقلين بينهما فاصل 'الحقلان هما أنفسهما المطلوبان فى مربعى نص فى التقرير 'استخدام نتيجة mx كشرط ' DL = DLookup("[add_doc] & '|' & [zdate]", "Transactions", "[ID]=" & MX) 'التقسيم لفصل العمودين x = Split(DL, "|") Me.Text53 = x(0) Me.Text48 = x(1) End Sub رابط المشاركة
-
السلام عليكم اساتذتى الكرام عندى فكرة محتاجة تطوير الطريقة كالتالى انا عندى جدول اسمه Orders وعندى نموذج لصرف الخامات من المخزن قمت بربط النموذج بمحتويات الجدول السابق الاشارة اليه حتى يجبر امين المخزن بصرف الاصناف الموجودة بالطلبية فقط وبالكميات المحددة ايضا عن طريق كود يتم وضعه فى حدث قبل التحديث Before Update مثال للكود if me.item <> Dlookup ("[item]","Orders","id='" & Me.Parent!Combo51 & "'"") then cancel = Msgbox ("الصنف غير موجود فى قائمة الطلبيات") ولكن واجهتنى مشكلتين الاولى اذا كانت الطلبية أكثر من صنف تتم العملية بنجاح فى اختيار الصنف الاول ولكن عند اختيار الصنف الثانى فى الطلبية تظهر رسالة الخطأ المحددة فى الكود وتقول ان الصنف غير موجود بالطلبية ولكنه موجود واظن الخطأ هنا فى تطبيق الفكرة عن طريق Dlook up والمفترض تطبيقها عن طريق Recordset ولكن امكانياتى لا تسمح بتطبيق الفكرة المشكلة الثانية التى واجهتنى اذا قام امين المخزن بصرف صنف واحد من الطلبية تتم العملية بنجاح فى حين انى محتاج صرف الطلبية بالكامل وفى حالة مخالفة ذلك لا يمكن استكمال عملية الصرف ارجو انى اكون اوضحت الفكرة ومنتظر آراء الاساتذة ... دمتم بخير
-
السلام عليكم موضوع بحثت عنه قديما و لم أتوصل لإجابة شافية - هذا إذا افترضنا أنه ممكن- معيار الاستعلام هل يمكن تخزينه فى جدول و نستدعيه بدالة dlookup لا أقصد قيمة المعيار بل أقصد صيغة المعيار مثلا: لو كان المعيار : >7 أو يشتمل على محددات مثل > < or and <> هل يمكن تخزين صيغة المعيار كاملة فى حقل بجدول و استدعاؤها بدالة البحث أو حتى تخزينها فى مربع تحرير و سرد أفيدونا فى هذا الموضوع أفادكم الله
-
بسم الله الرحمن الرحيم الاخوان الاعزاء في المنتدى لدي قاعدة بيانات مطلوب فيها اختيار عشوائي لموظفين تحدد القيمة من حقل نصي والمطلوب عدم التكرار في كل مرة بالمقارنة مع حقل صح او خطا المشكلة تكمن بالطريقة الصحيحة لوضع dlookup انا واضعهه في الكود ولكن اعطيتها ايقاف لان عند تنفيذها تلغي القيمة المطلوبة لعدد الموظفين في القرعة وقاعدةالبيانات المرفقة توضح ما توصلت اليه ارجو المساعدة قدر الامكان مع الشكر الجزيل مقدما test.rar