PDA

View Full Version : انتقال اطلاعات کامبوباکس با دستور sql



khoshblagh
شنبه 28 شهریور 1388, 16:05 عصر
با سلام خدمت دوستان
میخواستم با دستورات sql اطلاعات یک کامبوباکس را به بانک اکسس انتقال دهم. در مورد edit مشکلی ندارم. ولی برای کامبوباکس مشکل دارم. ضمنا اگر امکان دارد برای انتقال مقدار یک متغیر رشته ای هم نمونه ارائه نمایید. متشکرم

MOJTABAATEFEH
شنبه 28 شهریور 1388, 16:40 عصر
دوست عزيز منظورتون رو كامل تر بيان كنيد
اگر منظورتون اينه كه آيتم هاي كمبوباكس رو ببريد به ديتابيس مي تونيد از دستور زير استفاده كنيد :



for i:=0 to combobox1.Items.Count-1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1) values ('+quotedstr(combobox1.Items.Strings[i])+')';
ADOQuery1.ExecSQL;
end;






موفق باشيد

khoshblagh
شنبه 28 شهریور 1388, 16:54 عصر
با تشکر از پاسختان
دقیقا بله همین را میخواستم. در باره متغیر رشته ای هم اگر ممک ن هست یک نمونه ارائه نمایید. متشکرم

MOJTABAATEFEH
شنبه 28 شهریور 1388, 17:04 عصر
منظورتون رو از كار با متغيير رشته اي كامل تر بيان كنيد كلا راجع به سؤال دوم توضيح بيشتري بديد

khoshblagh
شنبه 28 شهریور 1388, 17:19 عصر
فرض کنید یک متغیر دارید که حاوی عدد 135یا یک رشته مانند کلمه علی باشد. حالا من میخواهم محتوای این متغییر که کلمه علی و یا عدد 135 باشد را به یک فیلد درون بانک اکسس انتقال دهم.متشکرم

MOJTABAATEFEH
شنبه 28 شهریور 1388, 17:31 عصر
ببينيد اگر فيلد شما در بانك عددي باشه بصورت زير عمل كنيد :


ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1) values ('+inttostr(variable)+')';
ADOQuery1.ExecSQL;


و اگر به صورت رشته اي بود بايد به صورت زير عمل كنيد :


ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1) values ('+quotedstr('Mojtaba')+')';
ADOQuery1.ExecSQL;


عبارت ()quotedstr رشته را بصورت استاندارد به بانك ارسال مي كنه و ديگر احتياج به گذاشتن دابل كتيشن نيست.


موفق باشيد

khoshblagh
شنبه 28 شهریور 1388, 17:40 عصر
[quote=MOJTABAATEFEH;809569]


for i:=0 to combobox1.Items.Count-1 do

begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1) values ('+quotedstr(combobox1.Items.Strings[i])+')';
ADOQuery1.ExecSQL;
end;





علت استفاده از حلقه در این مثال چست؟
متشکرم

MOJTABAATEFEH
شنبه 28 شهریور 1388, 18:12 عصر
شماره ايندكس آيتم هاي كمبوباكس از صفر شروع ميشه با اين حلقه ما آيتم هاي كمبوباكس رو تك تك بدست مياريم و در بانك مي ريزيم

khoshblagh
شنبه 28 شهریور 1388, 18:17 عصر
شماره ايندكس آيتم هاي كمبوباكس از صفر شروع ميشه با اين حلقه ما آيتم هاي كمبوباكس رو تك تك بدست مياريم و در بانك مي ريزيم
یعنی اگر فرضا شماره ایندکس انتخاب فعلی کامبوباکس فرضا 2 به معنی مرد باشد نیاز هست که تمام حالتهای ممکن که در این مثال 2 حالت زن و یا مرد میباشد. انتقال یابد؟
البته تصور من این است که فقط باید شماره ایندکس انتخاب فعلی کامبوباکس که 2 میباشد انتقال یابد! ممنون میشوم در این مورد بیشتر من را راهنمایی نمائید. متشکرم

MOJTABAATEFEH
شنبه 28 شهریور 1388, 19:09 عصر
شما دقيق بگين چكار مي خواين انجام بدين تا ببينم مي تونم راهنماييتون كنم

khoshblagh
یک شنبه 29 شهریور 1388, 10:32 صبح
شما دقيق بگين چكار مي خواين انجام بدين تا ببينم مي تونم راهنماييتون كنم
میخواهم اطلاعات یک شخص را که در یک فرم وارد شده و شامل چند ادیت باکس و یک کامبوباکس را در یک جدول ذخیره کنم.البته با دستور اس کیو ال.

MOJTABAATEFEH
یک شنبه 29 شهریور 1388, 21:32 عصر
مي تونيد از دستور زير استفاده كنيد :



ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1,field2) values ('+quotedstr(edit1.text)+','+quotedstr(combobox1.I tems.Strings[combobox1.ItemIndex])+')';
ADOQuery1.ExecSQL;



در اين مثال field1 مثلا نام شخص و field2 انتخاب جنسيت كه با كمبوباكس اينكار رو انجام دادم


موفق باشيد

khoshblagh
دوشنبه 30 شهریور 1388, 09:01 صبح
با سلام

ببین این عبارت برای دو ادیت باکس مشکلی ندارد و اطلاعات را به بانک اکسس انتقال میده
ولی وقتی کامبوباکس را به عبارت اضافه میکنم در هنگام اجرا خطای دستور میدهد.آیا کسی میدونه مشکل این کد چیست. جهت اطلاع فیلدی مربوطه در جدول یک تکس با یک کارکتر طول میباشد.
راستی اگر فیلد از نوع بولین بود چه تغییری در عبارت باید رعایت شود؟
متشکرم


cmdSave.CommandText:='INSERT INTO tblCodHesab(cod,Name,Level) values('
+quotedstr(edtCod.text)+','+quotedstr(edtName.text )+','+quotedstr(cobLevel.Items.Strings[cobLevel.ItemIndex])+')';

khoshblagh
چهارشنبه 01 مهر 1388, 08:50 صبح
با سلام خدمت دوستان
آیا واقعا کسی جواب پست 13 را نمیدونه؟

MOJTABAATEFEH
سه شنبه 07 مهر 1388, 19:10 عصر
لطفا بگيد فيلدهاي جدول شما از چه نوعي هستند چون اكسس رو اين مورد زياد انعطاف ندارد

MOJTABAATEFEH
سه شنبه 07 مهر 1388, 19:20 عصر
لطفا بگيد فيلدهاي جدول شما از چه نوعي هستند چون اكسس رو اين مورد زياد انعطاف ندارد

khoshblagh
چهارشنبه 08 مهر 1388, 07:26 صبح
لطفا بگيد فيلدهاي جدول شما از چه نوعي هستند چون اكسس رو اين مورد زياد انعطاف ندارد

یک نوع آن تکس میباشد که باید عدد آیتم ایندکس کامبوباکس در آن ثبت شود. و یک نوع دیگر آن yes/no یا همان بولین میباشد.متشکرم

ghasemshami
پنج شنبه 09 مهر 1388, 09:42 صبح
ببینید اگه اینطور که فهمیده باشم شما میخواهید اطلاعاتی که در یک کمبوباکس هستش رو در یک رکورد از بانک که متعلق به همون فرد هستش بریزید که برای این کار باید فیلدتون رو از نوع LookUp بزاری و مساوی هم قرار بدی

khoshblagh
پنج شنبه 09 مهر 1388, 10:25 صبح
ببینید اگه اینطور که فهمیده باشم شما میخواهید اطلاعاتی که در یک کمبوباکس هستش رو در یک رکورد از بانک که متعلق به همون فرد هستش بریزید که برای این کار باید فیلدتون رو از نوع LookUp بزاری و مساوی هم قرار بدی
تا آنجا که من میدانم نوع LookUp برای کامبوهایی است که به جدول وصل میباشند.ضمن اینکه من آیتم ایندکس کامبو را میخواهم در جدول با دستور اس کیو ال ثبت نمایم . متشکرم

MOJTABAATEFEH
جمعه 10 مهر 1388, 11:55 صبح
دوست عزيز
در اين مثال دو فيلد داريم كه شماره آيتم كمبو و نوع Boolean را مشخص مي كنيم :



Field1 Text
Filed2 Yes/No


براي yes يا True :


ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1,field2) values ('+inttostr(combobox1.ItemIndex)+','+quotedstr('1' )+')';
ADOQuery1.ExecSQL;


براي No يا False :


ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into table1 (field1,field2) values ('+inttostr(combobox1.ItemIndex)+','+quotedstr('0' )+')';
ADOQuery1.ExecSQL;









موفق باشي

khoshblagh
شنبه 11 مهر 1388, 07:45 صبح
[quote=MOJTABAATEFEH;819427]دوست عزيز
در اين مثال دو فيلد داريم كه شماره آيتم كمبو و نوع Boolean را مشخص مي كنيم :



Field1 Text




Filed2 Yes/No



براي yes يا True :





ADOQuery1.SQL.Clear;




ADOQuery1.SQL.Text:='insert into table1 (field1,field2) values ('+inttostr(combobox1.ItemIndex)+','+quotedstr('1' )+')';


ADOQuery1.ExecSQL;





براي No يا False :





ADOQuery1.SQL.Clear;




ADOQuery1.SQL.Text:='insert into table1 (field1,field2) values ('+inttostr(combobox1.ItemIndex)+','+quotedstr('0' )+')';


ADOQuery1.ExecSQL;




















با تشکر از پاسختان
آیا دو فیلد را با یک values مقدار دهی نمودید؟
چرا ItemIndex خودش مقداردهی نمیشود و شما خودتان مقدار برای اون تعریف میکنید؟

MOJTABAATEFEH
شنبه 11 مهر 1388, 21:33 عصر
Itemindex كمبو خودش مقدار مي گيره با كد مربوط به كمبو ما مقدار Itemindex را بدست آورديم كه يك عدد است
اگر منظورتون Values داخل كد هست كه اين ديگه مربوط به Syntax اس كيو ال است و دست برنامه نويس نيست و بايد به قاعده كد نويسي اس كيو ال عمل كنه و اگر 10 تا فيلد هم داشتيد با يك Values عمل Insert رو انجام مي ديد


موفق باشي

khoshblagh
یک شنبه 12 مهر 1388, 07:49 صبح
با سلام
نه منظور من این قسمت کد quotedstr('0'میباشد که شما به طور دستی به آن مقدار دادید. در حالیکه قاعدتا میباید مثل کامبو قبلی آیتم ایندکس محتویات آن به بانک منتقل میشد.متشکرم

MOJTABAATEFEH
یک شنبه 12 مهر 1388, 12:07 عصر
دوست عزيز اين كه شما نوشتيد براي مقدار دادن به فيلدهاي Boolean و YES/NO است براتون نوشتم 1 براي TRUE يا YES و 0 براي FALSE يا NO
كه حالا اين 0و1 را شما به هر طريقي كه دوست داريد مي تونيد به ديتابيس ببريد: Edit or Combobox or ......


موفق باشي