PDA

View Full Version : نحوه استفاده از یک DataAdapter در کل فرم



amir_pro
جمعه 19 بهمن 1386, 22:55 عصر
سلام به دوستان
ممکن این سوال برای بعضی از دوستان پیش پا افتاده باشه و برای بعضی دیگر از دوستان پرسش.
چه طور می شود در فرم یک DataAdapter داشت که برای استفاده از آن به دفعات نیاز نباشد DataAdapter دیگری تعریف کرد و فقط مقدار CommandText مربوط به select command یا insert command یا delete command یا update command را تغییر داد و از آن استفاده کرد.
در کلاس مربوطه متغیر da را به صورت زیر تعریف می کنم به صورت سراسری


OleDbDataAdapter da = new OleDbDataAdapter();
ولی وقتی می خوهم در موقع اجرا commandtext مربوط به select command زا تغییر دهم خطا می دهد و مجبور شدم برای هر بار کار با dataAdapter مثلا اتصال به DatagridView از یک dataadapter استفاده کنم


var.dt.Clear();
OleDbDataAdapter da1 = new OleDbDataAdapter("select numfactor,sanad,buydate,namekala,tedad,ghvahed,mod el,mablaghkala from anbar where numfactor='" + NtbDelFactor.Text + "'", var.con);
da1.Fill(var.dt);
DgvDel.DataSource = var.dt;

var.dt1.Clear();
OleDbDataAdapter da2 = new OleDbDataAdapter("select numfactor,sanad,buydate,namekala,tedad,ghvahed,mod el,mablaghkala from anbar where numfactor='" + NtbDelFactor.Text + "'", var.con);
da2.Fill(var.dt1);
DgvDel.DataSource = var.dt1;

باید dataadapter را کجا و به چه صورت تعریف کرد که تعریف آن فقط یک بار و استفاده از آن زیاد باشد که مجبور نشوم برای هر استفاده یک da تعریف کنم
با تشکر

Masoud_TB
شنبه 20 بهمن 1386, 08:44 صبح
البته اصولا من با این کار موافق نیستم ولی به لحاظ تکنولوژی هیچ ایرادی به این کار وارد نیست و شما می تونین هر کجا که نیاز بود Select یا ... را تغییر بدین و ازش استفاده کنین. اگر هم خطایی دارین احتمالا به خاطر SQL Commandی است که نوشته اید.

amir_pro
یک شنبه 21 بهمن 1386, 11:22 صبح
دوست عزیز جناب Masoud_TB
می تونید بگید DataAdapter را در کجا و به چه طورت تعریف کردید که هر وقت که نیاز داشتید فقط دستور select یا insert یا delete یا update را عوش کنید و اجرا شود و نیازی به تعریف DataAdapter دیگری نداشته باشید؟
ممنون

رضا عربلو
یک شنبه 21 بهمن 1386, 19:08 عصر
هرچند بهتر است یک لایه دیتا برای کار با دیتابیستان داشته باشد.

در سطح کلاستان (یا بعنوان member کلاس فرمتان) تعریف کنید :


OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand c = new OleDbCommand();


در کانستراکتور کلاستان (یا اونت لود فرمتان) بنویسید :


da.SelectCommand = c;


حالا هنگامی که خواستد دستورتان را تغییر دهید بنویسید :


c.CommandText = "...";
....
da.Fill(......);


برای da.update نیز بایستی کامندهای InsertCommand و UpdateCommand و DeleteCommand را یه صوزت بالا داشته باشید.