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

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

قام بنشر

تحية طيبة

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

 

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

 

هل يمكن عمل ذلك في الآكسيس حيث أني قمت بعملها في الاكسل وهي تعمل معي ولكن لم أتمكن من تصميمها في آكسيس 

 

أرجو أن يكون الشرح واضحا

 

شكرا جزيلا لكم

search.rar

قام بنشر

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

بمعنى اخر مثلا مربع serialnum يختص بعمودserial number وهكذا باقي المربعات

والمطلوب عندما اضع معلومة في احد هذه المربعات واضغط بحث تظهر لي النتائج التي تتطابق مع هذا المربع او ان ما كتب في مربع البحث جزء منها

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

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

ارجو ان اكون قد وضحت الفكرة

قام بنشر

إنشاء عنصر تحكم ActiveX  " ListView "

  • افتح نموذج قاعدة البيانات
  • إنشاء نموذج جديد لا يعتمد على أي جدول أو استعلام ، ثم قم بحفظه بالإسم frmListView ،  و إفتح  طريقة عرض التصميم.
  • من القائمة إدراج  Insert ، أو تصميم Design ( حسب الإصدار ) ، انقر فوق عنصر تحكم ActiveX أو عنصر تحكم مخصص في الإصدار 7.0، انقر فوق عنصر التحكم ListView Microsoft في قائمة عناصر التحكم ومن ثم انقر فوق موافق.
  • من خصائص العنصر يتم تعيين خصائص عنصر التحكم ListView التالية:

الاسم: ctlListView
العرض: حسب الحاجة وتصميم النموذج
الارتفاع: حسب الحاجة وتصميم النموذج

  • قم بإنشاء وحدة نمطية و إنسخ اليها الوظيفة filllist التالية:
 Function FillList(Domain As String, LV As Object) As Boolean
      '==================================================================
      '  Purpose:   to fill a ListView control with data from a table or
      '             query
      '  Arguments: a Domain which is the name of the table or query, and
      '             a ListView control object
      '  Returns:   A Boolean value to indicate if the function was
      '             successful
      '==================================================================

      Dim db As Database, rs As Recordset
      Dim intTotCount As Integer
      Dim intCount1 As Integer, intCount2 As Integer
      Dim colNew As ColumnHeader, NewLine As ListItem

      On Error GoTo Err_Man

      ' Clear the ListView control.
      LV.ListItems.Clear
      LV.ColumnHeaders.Clear

      ' Set Variables.
      Set db = CurrentDb
      Set rs = db.OpenRecordset(Domain)

      ' Set Column Headers.
      For intCount1 = 0 To rs.Fields.Count - 1
         Set colNew = LV.ColumnHeaders.Add(, , rs(intCount1).Name)
      Next intCount1
      LV.View = 3    ' Set View property to 'Report'.

      ' Set Total Records Counter.
      rs.MoveLast
      intTotCount = rs.RecordCount
      rs.MoveFirst

      ' Loop through recordset and add Items to the control.
      For intCount1 = 1 To intTotCount
         If IsNumeric(rs(0).Value) Then
            Set NewLine = LV.ListItems.Add(, , Str(rs(0).Value))
         Else
            Set NewLine = LV.ListItems.Add(, , rs(0).Value)
         End If
         For intCount2 = 1 To rs.Fields.Count - 1
            NewLine.SubItems(intCount2) = rs(intCount2).Value
         Next intCount2
         rs.MoveNext
      Next intCount1

      Exit Function

Err_Man:
         ' Ignore Error 94 which indicates you passed a NULL value.
         If Err = 94 Then
            Resume Next
         Else
         ' Otherwise display the error message.
            MsgBox "Error: " & Err.Number & Chr(13) & _
               Chr(10) & Err.Description
         End If

      End Function
      
  • خلف الحدث OnLoad للنموذج frmListView  إنسخ التالي :

      Private Sub Form_Load()
         Dim intResult as Integer
         intResult = FillList("Employees",Me!ctlListView)
      End Sub

  • افتح النموذج في طريقة عرض النموذج ، سيقوم عنصر التحكم ListView بعرض محتويات الجدول أو الاستعلام الذي تحدده ضمن الكود " Employees " .
قام بنشر

بسم الله ما شاء الله 

كنت أعلم أن طلبي ليس مستحيلا وهو موجود بالفعل في اكسيس

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

مع العلم أن اسم قاعدة البيانات هو data وليس Employee ولكنها بالتأكد سقطت سهوا من عالم قدير مثلك 

 

بقي لدينا أستاذي القدير هو :

1. تنفيذ عملية الاستعلام من خلال عدة حقول وهي كما شرحت سابقا 

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

3. هل يمكننا ترتيب تصاعدي أو تنازلي للبيانات عند الضغط على رؤوس الأعمدة ؟؟؟؟

 

ونتابع ما نحتاج من متطلبات بحسب النتائج اللاحقة

 

ولي رجاء عندك أستاذي ابو آدم

أرجو أن يكون تنفيذك للمطلوب بشرح العملية كما شرحتها في ردك السابق ( آلية إنشاء عنصر تحكم ActiveX  " ListView " ) فهذا هو المطلوب وهو ليس أن ننتفذ المطلوب وإنما نتعلم كيف تمت العملية لأني إن عملت بيدي أفضل لي للتعلم من أن آخذ الملف جاهز بدون تعب

فلا تعطيني سمكة وإنما علمني كيف أصطاد 

 

مرفقا الملف الناتج معي بعد تنفيذ للمطلوب السابق إنشاء عنصر تحكم ActiveX  " ListView " )

شكرا جزيلا على جهودكم الطيبة

search with ListView.rar

قام بنشر

أخي العزيز أبا تميم

 

جزيت خيراً

 

محتويات الجدول أو الاستعلام الذي تحدده ضمن الكود " Employees "

 

 

وردت على سبيل المثال وليس التحديد و الحصر بالتطبيق لديك ، لأننا سنعمل بإذن الله على إستعلام لتنفيذ البحث

قام بنشر

جزاك الله خيرا أستاذي القدير أبو آدم

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

فأفضل طريق إلى التعلم هو المحاولة والعمل الجاد

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

 

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

قام بنشر

أود أن انوه هنا لمجموعة من الأمور تتعلق بالتسميات ، وحسب الاصول المريحة ، فإتباع الأصل و الأحوط ينجي صاحبة عند الالتباس ، فحين تتوحد الأسماء بلا تمييز يلتبس الأمر بين الجدول ومربع النص والحقل وغيرها ، ومن ذلك نقول ، أننا ننصح باتباع ما يلي تمثيلاً وليس قصراً وحصراً :

 

استخدام البادئة  tbl في الاسم للدلالة على الجدول tblData ، أو استخدام الاسم الافتراضي الذي يقترحه النظام

استخدام البادئة  qry في الاسم للدلالة على الاستعلام qrySearch ، أو استخدام الاسم الافتراضي الذي يقترحه النظام ، وهكذا لبقية كائنات القاعدة .

 

استخدام البادئة  str في الاسم للدلالة على حقل الجدول strCode   .

 

استخدام البادئة  txt في الاسم للدلالة على مربع النص txtCode ، أو استخدام الاسم الافتراضي الذي يقترحه النظام

استخدام البادئة  txt في الاسم للدلالة على مربع النص txtCode ، أو استخدام الاسم الافتراضي الذي يقترحه النظام

استخدام البادئة  cmb في الاسم للدلالة على مربع التحرير والسرد  cmbDevType ، أو استخدام الاسم الافتراضي الذي يقترحه النظام ، وهكذا لبقية عناصر النموذج .

 

أظن أن الفكرة وصلت دون الإكثار من الاسهاب منعاً لشبهة الإطالة

 

وللحديث والتطبيق بقية ....

قام بنشر

نتابع ...

 

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

انتقل لعرض التصميم للاستعلام

انتقل للعامود Column التالي لآخر عامود مستخدم في الاستعلام

على السطر أكتب العبارة التالية  Field :

[code]=[Forms]![search]![code] Or [Forms]![search]![code] Is Null

السطر Show يحمل خيار Check Box  أجله فارغاً – No ، وتعني إخفاء نتائج الحقل

السطر Criteria   أكتب  True  /  صواب

 

هذه العبارة تعني :

 

أظهر النتائج على شرط ، الحقل Code = القيمة الموجودة في الحقل Code من النموذج search – أو – إذا كان الحقل Code من النموذج search فارغاً فاترك الشرط لهذا الحقل

 

جرب على حقل واحد وقم بتشغيل الإستعلام ( بدون النموذج ) ووافني بالنتيجة

 

وللحديث والتطبيق بقية ....

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

شكرا أستاذي أبو آدم

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

 

وأيضا عندما أترك قيمة code فارغة يقوم بعرض جميع البيانات

 

هل هذا هو المطلوب أم أني أخطأت ؟؟؟

 

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

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

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

 

 

الضغط المزدوج على ctlListView ، في وضع التصميم للنموذج ، يظهر مربع حوار خصائص الكائن ctlListView

تظهر امامك مجموعة كبيرة من الخيارات و الخصائص ، منها FullRowSelect قم باختيار نعم

 

وللحديث بقية ....

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

طرائق البحث روعة كصاحبها جزاك الله خيرا

وقد حاولت استخدام نفس الطرق مع Listview ولكني لم أستطع فهم لغة التخاطب مع Listview ولم أتمكن من إجراء أي لغة حوار مع هذا الكائن...

 

تم حل مشكلة تحديد سجل كامل بناء على شرحكم ... جزاك الله خيرا

نتركها لكم أستاذنا ابو آدم بعد أن تتعافوا بإذن الله تعالى 

شافاك الله أستاذنا العزيز ابو آدم

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

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