
نوشته شده توسط
sara.f
سلام
میخواستم بدونم، مگه واسه همون dataset هم نباید از setconnection استفاده کرد؟
منظورم اینه که ما چه از dataset استفاده کنیم و چه گزارش را مستقیما به دیتابیس متصل کنیم، به هر حال باید اول کار برای آوردن فیلدها بر روی فرم از جداول موجود در دیتا بیس استفاده کنیم، پس در هر دو صورت باید از setconnection استفاده کنیم. درسته؟
سلام دوست عزیز من،
شما برای دسترسی به اطلاعات دیتابیس از هر روشی که استفاده کنی اتصال به دیتابیس رو نیاز داری، اما دو حالت داره. یا دیتاست رو Fill میکنی، که در اونصورت از connection و command و dataadapter استفاده می کنی، و به این شکل به دیتابیس وصل میشی (با open شدن connection). یا گزارشت رو مستقیما وصل میکنی به دیتابیس که باید اطلاعات مربوط به connection رو روی گزارش set کنی که در کد ایشون کد مربوط به این کار در تابعی به اسم setconnection قرار داره. بنابراین در حالت اول به این تابع نیازی نیست.
کد ایشون رو که تغییر دادم به این شکل در اومد:
namespace tempreport
{
public partial class moshakhasathamsaran_report : Form
{
public moshakhasathamsaran_report()
{
InitializeComponent();
}
private void moshakhasathamsaran_report_Load(object sender, EventArgs e)
{
var con = new SqlConnection(@"Data Source=.;AttachDbFilename=|DataDirectory|\khanevad e new.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
var cmd1 = new SqlCommand("Select * from moshakhasathamsaran", con);
var da1 = new SqlDataAdapter(cmd1);
var cmd2 = new SqlCommand("Select * from tahsilathamsaran", con);
var da2 = new SqlDataAdapter(cmd2);
var ds = new DataSet();
da1.Fill(ds, "moshakhasthamsaran");
da2.Fill(ds, "tahsilathamsaran");
var h = new hamsaranCrystalReport();
h.SetDataSource(ds);
crystalReportViewer1.ReportSource = h;
}
}
}
همون طور که میبینید به اون تابع setconnection نیاز نیست، البته این کد تغییر یافته کد خودشون هست میتونه زیباتر از این هم باشه.
موفق باشی