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

ال Query لا تقبل البراميتر

مغلق
بدأه c_vita في 19 أغسطس 2007 · 6 رد · 637 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لا ادرى ان كان فى خطأ فى الكود التالى ارجو التوضيح حيث ان رسالة خطأ مفادها ان البراميتر غير موجود

with ADOQuery1 do
case RadioGroup1.ItemIndex of
0:begin
   Close;
   SQL.Clear;
   SQL.Add('SELECT * FROM ADOTable1 WHERE date between :d1 and :d2');
   Prepared;
   Parameters.ParamByName('d1').Value := DateTimePicker1.Date;
   Parameters.ParamByName('d2').Value := DateTimePicker2.Date;
   Open;
 end;
1:begin
   Close;
   SQL.Clear;
   SQL.Add('SELECT * FROM ADOTable1 WHERE doc_sub = :P1');
   Prepared;
   Parameters.ParamByName('P1').Value := DBLookupComboBox1.Text;
   Open;
 end;

end;// end case
#2
SQL.Add('SELECT * FROM ADOTable1 WHERE date between :d1 and :d2');

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

حاول تغيير اسم الحقل الى شيئ اخر و إعد المحاولة

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#3

السلام عليكم

مرحبا اخ وائل كيف الحال اسال الله لك العافية

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

adoquairy1: parameter 'd1' not found

#4

اهلا بك اخي الكريم:)

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

إيضا يجب ان تكون نوع البارميتر هو Date او Datetime و ذلك من ال Parameters لل Query او تقوم بذلك بالكود.

	  ADOQuery1 .Parameters.ParamByName('d1').DataType:= ftDate;

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#5

السلام عليكم

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

جزاك الله خيرا سلفا :rolleyes:

AdoQuiry.rar

#6

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

لاحظ مثلا هذا الكود

  SQL.Add('SELECT * FROM ADOTable2 WHERE dep_nam =:dep');

هنا انت قمت بوضع اسم Adotable2 و نحن نستعلم من الجدول Departments الموجود في قاعدة البيانات, و يجب ان يكون

   SQL.Add('SELECT * FROM Departments WHERE dep_nam =:dep');

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

موفق اخي الكريم:)

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#7

السلام عليكم

غفر الله لك اخى وائل وبارك لك فيما علمك

هذا الموضوع مغلق.

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