ربط combobox
#1
السلام عليكم اخواني
عندي جدولين مدن ودول والعلاقة واحد الى متعدد استخدم الروسيجر التالي
ALTER Procedure [dbo].[CheckCity]
@countryid int
As

Select city.city_id, city.city_name,country.country_name

From
City inner join Country
on city.country_id=country.country_id
where country.country_id=@countryid

يطلب مني قيمة @countryid وينفذ دون اخطاء
في واجهة دلفي قمت بربط هذا البروسيجر ويعرض البيانات في combobox
سؤالي : كيف احدد country_id من كمبوبوكس الدول حتى اقارنه مع الباراميتر @countryid
مع العلم ان كمبوبوكس الدول يعرض اسماء الدول ولكن لو عرض id لا يوجد مشكلة
المشكلة اني لا استطيع ان اجلب قيمة country_id الحالية اذا استخدمت اسم الدول في الكمبوبوكس
الرد
#2
يعني انا استخدم التالي
data.SP_City.Parameters.ParamByName('@countryid').Value := country.ItemIndex;
لكن هدا ياخذ مكان اسم الدولة في الكمبوبوكس ولا ياخذ رقم الدولة في جدول الدول
مثال مصر رقمها مخزن في جدول الدول 212 وهو نفسه في جدول المدن لاني عامل ربط بينهم
الرد
#3
وعليكم السلام ورحمة الله تعالى وبركاته.

ربما تقصد:

كود :
data.SP_City.Parameters.ParamByName('@countryid'). Value := country.Text;

أو:

كود :
data.SP_City.Parameters.ParamByName('@countryid'). Value :=strtoint(country.Text);
الرد
#4
اخي الكريم جزاك الله خير ولكن لم اقصد هذا ابداً
المشكلة عندي هي ان لدي جدولين واحد للدول واخر للمدن وكل واحد منهما يحتوي على country_id لتتم عملية الربط.
كل ما ابحث عنه طريقة برمجية لربط عنصري combobox عند اختيار مصر مثلا تظهر في كمبوبوكس المدن فقط المدن المصري كالقاهرة والاسكندرية وهكذا ويجب ان تكون عملية الربط برمجيا باستخدام stored procedure
الرد
#5
الحمد لله وجدت الحل وهوا كالتالي
كود :
procedure Tfcity.CountryChange(Sender: TObject); begin inherited; data.SP_City.Parameters.ParamByName('@countryname').Value :=(country.Text) ; Thelper.fillcombobox(city,data.SP_City,'city_name'); end;
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم