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

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

قام بنشر (معدل)

الخبراء الافاضل

فى   الإصدارة 2.0 المطورة  🧮 الكاتب الذكي لدوال المجال |::| 📜 نسخة مطورة ومحدثة |::| 😊 الإصدار الثاني 2.0   للاخ الافاضل Moosak

اليكم نموذج للتعديل علية

Untitled.png.f924020559ab2732add00a91d15d5fb0.png

JO_2024.accdb

تم تعديل بواسطه jo_2010
قام بنشر
32 دقائق مضت, jo_2010 said:

فى   الإصدارة 2.0 المطورة  🧮 الكاتب الذكي لدوال المجال

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

وبالتالي عند استخدام between فسوف تعود الدالة باول سجل مطابق فقط

لذا فمن الافضل التفكير باستخدام معيار اخر

اما اذا كنت مصمم على هذا الاستخدام الغير صحيح

DLookup("[pcode]", "lab_all", "[pcode]between 2 and 6 ")

اخونا الشايب

  • Like 2
  • Thanks 1
قام بنشر
41 دقائق مضت, jo_2010 said:

Untitled.png.f924020559ab2732add00a91d15d5fb0.png

في نفس المكان أكتب :

50 and 80

مع الأخذ في الإعتبار نصيحة شايبنا الكريم @شايب 🙂 
 

  • Like 1
قام بنشر

وبناء على قول استاذى الجليل ومعلمى القدير الاستاذ @شايب 

استخدم هذه الطريقة افضل من خلال استعلام
 

SELECT * FROM TableName
WHERE FieldName BETWEEN 50 AND 80;


 

  • Like 1
  • Thanks 1
قام بنشر

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

SELECT CLng([FieldName]) AS clngFieldName, *
FROM TableName
WHERE (((CLng([FieldName])) Between CLng(50) And CLng(80)));

 

  • أفضل إجابة
قام بنشر

وممكن 

 

SELECT VAL([ID]) AS valID, *
FROM tblEmployees
WHERE VAL([ID]) BETWEEN 50 AND 80;

 

وممكن استخدام دالة CDBL لتحويل إلى رقم مزدوج (Double):

SELECT CDBL([ID]) AS cdblID, *
FROM tblEmployees
WHERE CDBL([ID]) BETWEEN 50 AND 80;

وممكن استخدام دالة CDATE للتحويل إلى تاريخ (إذا كان يمكن تفسير القيم كتواريخ)

SELECT CDATE([FieldName]) AS cdateFieldName, *
FROM TableName
WHERE CDATE([FieldName]) Between #50# And #80#;

 

قام بنشر
19 دقائق مضت, شايب said:

ماشاء الله عليك اخي محمد كفيت ووفيت 🌹

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

 

تعرف يا استاذى انا تقريبا بطلت ستخدم  DLookup الا فى اضيق الحالات كل ما اجى استخدمها افتكر كلمة استاذ @jjafferr سر قوة الاكسس فى الاستعلامات

الان تقريبا اعيد ما اريد من خلال الاستعلامات بدلا من DLookup

فعلا الاستعلامات رهيبة جدا جدا جدا جدا

  • Like 1
قام بنشر
4 دقائق مضت, ابو جودي said:

لان تقريبا اعيد ما اريد من خلال الاستعلامات بدلا من DLookup

فعلا الاستعلامات رهيبة جدا جدا جدا جدا

اتفق معك واغلب دوال التجميع يمكن الاستغناء عنها في حالات كثر باستخدام الاستعلامات

قام بنشر
55 دقائق مضت, ابو جودي said:

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

 

تعرف يا استاذى انا تقريبا بطلت ستخدم  DLookup الا فى اضيق الحالات كل ما اجى استخدمها افتكر كلمة استاذ @jjafferr سر قوة الاكسس فى الاستعلامات

الان تقريبا اعيد ما اريد من خلال الاستعلامات بدلا من DLookup

فعلا الاستعلامات رهيبة جدا جدا جدا جدا

 

5 ساعات مضت, ابو جودي said:

وممكن 

 

SELECT VAL([ID]) AS valID, *
FROM tblEmployees
WHERE VAL([ID]) BETWEEN 50 AND 80;

 

وممكن استخدام دالة CDBL لتحويل إلى رقم مزدوج (Double):

SELECT CDBL([ID]) AS cdblID, *
FROM tblEmployees
WHERE CDBL([ID]) BETWEEN 50 AND 80;

وممكن استخدام دالة CDATE للتحويل إلى تاريخ (إذا كان يمكن تفسير القيم كتواريخ)

SELECT CDATE([FieldName]) AS cdateFieldName, *
FROM TableName
WHERE CDATE([FieldName]) Between #50# And #80#;

 

حبيبنا @ابو جودي شكرا لك على هذا التنبيه ..  🙂🌹

ولزيادة الإفادة :

كيف تستخدم جمل SQL كمصدر لحقل غير منظم في النموذج ؟ ..... أو كحقل محسوب في الاستعلام ؟

أليست دوال DLookup وأخواتها عبارة عن جمل SQL مبسطة على شكل Function في الواقع ؟

قام بنشر
21 دقائق مضت, Moosak said:

أليست دوال DLookup وأخواتها عبارة عن جمل SQL مبسطة على شكل Function في الواقع ؟

مع ان السؤال للاستاذ محمد لكن نعم هي استعلام

ولها استخداماتها كما اشرتم

منذ ساعه, شايب said:

اتفق معك واغلب دوال التجميع يمكن الاستغناء عنها في حالات كثر باستخدام الاستعلامات

وهنا اقصد يمكن الاستغناء عنها في الاستعلامات لما تسببه من تاخير في تنفيذ الاستعلام وبالذات عندما يكون لدينا عدد كبير من البيانات واستخدام اكثر من استعلام يمكن الاستغناء عن بعض دوال تجميع المجال

المايك للاستاذ محمد للاجابة عن السؤال

  • Like 1
  • Thanks 1
قام بنشر (معدل)

خالص الشكر لكل الخبراء المبدعين على هذة المعلومات الجديدة بالنسبة لى والمفيدة ايضا شكرا لكم

ولكن من باب العلم بالشى كيف اكتب الدالة من خلال البرنامج المرفق الخاص بالمعلم الجليل Moosak

تم تعديل بواسطه jo_2010
قام بنشر
منذ ساعه, شايب said:

المايك للاستاذ محمد للاجابة عن السؤال

 

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

 

1 ساعه مضت, Moosak said:

أليست دوال DLookup وأخواتها عبارة عن جمل SQL مبسطة على شكل Function في الواقع ؟

اممم تصدق مش عارف اقول اه واللا لاء بس بعد الشرح ده انت قول الاجابة

دوال المجـــــــ(Domain Functions)ـــــــــال جزءا من مجموعة من الدوال التي تستخدم للتلاعب بالبيانات في قاعدة البيانات وهى ليست استعلامات

هذه الدوال تعتبر جزءا من استعلامات SQL (Structured Query Language) التي تستخدم لاسترجاع وتحديث البيانات

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

على سبيل المثال : - 

يمكن استخدام دالة المجال   Dlookup  للبحث عن قيمة في حقل محدد بناء على شرط معين او عدة شروط

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

  • Dlookup   >>---->   للبحث عن قيمة في حقل معين
  •  DCount   >>---->   لحساب عدد السجلات التي تستوفي شرط محدد
  • DSum      >>---->  لحساب مجموع قيم حقل معين بناءً على شرط

يبقى الاجابة ايه :eek2:

  • Like 1
قام بنشر
15 ساعات مضت, Moosak said:

كيف تستخدم جمل SQL كمصدر لحقل غير منظم في النموذج ؟ ..... أو كحقل محسوب في الاستعلام ؟

 

طيب يا عم @ابو جودي  الجميل .. 🙂  .. السؤال الأهم كان هو ذا 😁

إجابتك على هذا السؤال أهم من السؤال السابق 😄🌼

قام بنشر
1 ساعه مضت, Moosak said:

كيف تستخدم جمل SQL كمصدر لحقل غير منظم في النموذج ؟ ..... أو كحقل محسوب في الاستعلام ؟

السؤال ايضا لابي جودي ولكن الاخ شايب ملقوف بعض الشيء

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

اقتباس

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

الخلاصة دوال D تسهل العمل وتحقق المطلوب باسهل الطرق وسواء كانت استعلام او جزء من استعلام فان الافضل استخدامها يكون وفقا لمتطلبات العمل

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

مرفق صورة لاستخدام ثلاث نماذج فرعية مبني كل نموذج منهم على استعلام بينما دالة DSUM تغني عنها

اخيرا لا ننتقد عمل اي من الزملاء ولكن نحاول تصحيح بعض المفاهيم وتبقى وجهة نظر غير ملزمة

الشايب

 

لقطة شاشة 2024-01-07 104150.png

  • Thanks 1
قام بنشر
2 ساعات مضت, شايب said:

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

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

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

منظم : من التنظيم والتنسيق وتنطق بضم الميم وفتح النون وتشديد الظاء مع الفتح

منضم : من الانضمام والارتباط وتنطق  بضم الميم وتسكين النون  وفتح الضاد بدون تشديد

والاخيرة هذه هي التي نعبر بها عن الحقول والنماذج ان كانت منضمة اي مرتبطة ام لا

  • Haha 1
قام بنشر
16 دقائق مضت, ابوخليل said:

منضم : من الانضمام والارتباط وتنطق  بضم الميم وتسكين النون  وفتح الضاد بدون تشديد

نعم احسنت وغلطة الشايب بعشرة 🌹

  • Haha 1
قام بنشر
5 ساعات مضت, Moosak said:

كيف تستخدم جمل SQL كمصدر لحقل غير منظم في النموذج ؟

على طريقة المعقدين امثالى اعمل مديول
ضع الوظيفة الاتية

Enum TypeWHERE
    asString
    asDate
    asNumeric
End Enum

Dim rsArryFieldName As Variant

Function RetrieveData(ByRef tableName As String, _
                 ByRef fieldName As String, _
                 Optional varMyWHERE As Variant = "", _
                 Optional TypeMyWHERE As TypeWHERE = TypeWHERE.asString, _
                 Optional LinkCriteria As String = "") As Variant
    ' This function retrieves data from the specified table and field based on the provided criteria.

    ' Translate the criteria type to the appropriate SQL syntax
    Select Case TypeMyWHERE
        Case TypeWHERE.asDate
            LinkCriteria = "[" & fieldName & "] = #" & varMyWHERE & "#"         '| Date
        Case TypeWHERE.asNumeric
            LinkCriteria = "[" & fieldName & "] = " & varMyWHERE                '| Numeric
        Case TypeWHERE.asString
            LinkCriteria = "[" & fieldName & "] = '" & varMyWHERE & "'"         '| String
    End Select
    
    ' Declare a DAO Recordset variable
    Dim rs As DAO.Recordset
    ' Open a recordset based on the provided table and field names
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & tableName & " WHERE " & LinkCriteria)

    ' Check if the recordset is not empty
    If Not rs.EOF Then
        ' Create an array to hold values of all fields in the record
        Dim fieldValues() As Variant
        ReDim fieldValues(1 To rs.fields.Count)
        Dim i As Integer
        ' Populate the array with values from all fields
        For i = 1 To rs.fields.Count
            fieldValues(i) = rs.fields(i - 1).Value
        Next i
        
        ' Return the array containing values of all fields
        RetrieveData = fieldValues
    Else
        ' Return an empty string if no matching record is found
        RetrieveData = ""
    End If
    
    ' Close the recordset
    rs.Close
    Set rs = Nothing
End Function

 
وشوف التجربة من خلال هذا الروتين
 

Sub ExampleUsage()
    ' Set the table name and field name
    Dim tableName As String
    Dim fieldName As String
    Dim criteriaValue As Variant
    Dim criteriaType As TypeWHERE
    
    ' Set default values
    tableName = "YourTableName"            ' | <<   Set the table name
    fieldName = "YourFieldName"            ' | <<   Set the field name
    criteriaValue = "YourCriteriaValue"    ' | <<   Set Your Criteria Value
    criteriaType = TypeWHERE.asString      ' | <<   Set the type of criteria and You can change it based on the case type of criteria
    
    ' Call the RetrieveData procedure
    Dim result As Variant
    result = RetrieveData(tableName, fieldName, criteriaValue, criteriaType)
    
    ' Display values of all fields in the array
    If IsArray(result) Then
        Dim i As Integer
        For i = 1 To UBound(result)
            Debug.Print i & ": " & result(i)
        Next i
        ' Display the value of field number 3 (For example, EmployeeName)
        Debug.Print result(3)
    Else
        ' If no matching record is found, show an appropriate message
        MsgBox "No matching record found for the specified criteria."
    End If
End Sub


وعيش مع الكود ومع بنات افكارك :wink2:

قام بنشر
3 ساعات مضت, ابو جودي said:

على طريقة المعقدين امثالى اعمل مديول

شكرا لك يا عمي المعقد 😅✋🏻

يعني في كل مكان أريد فيه استجلاب قيمة من الجداول ( في الحقول الغير منضمة) كبديل لدالة DSum مثلا يحتاج أعمل له دالة خاصة بيه بالشكل ذا !!!!؟؟؟

ليه كل التعقيد ده يا عم الناس 😅🌼

  • Haha 1
قام بنشر

لو لاحظت انا كتبت الدالة الاولى وحتكون ثابته على طول لاى جدول ولاى معايير

الدالة التانية بس للاستدعاء كل ما عليك تكتب اسم الجدول والحقل والمعيار وتختار ان كان رقمى او نصى او تاريخ

واللذيذ ان فى مصفوفة بتجيب لك كل الحقول يعنى تعرف متغير result ويكون مصدر بيانات الحقل result(i) 

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

وفى الاخير انت الان معاك اكثر من طريقة

 


 

  • Like 1
قام بنشر
21 دقائق مضت, ابو جودي said:

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

وفى الاخير انت الان معاك اكثر من طريقة

شكرا لك عمي @ابو جودي على الفكرة والطرح .. 🙂 

أنا فعلا عندي معاناة في السرعة حتى لما أعمل دالة وأدخل فيها عائلة ال D  .. فبجرب نفس الدوال بس بال Recordset  وأشوف الفرق ..

في 6‏/1‏/2024 at 12:33, Moosak said:

في نفس المكان أكتب :

50 and 80

مع الأخذ في الإعتبار نصيحة شايبنا الكريم @شايب 🙂 
 

على فكرة أستاذ @jo_2010 الإجابة المباشرة على سؤالك كانت في هذا الرد 😅

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