PDA

View Full Version : سوال: کد معادل C# به دلفی



fakhravari
سه شنبه 08 شهریور 1390, 23:28 عصر
با سلام خدمت دوستان
ببینید من دستوری می خواهم که مثال سبد خرید اطلاعات در گرید ویو را به ترتیب وارد دیتابیس کند
این نمنه کد C#

object[] newrow = new object[7];
newrow[0] = dataGridViewX1.Rows.Count + 1;
newrow[1] = txtkalaid.Text;
newrow[2] = txtkalaname.Text;
newrow[3] = txtnumber.Text;
newrow[4] = lblvahed.Text;
newrow[5] = txtkharid.Text;
newrow[6] = int.Parse(txtnumber.Text) * int.Parse(txtkharid.Text);

dataGridViewX1.Rows.Add(newrow);




اگه دوستان می توانند کمک کنند

MohsenB
پنج شنبه 10 شهریور 1390, 00:11 صبح
سلام


شما دقیقا از چه کنترلی تو دلفی میخواید استفاده کنید ؟

fakhravari
پنج شنبه 10 شهریور 1390, 14:01 عصر
با سلام
می خواهم یک سبد خرید توی گرید ویو در بیارم.

BORHAN TEC
پنج شنبه 10 شهریور 1390, 14:44 عصر
می خواهم یک سبد خرید توی گرید ویو در بیارم.
منظور شما اصلاً واضح نیست. چرا سعی نمی کنید که مشکلتان را واضح تر توضیح دهید تا زودتر به نتیجه برسید؟

fakhravari
پنج شنبه 10 شهریور 1390, 15:46 عصر
ببینید این کد بالا دستور C#
تمام سطر یک گرید که توسط ارایه با دستور for
دونه دونه درون دیتایس ریخته می شوند.
من هم همین دستور رو با دلفی می خواهم که اطلاعات یک گرید رو بطونی سطر به سطر درون جدول ذخیره کنی
با سپاس

Felony
پنج شنبه 10 شهریور 1390, 16:05 عصر
دلفی خودش DBGrid داره که مدیریت ارتباط با بانک رو خودش بر عهده میگیره !

Mahmood_M
پنج شنبه 10 شهریور 1390, 16:47 عصر
کد شما یک رکورد ( سطر ) به DataGridView اضافه می کنه و این رکورد در بانک هم اضافه میشه ، اما در دلفی ابزار DBGrid صرفا برای نمایش اطلاعات هست و نمی تونید به وسیله ی اون بانک اطلاعاتی رو ویرایش کنید ( درواقع به اون صورتی که مدنظرتون هست امکانش نیست ! ) ، شما برای ویرایش اطلاعات بانک و نمایش اون بسته به نوع بانک یا نحوه ی ارتباط به 4 یا 3 ابزار نیاز دارید :
Connection
DataSet مثل ADOTable یا ...
DataSource
DBGrid
یک کامپوننت ADOConnection و یک ADOTable روی فرم قرار می دید ، ADOConnection رو توسط خاصیت ConnectionString به بانک متصل میکنید ، خاصیت Connection مربوط به ADOTable رو روی ADOConnection ای که قرار دادید تنظیم میکنید ، یک DataSource روی فرم قرار میدید ، خاصیت DataSet اون رو روی ADOTable ای که قرار دادید تنظیم میکنید و یک DBGrid هم برای نمایش به فرم اصافه میکنید و توسط خاصیت DataSource اون رو با DataSource ای که در فرم قرار دادید مرتبط میکنید
برای ویرایش ( Insert ، Edit ، Delete و ... ) ، از ADOTable استفاده میکنید ، به عنوان مثال ، فرض کنید بانکی داریم با 2 فیلد Name و Family ، به صورت زیر یک رکورد به بانک اضافه میکنیم :

ADOTable1.Insert;
ADOTable1.FieldByName('Name').AsString := 'Mahmood';
ADOTable1.FieldByName('Family').AsString := 'Mehri';
ADOTable1.Post;

برای حذف ( رکورد انتخاب شده ) :

ADOTable1.Delete;

برای ویرایش ( رکورد انتخاب شده ) :

ADOTable1.Edit;
ADOTable1.FieldByName('Name').AsString := 'Mahmood';
ADOTable1.FieldByName('Family').AsString := 'Mehri';
ADOTable1.Post;

و ...

با انجام تغییرات در ADOTable ، کامپوننت DBGrid هم تغییرات انجام شده رو نمایش میده
به همین صورت می تونید رکوردهاتون رو در بانک اضافه کنید

معادل دلفی کدی که قرار دادید :


ADOTable1.Insert;
ADOTable1.FieldByName('1').AsInteger := ADOTable1.RecordCount + 1;
ADOTable1.FieldByName('2').AsString = txtkalaid.Text;
ADOTable1.FieldByName('3').AsString = txtkalaname.Text;
ADOTable1.FieldByName('4').AsString = txtnumber.Text;
ADOTable1.FieldByName('5').AsString = lblvahed.Text;
ADOTable1.FieldByName('6').AsString = txtkharid.Text;
ADOTable1.FieldByName('7').AsInteger = StrToInt(txtnumber.Text) * StrToInt(txtkharid.Text);
ADOTable1.Post;

فرض میکنیم " نام " فیلدها به ترتیب 1 تا 7 باشه !
البته راه های دیگه هم برای دسترسی به فیلدها وجود داره ، یکی از راههاش استفاده از نام فیلد هست که در مثال بالا عنوان شد

موفق باشید ...

fakhravari
پنج شنبه 10 شهریور 1390, 20:54 عصر
با سپاس فراوان
__________________
یه سوال از کامپوننت Alpha
ببینید من روی فرم 1 یک فریم بار گذاشتم و دیگر فرم درست نکردم همش از نوع فریم فرم درست کردم.
بانک روی دیتا مدل است و نوع بانک ADOQuery
ولی بعضی از دستورات برای اجراع بانک مثال یه سرچ

procedure TFr_Customer.sButton4Click(Sender: TObject);
begin
if sMaskEdit8.text='' then begin
showmessage('ÈÇíÏ ÈÑÇí ÌÓÊÌæ ãÞÏÇÑí ÑÇ æÇÑÏ ˜äíÏ');
end else begin

if sComboBox1.ItemIndex =0 then begin
DM.Query.Filter:='CatId='''+QuotedStr(sMaskEdit8.T ext)+'''';
DM.Query.Filtered:=true;

if DM.Query.isempty=true then begin
showmessage('ÏÇÏå Çí ÈÇ Çíä ãÔÎÕÇÊ æÌæÏ äÏÇÑÏ');
DM.Query.Filtered:=false;
end;end;

if(DM.Query.RecNo>0)then begin
sMaskEdit1.Text:= DM.Query['Name'];
sMaskEdit2.Text:= DM.Query['Family'];
sMaskEdit3.Text:= DM.Query['Tell'];
sMaskEdit4.Text:= DM.Query['Sherkhat'];
sMaskEdit5.Text:= DM.Query['BedehKhar'];
sMaskEdit6.Text:= DM.Query['Bestankhar'];
sMaskEdit7.Text:= DM.Query['CatId'];
end;end;
end;



این کد روی فرم جواب میده اما توی فرم از نوع فریم eror میده
ضمیمه ببینید

firststep
جمعه 11 شهریور 1390, 02:27 صبح
چرا از debug استفاده نمی کنین که مکانه دقیق خطا رو پیدا کنین!!!!

fakhravari
جمعه 11 شهریور 1390, 15:05 عصر
سلام ممنون مشکل حل شد
فقط من برای بروز رسانی از این کد استفاده میکنم
DM.Query.Edit;
DM.Query['Name']:=sMaskEdit1.Text;
DM.Query['Family']:=sMaskEdit2.Text;
DM.Query['Tell']:=sMaskEdit3.Text;
DM.Query['Sherkhat']:=sMaskEdit4.Text;
DM.Query['BedehKhar']:=sMaskEdit5.Text;
DM.Query['Bestankhar']:=sMaskEdit6.Text;
DM.Query.Post;

ولی مل خواهم از دستورات sql استفاده کنم از این کد هم استفاده ممی کنم ولی eror میده


with(DM.Query) do begin
DM.Query.Close;
DM.Query.SQL.Clear;
DM.Query.SQL.Add('UPDATE Customer SET Name='+QuotedStr(sMaskEdit1.Text)+
'Family='+QuotedStr(sMaskEdit2.Text)+
'Tell='+QuotedStr(sMaskEdit3.Text)+
'Sherkhat='+QuotedStr(sMaskEdit4.Text)+
'BedehKhar='+sMaskEdit5.Text+
'Bestankhar='+sMaskEdit6.Text+' WHERE CatId='+sMaskEdit7.text) ;
DM.Query.ExecSQL;

BORHAN TEC
جمعه 11 شهریور 1390, 16:12 عصر
ولی مل خواهم از دستورات sql استفاده کنم از این کد هم استفاده ممی کنم ولی eror میده
این ارور بخاطر اینه که میان فیلدهای مختلف فاصله قرار نداده اید.

firststep
جمعه 11 شهریور 1390, 18:59 عصر
with(DM.Query) do begin
DM.Query.Close;
DM.Query.SQL.Clear;
DM.Query.SQL.Add('UPDATE Customer SET Name='+QuotedStr(sMaskEdit1.Text)+
' Family='+QuotedStr(sMaskEdit2.Text)+
' Tell='+QuotedStr(sMaskEdit3.Text)+
' Sherkhat='+QuotedStr(sMaskEdit4.Text)+
' BedehKhar='+sMaskEdit5.Text+
' Bestankhar='+sMaskEdit6.Text+' WHERE CatId='+sMaskEdit7.text) ;
DM.Query.ExecSQL;

fakhravari
شنبه 12 شهریور 1390, 12:53 عصر
حل شد.


DM.Query.Close;
DM.Query.SQL.Clear;
DM.Query.SQL.Add('update Customer set Name ='+QuotedStr(sMaskEdit1.Text)+' , Family ='+QuotedStr(sMaskEdit2.Text)+' , Tell ='+QuotedStr(sMaskEdit3.Text)+' , Sherkhat ='+QuotedStr(sMaskEdit4.Text)+' , BedehKhar ='+QuotedStr(sMaskEdit5.Text)+', Bestankhar ='+QuotedStr(sMaskEdit6.Text)+' where CatId ='+sMaskEdit7.Text+'');
DM.Query.ExecSQL;