PDA

View Full Version : نوشتن برنامه مطابق اصول صحیح برنامه نویسی



IMANAZADI
پنج شنبه 09 دی 1389, 13:39 عصر
با سلام خدمت دوستان عزیز
یک مشکلی برام پیش اومده خیلییم حیاتیه
لطفا راهنمایی کنید
من یه برنامه نوشتم که با بانک اطلاعاتی اکسس کار میکنه
این برنامه شامل 3 تا فرم هست
فرم اولیه برنامه که آدرس فایل دیتابیس را میگیره .
فرم دوم اطلاعات لازم برای کار با دیتابیس را از کاربر میگیره
فرم سوم که شامل یک دیتاگرید ویو هست که اطلاعاتی را که کاربر در فرم دوم وارد کرده را نشون میده .
سوال :
در فرم اول چطوری میتونم آدرس فایل را که کاربر مشخص کرده به فرم سوم بفرستم ؟
من اینطوری عمل کردم که در فرم اول یک متغیر بصورت زیر تعریف کردم
public static string address;
بعد در کلید open که در عکس ملاحظه می فرمائید کد زیر را نوشتم


openFileDialog1.Filter = "Microsoft Access (*.accdb)|*.accdb";

if (openFileDialog1.ShowDialog () == DialogResult.OK)
{

address = openFileDialog1.FileName;

}


کلید Report به صورت زیر نوشته شده است.


Form2 frm2 = new Form2 ();
frm2.ShowDialog ();

در فرم سوم آدرس را اینطوری فراخوانی کردم


OleDbConnection cnn = new OleDbConnection (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Form1.address + "");


آیا از نظر برنامه نویسی اینگونه عمل کردن ایرادی نداره یعنی خلاف قواعد صحیح برنامه نویسی نیست ؟ اگر راه دیگری هست راهنمایی کنید ؟

سوال دوم هم مثل سوال اول هست
در فرم دوم که در عکس هم مشخص هست کاربر تاریخ را مشخص میکند و بعد روی show کلیک میکنه
کلید show بصورت زیر نوشته شده


Form3 frm3 = new Form3();

frm3 .rep_date = dateTimePicker1.Value.ToShortDateString ();
frm3 .ShowDialog ();

در فرم سوم متغیر rep_date به صورت properties اینگونه تعریف شده


public string rep_date;

public string REP_DATE
{
get
{
return rep_date;
}
set
{
rep_date = value;
}
}


آیا این properties درست تعریف شده است ؟؟؟

در فرم لود فرم 3 کد زیر نوشته شده


OleDbConnection cnn = new OleDbConnection (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Form1.address + "");

OleDbDataAdapter da = new OleDbDataAdapter ("" , cnn);

DataSet ds1 = new DataSet ();

ds1.Clear ();

da.SelectCommand.CommandText = SELECT UNIT, MATERIAL, [t Date] FROM [main table] GROUP BY UNIT, MATERIAL, [t Date] HAVING([t Date] = # " + rep_date + " #)";
da.Fill (ds1 , "f");
dataGridView1.DataSource = ds1;
dataGridView1.DataMember = "f";

m * h * d
پنج شنبه 09 دی 1389, 15:16 عصر
روش دومت صحیح تره و قانون مند تر

ghasemweb
پنج شنبه 09 دی 1389, 17:01 عصر
به نظر من براي اين كار نميشه استانداردي در نظر گرفت اگر به جواب برسيد مهمتره به هر حال نبايد وقتتون رو فداي اصولمند كردن برنامه كنيد

IMANAZADI
جمعه 10 دی 1389, 08:10 صبح
دوستان عزیز دیگه هم نظر بدن ؟
دوست دارم مطابق اصول برنامه نویسی کنم ؟
برای اینکه یک آدرس یا یک مشخصه را از فرم اول بخواهیم به فرم سوم یا چهارم یا پنجم فرستاد راه بهتری وجود داره ؟
یه چیز دیگه به کد پروپرتیز توجه کنید


public string rep_date;

public string REP_DATE
{
get
{
return rep_date;
}
set
{
rep_date = value;
}
}


برای استفاده در کد زیر


da.SelectCommand.CommandText = SELECT UNIT, MATERIAL, [t Date] FROM [main table] GROUP BY UNIT, MATERIAL, [t Date] HAVING([t Date] = # " + rep_date + " #)";

باید از rep_date استفاده کنم یا از REP_DATE ???

IMANAZADI
شنبه 11 دی 1389, 06:51 صبح
دوستان عزیز لطفا جواب بدید