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

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

قام بنشر

ارغب في عمل نموذج به زر ومربع نص عند ادخال الرقم في مربع نص وليكن 5 والضغط على الزر يقوم بعرض أعلي 5 مناديب في قسم المبيعات من حيث مبلغ البيع وعند كتابة مثلا رقم 3 يتم اظهار اعلي ثلاثة وهكذا اي ان جملة select top تكون مرنة حسب  ما يكتب في مربع النص 

بإستخدام جملة select top x  كما هو موضح في الملف المرفق

select top.accdbFetching info...

قام بنشر

السلام عليكم 

ومشاركة مع استاذى ومعلمى @دروب مبرمج :fff:

لانى كنت أفكر فى الحل بأبسط الطرق

قمت باستخدام دوال تحويل البيانات لان الحقل المراد التعامل معه حقل نصى ولاننا مستقبلا نريد التعامل مع القيم الرقمية داخل الحقل النصى Sales قمت بعمل استعلام بسيط لتحويل نوع البيانات من نصية الى رقمية من خلال الدالة 

CLng([sales])

فيكون بناء الاستعلام كالاتى 

SELECT sales.dname, CLng([sales]) AS FldSales FROM sales;

 

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

Dim strSQL As String

الاعلان عن متغير نصى

If IsNull(txtXTop) Or Len(txtXTop) = 0 Then

اى ان كان مربع النص txtXTop طول السلسلة النصيه له = 0 اى انه فارغ بدون اى قيم
فى هذه الحالة سوف اقوم باسناد جملة الاستعلام البسيط مصدر البيانات الان الى المتغير النصى strSQL

strSQL = "SELECT sales.dname, CLng([sales]) AS FldSales FROM sales"

اما اذا كان مربع النص txtXTop  طول السلسلة النصيه له > 0 اى انه يحتوى على قيم 
قى هذه الحالة سوف اقوم باسناد جملة الاستعلام الاتية الى المتغير ولكن لان جملة الاستعلام عبارة عن سلسلة نصية سوف اقوم باستخدام دوال تحويل البيانات مرة أخرى ولكن فى هذه المرة اريد تحويل الرقم من مربع النص الى سلسلة نصية لان مربع النص الان هو المتغير الذى يمرر قيمة ال Top لاستكمال صياغة جملة SQL  دوى ادنى مشاكل من خلال 

CStr(txtXTop)

 

قتكون الجملة التى سوق يتم اسنادها بهذا الشكل

"SELECT TOP " & CStr(txtXTop) & " * FROM qryData ORDER BY FldSales DESC;"

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

Me.RecordSource = strSQL

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

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

واخيرا المرفق 

 

 

select ( X ) Top.accdbFetching info...

  • Like 3
  • Thanks 1
قام بنشر
  في 15‏/9‏/2023 at 13:30, دروب مبرمج said:

تفضل هذا التعديل

 

Expand  

اخي الكريم شكرا جزيلا على مجهودك وماقصرت الله يعطيكم العافية ولكني تلخبط وماعرفت كيف اعطيت قيمة مربع النص setNo إلى setTop حتى تظهر بعد ذلك في الاستعلام NewQueryimage.png.bf6dd2b5188a3d0c256e26a75bb9dcd5.png

  في 15‏/9‏/2023 at 14:27, ابو جودي said:

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

 
Expand  

بارك الله فيك طريقة ممتازة وجميلة واستفسر انني اريد عرض النتائج في تقرير كيف اعطي التقرير جملة ال sql لينفذها  مثل طريقة اعطائها للنموذج لينفذها 

Me.RecordSource = strSQL
قام بنشر

اتفضل يا سيدى :fff:

ولكن وجب التنويه تم تغيير نوع الحقل sales من نصى الى رقمى فى مرفق استاذى الجليل ومعلمى الاستاذ @دروب مبرمج

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

 

select ( X ) Top (1).accdbFetching info...

قام بنشر
  في 15‏/9‏/2023 at 16:11, ابو جودي said:

اتفضل يا سيدى :fff:

ولكن وجب التنويه تم تغيير نوع الحقل sales من نصى الى رقمى فى مرفق استاذى الجليل ومعلمى الاستاذ @دروب مبرمج

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

 

Expand  

شكرا جزيلا حفظك الله وجزاك الله خيرا في ميزان حسناتك

  • Thanks 1
قام بنشر

اعتذر نسيت
بالنسبة لسؤال 

  في 15‏/9‏/2023 at 14:51, mohamedab557 said:

لكني تلخبط وماعرفت كيف اعطيت قيمة مربع النص setNo إلى setTop حتى تظهر بعد ذلك في الاستعلام NewQuery

Expand  

بعد اذن اخى الحبيب ومعلمى القدير الاستاذ @دروب مبرمج :fff: 

شوف يا استاذ @mohamedab557  وركز معايا 

استاذى الجليل قام بعمل وحدو نمطية لعمل روتين عام اسم هذا الروتين العام هو NewList ولاحظ معى الاتى هناك بين قوسان متغير تم الاعلان هنا باسم SetTop وهو رقم

طيب الشكل كاملا لهذا الروتين

Function NewList(SetTop As Integer) 

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

Function NewList( 0 or 1 or 2 or ... or ....)

نفهم اذن ان ما بين الاقواس هو متغير رقمى اسند انا اليه القيمة التى اريدها حسب متطلباتى :yes:وبما انك تريد ان تكون قيمة ال Top  متغيره وتضعها انت من النموذج من واقع مربع النص فيتم استدعاء الوظيقة Function NewList بالشكل التالى 
 

NewList(Me.SetNo)

وان اعجبت بأفكار استاذى الجليل ومعلمى القدير @دروب مبرمج :fff: كما أعجبت أنا بها أكثر من فكرتى انتظر منى تعديلا طفيف جدا جدا جدا بعد إذن استاذى طبعا

  في 15‏/9‏/2023 at 16:31, Eng.Qassim said:

مشتاقون لافكارك الجميلة استاذ @ابو جودي

Expand  

العفو منكم استاذى الجليل :fff:

والله اشتجنا :wink2::wub:

  • Like 1
قام بنشر
  في 15‏/9‏/2023 at 16:39, ابو جودي said:

وان اعجبت بأفكار استاذى الجليل ومعلمى القدير @دروب مبرمج :fff: كما أعجبت أنا بها أكثر من فكرتى انتظر منى تعديلا طفيف جدا جدا جدا بعد إذن استاذى طبعا

  في 15‏/9‏/2023 at 16:31, Eng.Qassim said:
Expand  

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

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

فليا بكل ما تعنيه حروفي تعلمت منك طيلة السنوات الماضية و لم اكن عضوا في المنتدى بفضلكم تحولت من زائر الى عضو

  في 15‏/9‏/2023 at 14:27, ابو جودي said:

قمت باستخدام دوال تحويل البيانات لان الحقل المراد التعامل معه حقل نصى ولاننا مستقبلا نريد التعامل مع القيم الرقمية داخل الحقل النصى Sales قمت بعمل استعلام بسيط لتحويل نوع البيانات من نصية الى رقمية من خلال الدالة 

CLng([sales])

فيكون بناء الاستعلام كالاتى 

SELECT sales.dname, CLng([sales]) AS FldSales FROM sales;

 

 

Expand  

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

CLng([sales])

لأول مرة اراها رغم دراستي المستفيضة في جملة SQL

 

قام بنشر
  في 15‏/9‏/2023 at 14:51, mohamedab557 said:

اخي الكريم شكرا جزيلا على مجهودك وماقصرت الله يعطيكم العافية ولكني تلخبط وماعرفت كيف اعطيت قيمة مربع النص setNo إلى setTop حتى تظهر بعد ذلك في الاستعلام NewQuery

Expand  

تفضل هذا الكود بإختصار لإنشاء استعلام حسب رغبتك

Dim qdf As QueryDef, Query As Variant, SetTop As Integer

' المعطيات الاساسية لبناء جملة الاستعلام
SetTop = 2
Query = "SELECT TOP " & SetTop & " sales, dname, * FROM sales ORDER BY sales DESC"

' حذف الاستعلام السابق لإنشاء استعلام جديد
DoCmd.DeleteObject acQuery, "NewQuery"

' لإنشاء استعلام جديد حسب المعطيات اعلاه
Set qdf = CurrentDb.CreateQueryDef("NewQuery", Query)

qdf.Close
Set qdf = Nothing

 

قام بنشر
  في 15‏/9‏/2023 at 16:39, ابو جودي said:

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

Function NewList( 0 or 1 or 2 or ... or ....)

نفهم اذن ان ما بين الاقواس هو متغير رقمى اسند انا اليه القيمة التى اريدها حسب متطلباتى :yes:وبما انك تريد ان تكون قيمة ال Top  متغيره وتضعها انت من النموذج من واقع مربع النص فيتم استدعاء الوظيقة Function NewList بالشكل التالى 

Expand  

ماشاء الله شرح ممتاز فوق الوصف شكرا جزيلا علي مجهوداتك في ميزان حسناتك بإذن الله

  في 15‏/9‏/2023 at 17:23, دروب مبرمج said:

تفضل هذا الكود بإختصار لإنشاء استعلام حسب رغبتك

Expand  

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

قام بنشر
  في 15‏/9‏/2023 at 17:16, دروب مبرمج said:

فما أنا لا طالب

Expand  

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

  في 15‏/9‏/2023 at 17:16, دروب مبرمج said:

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

CLng([sales])

لأول مرة اراها رغم دراستي المستفيضة في جملة SQL

Expand  

هههههههههه وانا كمان :biggrin:

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

 

  في 15‏/9‏/2023 at 17:42, mohamedab557 said:

ماشاء الله شرح ممتاز فوق الوصف شكرا جزيلا علي مجهوداتك في ميزان حسناتك بإذن الله

Expand  

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

 

وأخيرا المرفق ببعض التعديلات الطفيفة جدا جدا جدا على درب استاذى الجليل @دروب مبرمج :fff:دون المساس بالتصميم أو تغير شئ

اتفضل  :fff:

 

select top (2).accdbFetching info...

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