الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في إنشاء استعلام بواسطة الكود

بدأه محمد أبو عدنان في 8 فبراير 2010 · 11 رد · 955 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ..

أساتذتي الكرام تحية طيبة ...

حدثت معي مشكلة في انشاء استعلام لفرز الطلاب بواسطة الكود :

strQuery = "qryArchive"
   Set dbs = CurrentDb
  strSQL = "SELECT * " & vbCrLf & _
"FROM tblStudent " & vbCrLf & _
"WHERE (((tblStudent.[Registration Date]) Between #" & dteStart & "# And #" & dteEnd & "#)" & vbCrLf & _
"AND ((tblStudent.Registration)=" & [strRegistration] & ")" & vbCrLf & _
"AND ((tblStudent.stage)=" & [strstage] & ")" & vbCrLf & _
"AND ((tblStudent.class)=" & [Strclass] & "));"

المشكلة في آخر سطر بالكود ..

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

شاكر لكم تعاونكم وبارك الله بكم ..

أخوكم بالله أبو عدنان ..

db44.rar

تم تعديل هذه المشاركة بواسطة moh samer ali في 8 فبراير 2010 في 18:03

27169617.gif
#2

السلام عليكم ورحمة الله وبركاته

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

strSQL = "SELECT * " & vbCrLf & _
"FROM tblStudent " & vbCrLf & _
"WHERE (((tblStudent.[Registration Date]) Between #" & dteStart & "# And #" & dteEnd & "#)" & vbCrLf & _
"AND ((tblStudent.Registration)=" & [strRegistration] & ")" & vbCrLf & _
"AND ((tblStudent.stage)=" & [strstage] & ")" & vbCrLf & _
"AND ((tblStudent.class)='" & [Strclass] & "'));"

وبالتوفيق

1

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#3
koao كتب:

السلام عليكم ورحمة الله وبركاته

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

strSQL = "SELECT * " & vbCrLf & _
"FROM tblStudent " & vbCrLf & _
"WHERE (((tblStudent.[Registration Date]) Between #" & dteStart & "# And #" & dteEnd & "#)" & vbCrLf & _
"AND ((tblStudent.Registration)=" & [strRegistration] & ")" & vbCrLf & _
"AND ((tblStudent.stage)=" & [strstage] & ")" & vbCrLf & _
"AND ((tblStudent.class)='" & [Strclass] & "'));"

وبالتوفيق

وعليكم السلام ورحمة الله وبركاته ..

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

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

تقبل مزيدا من الاحترام ...+1

27169617.gif
#4

أخي العزيز خالد .. أعلم أني تعبتك معي ولكن لي سؤال أو نصيحة ..علما أنني مهتم بهذا الموضوع لأنني سأستخدم هذه الطريق دائما في تحويل بياناتي الى الاكسل :

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

مرفق صورة :

post-139265-12657953103305_thumb.png

وقد حليت الموضوع بهذه الطريقة :

If Strclass = "*" Then
    Strclass = "True"
    strQuery = "qryArchive"
    Set dbs = CurrentDb
    strSQL = "SELECT * " & vbCrLf & _
         "FROM tblStudent " & vbCrLf & _
         "WHERE (((tblStudent.[Registration Date]) Between #" & dteStart & "# And #" & dteEnd & "#)" & vbCrLf & _
         "AND ((tblStudent.Registration)=" & [strRegistration] & ")" & vbCrLf & _
         "AND ((tblStudent.stage)=" & [strstage] & ")" & vbCrLf & _
         "AND ((tblStudent.class)=" & [Strclass] & "));"  
  Else
    strQuery = "qryArchive"
    Set dbs = CurrentDb
    strSQL = "SELECT * " & vbCrLf & _
         "FROM tblStudent " & vbCrLf & _
         "WHERE (((tblStudent.[Registration Date]) Between #" & dteStart & "# And #" & dteEnd & "#)" & vbCrLf & _
         "AND ((tblStudent.Registration)=" & [strRegistration] & ")" & vbCrLf & _
         "AND ((tblStudent.stage)=" & [strstage] & ")" & vbCrLf & _
         "AND ((tblStudent.class)='" & [Strclass] & "'));"
 End If

والحمد لله الموضوع ماشي وزي الفل ولكن السؤال هل هناك حل أفضل من هذا ؟؟

مع شكري وأمتناني لك ..

تم تعديل هذه المشاركة بواسطة moh samer ali في 10 فبراير 2010 في 12:49

27169617.gif
#5

السلام عليكم ورحمة الله وبركاته

أخي الكريم .. آسف على التأخر في الرد

ولسؤالك عن رأيي .. فيجب أن نعرف أنواع البيانات .. لنحدد تعليمة الإستعلام ... فلا أريدك أن تستخدم True لجلب البيانات كلها .. من نوع رقم أو نص .. وهذا ما سبب لك مشكلة عندما إستخدمة هذه الطريقة مع نوع بيانات نصي حيث كتب في شرط الإستعلام 'True' .. والأفضل هو إستبعاد الشرط من التعليمة ... وذلك بإستخدام الكود التالي

'  If strRegistration = "3" Then strRegistration = "True"  '
'  If strstage = "*" Then strstage = "True"                '
'  If Strclass = "*" Then Strclass = "True"                '

   strQuery = "qryArchive"
   Set dbs = CurrentDb

  strSQL = "SELECT * FROM tblStudent WHERE (((tblStudent.[Registration Date]) "
  strSQL = strSQL & "Between #" & dteStart & "# And #" & dteEnd & "#) "
  If strRegistration <> "3" Then
    strSQL = strSQL & "AND ((tblStudent.Registration)=" & [strRegistration] & ") "
  End If
  If strstage <> "*" Then
    strSQL = strSQL & "AND ((tblStudent.stage)=" & [strstage] & ") "
  End If
  If Strclass <> "*" Then
    strSQL = strSQL & "AND ((tblStudent.class)='" & [Strclass] & "')"
  End If
  strSQL = strSQL & ");"

وبالتوفيق

1

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#6
koao كتب:

السلام عليكم ورحمة الله وبركاته

أخي الكريم .. آسف على التأخر في الرد

ولسؤالك عن رأيي .. فيجب أن نعرف أنواع البيانات .. لنحدد تعليمة الإستعلام ... فلا أريدك أن تستخدم True لجلب البيانات كلها .. من نوع رقم أو نص .. وهذا ما سبب لك مشكلة عندما إستخدمة هذه الطريقة مع نوع بيانات نصي حيث كتب في شرط الإستعلام 'True' .. والأفضل هو إستبعاد الشرط من التعليمة ... وذلك بإستخدام الكود التالي

'  If strRegistration = "3" Then strRegistration = "True"  '
'  If strstage = "*" Then strstage = "True"                '
'  If Strclass = "*" Then Strclass = "True"                '

   strQuery = "qryArchive"
   Set dbs = CurrentDb

  strSQL = "SELECT * FROM tblStudent WHERE (((tblStudent.[Registration Date]) "
  strSQL = strSQL & "Between #" & dteStart & "# And #" & dteEnd & "#) "
  If strRegistration <> "3" Then
    strSQL = strSQL & "AND ((tblStudent.Registration)=" & [strRegistration] & ") "
  End If
  If strstage <> "*" Then
    strSQL = strSQL & "AND ((tblStudent.stage)=" & [strstage] & ") "
  End If
  If Strclass <> "*" Then
    strSQL = strSQL & "AND ((tblStudent.class)='" & [Strclass] & "')"
  End If
  strSQL = strSQL & ");"

وبالتوفيق

وعليكم السلام ورحمة الله وبركاته ..

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

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

جزاك الله خير وبارك الله بك ..وأجرك على الله عز وجل ..

مع تمنياتي لك بدوام التقدم والنجاح ..+1

مرفق المثال بشكله النهائي للفائدة العامة ...

koao_msak.zip

تم تعديل هذه المشاركة بواسطة moh samer ali في 11 فبراير 2010 في 00:47

27169617.gif
#7

السلام عليكم ورحمة الله وبركاته

أشكرك أخي moh samer ali على دماثة خلقك .. وما قدمت أنا إلا جزء بسيط .. من ما قدمته أنت للمنتدى من مواضيع ومشاركات بناءه

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#8

بارك الله بك أخي خالد لما تقدمه لنا من بحر علمك وجودك..

مع تمنياتي لك ولجميع الأخوة بالتقدم والنجاح ..

أخوك أبو عدنان ...

27169617.gif
#9

السلام عليكم ورحمة الله وبركاته

بارك الله بكم وبجميع الأخوة الكرام في هذا المنتدى الرائع

وجزاكم الله عنا كل خير أخي خالد وأخي محمد

post-12787-12741339659298.jpg

ومامن يد إلا يد الله فوقها *** وما من ظالم إلا سيبلى بأظلم

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

#10

السلام عليكم ورحمة الله وبركاته

يعطيكم العافية اخواني واستاذي ابوعدنان

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

الله يعطيك العافية

#11

السلام عليكم ورحمة الله وبركاته

أخي الكريم hamidymom ... وأخي الكريم مشارف

أحمد الله الذي من علي بما يحوز على رضاه ثم رضاكما

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#12
مشارف كتب:

السلام عليكم ورحمة الله وبركاته

يعطيكم العافية اخواني واستاذي ابوعدنان

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

الله يعطيك العافية

اشكرك أخي العزيز محمد على مرورك الكريم ....

كما اشكر اخي العزيز محمد (مشارف) على هذا الكلام الطيب وأقول لك انما الأعمال بالنيات وان شاء الله لك الأجر بمحاولاتك ولن يقل أجرك بإذن الله عن أخي خالد ..

والحمد لله رب العالمين فقد أدخل السرور الى نفسي أخي العزيز خالد وله به الأجر ان شاء الله ..

تقبلوا تحياتي جميعا ..

27169617.gif

مواضيع مشابهة