اذهب الي المحتوي
أوفيسنا

امثلة بسيطة للدالة Dlookup


الردود الموصى بها

امثلة بسيطة ارجوا ان تنفعنا جميعا

 

صيغة الدالة DLookup

DLookup(expr, domain [, criteria] )‎

expr( مطلوب) اسم الحقل
domain( مطلوبة) اسم الجدول/الاستعلام
criteria( اختيارية) الشروط

دا مثال بسيط
:
عازوين نعرف اسم الصنف الذي كوده 15 في جدول الاصناف
اسم الجدول : items
اسم الحقل الذي يحمل أرقام الاصناف : code_items
اسم الحقل الذي يحمل أسماء الاصناف: items_Name

 

كود:

MsgBox DLookup("[items_Name]", "items", "code_items=15")


 

ممكن ناخد كود الصنف من مربع نص موجود في نموذج بدلاً من التصريح في الدالة عن كود الصنف
لنفترض مثلا  أن مربع نص موجودٌ في النموذج باسم txtItemsCode

 

 

كود:

MsgBox DLookup("[items_Name]", "items", "code_items=" & Me.txtItemsCode)


 

ممكن ناخد  قيمة كود الصنف من نموذج آخر  بس بشرط أن يكون مفتوحاً ، فلو كان

txtItemsCode

موجود في نموذج آخر

باسمfrm1

فإن الكود سيأخذ الشكل التالي

 

:

كود:

MsgBox DLookup("[items_Name]", "items", "code_items=" & Forms!frm1!txtItemsCode)

 


 

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

 

نوع بياناته (رقم) ، فلو كان نوع بياناته (نص) سيكون الكود بالشكل التالي :code_items

كود:

MsgBox DLookup("[items_Name]", "items", "code_items='" & Me.txtItemsCode & "'")


 

طب لو كان نوع بياناته (وقت/تاريخ) الكود هيبقى كدا

كود:


MsgBox DLookup("[items_Name]", "items", "code_items=#" & Me.txtItemsCode & "#")


 

وشكر الله لكم جميعا

  • Like 10
  • Thanks 1
رابط هذا التعليق
شارك

مشكور على الشرح الجميل ده علما بأن الدالة دي مدوخاني من الصبح :)

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

مش زي ما حضرتك ادرجت في المثال الكود 15 فقط

  • Like 2
رابط هذا التعليق
شارك

مشكور على الشرح الجميل ده علما بأن الدالة دي مدوخاني من الصبح :)

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

مش زي ما حضرتك ادرجت في المثال الكود 15 فقط

MsgBox DLookup("[items_Name]", "items", "code_items=" & Me.txtItemsCode)
  • Like 3
رابط هذا التعليق
شارك

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

أرجو المساعدة .....

 

 

وشكرا جزيلا أخي على الموضوع 

رابط هذا التعليق
شارك

امثلة بسيطة ارجوا ان تنفعنا جميعا

 

صيغة الدالة DLookup

DLookup(expr, domain [, criteria] )‎

expr( مطلوب) اسم الحقل

 

 

اضافة بسيطة هنا :

expr  هو تعبير اي ممكن اسم حقل او اي تعبير مقبول مثلا  [qty]*[unitprice]  وهنا ميزة اضافية وكل هذا ينطبق على جميع دوال المجال ! dsum,dcount,dfirst !

 

مشكورين

  • Like 4
رابط هذا التعليق
شارك

  • 2 weeks later...

والدالة لأكثر من شرط ، وبطريقة سهلة:

كل نوع من انواع الحقول له طريقة معينة للتعامل معه في الكود ، وهذا يجعل كتابة كود بأكثر من شرط ، صعب نوعا ما ،

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

ثم نجمع الاسطر في سطر واحد ، وهذا السطر يكون مجموع الشروط :

        myCriteria = "[detach]='موظف'"
        myCriteria = myCriteria & " Or [iDate]=#29-05-2015#"
        myCriteria = myCriteria & " Or [Payment_Month]=#" & Me.txtMonth & "#"
        myCriteria = myCriteria & " Or [EmployeeID]=" & Me.EmployeeID
        'myCriteria = myCriteria & " Or [ID]=12"
        a = DLookup("[myID]", "tbl_Employees", myCriteria)
          
او
          
        myCriteria_1 = "[detach]='موظف'"
        myCriteria_2 = " Or [iDate]=#29-05-2015#"
        myCriteria_3 = " Or [Payment_Month]=#" & Me.txtMonth & "#"
        myCriteria_4 = " Or [EmployeeID]=" & Me.EmployeeID
        myCriteria_5 = " Or [ID]=12"
        myCriteria   = myCriteria_1 & myCriteria_2 & myCriteria_3 & myCriteria_4 & myCriteria_5
        a = DLookup("[myID]", "tbl_Employees", myCriteria)
          
          
والشرح

    
    'في  الاسطر، ممكن استعمال والخلط بين
    'Or او And
    
    'كما يمكن استعمال اي سطر، و عدم استعمال اسطر اخرى، اي يمكن الخلط في استعمال الاسطر
          
          
          
    'للمتغيرات الثابته
    'نص
    myWhere = "[detach]='موظف'"
    myWhere = myWhere & " Or [ID]=12"               'رقم
    myWhere = myWhere & " Or [iDate]=#29-05-2015#"  'تاريخ
    
    'للمتغيرات
    myWhere = myWhere & " Or [Employee_Name]='" & Me.Employee_Name & "'"  'نص
    myWhere = myWhere & " Or [EmployeeID]=" & Me.EmployeeID               'رقم
    myWhere = myWhere & " Or [Payment_Month]=#" & Me.txtMonth & "#"     'تاريخ
    
    a = DLookup("[myID]", "tbl_Employees", myWhere)
      

جعفر

تم تعديل بواسطه jjafferr
تم أضافة للشرح
  • Like 11
رابط هذا التعليق
شارك

  • 3 years later...

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

عندي مشكلة وارجو المساعدة اقوم بعمل استعلام انشاء جدول ويقوم علي هذا الجدول عمليات متتالية اريد في حالة عدم انشاء الجدول تعود لي رسالة بأن الجدول لم يتم انشاؤه بعد وشكرا

رابط هذا التعليق
شارك

في ٢٨‏/٥‏/٢٠١٥ at 23:19, jjafferr said:

والدالة لأكثر من شرط ، وبطريقة سهلة:


        myCriteria = "[detach]='موظف'"
        myCriteria = myCriteria & " Or [detach]='منتدب'"
        myCriteria = myCriteria & " Or [Payment_Month]=#" & Me.txtMonth & "#"
        myCriteria = myCriteria & " Or [EmployeeID]=" & Me.EmployeeID
        myCriteria = myCriteria & " Or [ID]=12"
        a = DLookup("[myID]", "tbl_Employees", myCriteria)

جعفر

تم تعديل May 28, 201

السلام عليكم

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

رابط هذا التعليق
شارك

  • 1 year later...
في ٢٨‏/٥‏/٢٠١٥ at 23:19, jjafferr said:

والدالة لأكثر من شرط ، وبطريقة سهلة:


        myCriteria = "[detach]='موظف'"
        myCriteria = myCriteria & " Or [detach]='منتدب'"
        myCriteria = myCriteria & " Or [Payment_Month]=#" & Me.txtMonth & "#"
        myCriteria = myCriteria & " Or [EmployeeID]=" & Me.EmployeeID
        myCriteria = myCriteria & " Or [ID]=12"
        a = DLookup("[myID]", "tbl_Employees", myCriteria)

جعفر

للافاده  استاذي jjafferr

كيف باتكون اذا هي في الاستعلام

رابط هذا التعليق
شارك

جزاك الله خيرا استاذ سيد اخى مارد

تقبل تحياتى

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

اريد المزيد حتى نتعلم منك بارك الله فيكم

في ٢٨‏/٥‏/٢٠١٥ at 22:19, jjafferr said:

والدالة لأكثر من شرط ، وبطريقة سهلة:


        myCriteria = "[detach]='موظف'"
        myCriteria = myCriteria & " Or [detach]='منتدب'"
        myCriteria = myCriteria & " Or [Payment_Month]=#" & Me.txtMonth & "#"
        myCriteria = myCriteria & " Or [EmployeeID]=" & Me.EmployeeID
        myCriteria = myCriteria & " Or [ID]=12"
        a = DLookup("[myID]", "tbl_Employees", myCriteria)

جعفر

 

جزاك الله خيرا استاذى جعفر واستفدت اكتر لما استخدمت الكود مع الداله اسبليت لما رايتها بمرفق للاستاذ عبداللطيف سلوم عن طريق تعديل ابا جودى له واشار اليك بها

وقمت باستخدامها مع بقيه دوال المجاميع واستخدمتها ايضا بجمع الحقول عن طريق Sum فقد اختصرت لى طرق كثيره لا املك الا انا اقول لك بارك الله فيك وجزاك الله كل خير ورزقك الفردوس الاعلى وجميع من تحب

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

كنت اكتب ولاقيت استاذى العزيز جعفر كتب رده

جزاكم الله خيرا وننتظر المزيد من الشروحات اساتذتى الافاضل بارك الله فيكم

طبتم واهتديتم

 

  • Like 1
رابط هذا التعليق
شارك

 

في الكثير من مواضيعي في الكود ، استخدم متغير اسمه mySQL مثلا ، حتى اعمل استعلام عن طريق الكود ، هكذا مثلا ، فلاحظ آخر سطر استعمله ،

السبب اللي استعمل فيه هذا المتغير بهذه الطريقة ، حتى يكون لكل جزء من الكود السطر الخاص به (سهل التعامل مع كل سطر بطريقة منفصلة) ، وفي النهاية يتم جمعهم في الكود للخروج بالمتغير بصورته النهائية :

    mySQL = "SELECT TOP " & A & " sort_seq, Desc, IDPME, DueDate, SelectTo604, 1 AS Countr, iPage"
    mySQL = mySQL & " FROM ( "
    mySQL = mySQL & "SELECT 0 as sort_seq, Desc, IDPME, DueDate, SelectTo604, 1 AS Countr, iPage"
    mySQL = mySQL & " From tblPME"
    mySQL = mySQL & " WHERE SelectTo604 = True"
    mySQL = mySQL & " union"
    mySQL = mySQL & " Select id, null, null, null, null, 1 AS Countr, null"
    mySQL = mySQL & " From tblPME"
    mySQL = mySQL & " )  AS X"
    Debug.Print mySQL

آخر سطر معناه ، اكتب لي نتيجة المتغير mySQL ، والنتيجة ستكون بالبيانات ، فمثلا نتيجة هذه الاسطر اعلاه هي:

SELECT TOP 33 sort_seq, Desc, IDPME, DueDate, SelectTo604, 1 AS Countr, iPage FROM ( SELECT 0 as sort_seq, Desc, IDPME, DueDate, SelectTo604, 1 AS Countr, iPage From tblPME WHERE SelectTo604 = True union Select id, null, null, null, null, 1 AS Countr, null From tblPME )  AS X

 

 

نفس الشيء ممكن نعمله في الكود اعلاه ، ممكن نضيف السطر الاخير هنا ايضا :

        myCriteria = "[detach]='موظف'"
        myCriteria = myCriteria & " Or [detach]='منتدب'"
        myCriteria = myCriteria & " Or [Payment_Month]=#" & Me.txtMonth & "#"
        myCriteria = myCriteria & " Or [EmployeeID]=" & Me.EmployeeID
        myCriteria = myCriteria & " Or [ID]=12"
        debug.print myCriteria

        

ولما يعطيك الطريقة الصحيحة ، تقدر تنسخها الى امر Dlookup ، في الاستعلام 🙂

 

آه ، وين تنكتب هذه العيارة ، هنا :

image.png.16d2504220ba1121415c3c70d156026a.png

 

 

 

19 دقائق مضت, أحمد الفلاحجى said:

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

اولا الجواب الاوسع ، انه ما ممكن ، وخصوصا انك لما تشوف شرح يفتقد لمثال واقعي علشان تفهمه وتطبق عليه ، لذلك ، تابع الاجابات ، ومنها تفهم اكثر ، بطرق مقطعة ، ولكن تثبت في الدماغ 🙂

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

 

 

جعفر

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

جزاك الله خيرا ومنك نستزيد ونتعلم اخى واستاذى العزيز

انا بالفعل بحاول اشترك فى اجابات السائلين لاننى انا المستفيد لانى لما بشوف السؤال وبحاول وببحث بلاقى معلومات كتير وطرق اكتر وساعات معلومات غير الموضوع بس ظهرت بنتائج البحث وعنوان الموضوع شدنى بشوفه للاستفاده حتى لو مش محتاجه حاليا

انا فاتح الموضوع اللذى اشرت اليه ده وموضع اخر لاستاذنا ابو ادم ومواضيع استاذنا ابوخليل جزاه الله خيرا وضعها بالمشاركه المثبته

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

تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق استاذى العزيز

طبتم واهتديتم

رابط هذا التعليق
شارك

في ٤‏/٥‏/٢٠١٥ at 11:54, jjafferr said:

 

لذلك ، فانا هنا اعطيك احد البدائل (والتي لا يعرفها الكثير ، لأنها تعمل على الاكسس 2003 فما فوق) ،

فالكود التالي ، يقوم بزيارة/استعلام الجدول عن طريق DLookup مرة واحدة ، ويأخذ 10 بيانات مرة واحدة ، فلذا يمكن ان يستبدل كودك اعلاه:


    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)

جعفر

ده الكود الاكثر من رائع اللى استخدمته على DLookup كما فى الشرح وعلى DLookup وبداخله Sum للحقول وعلى Dlast جزاك الله خيرا على هذا الكود اخى جعفر وفعلا بالتعلم والمعرفه الصحيحه يمكن تطويع اى كود وباى شكل ليلبى الحاجه بايسر وانفع واقل جهد وعبء على البرنامج وعلى التعديلات والتحديثات اللتى تطرأ مستقبلا على فكره البرنامج

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

طبتم واهتديتم

رابط هذا التعليق
شارك

  • 1 year later...
  • 5 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information