PDA

View Full Version : سوال: رفرش اتوماتیک در سی شارپ



reza ameri
جمعه 01 خرداد 1394, 15:29 عصر
سلام.
دوستان من یک برنامه دانلود کردم که در صفحه اولش چهار تا پنجره وجود داره که هر کدومشون به دیتابیس اکسس متصله ولی وقتی یک چیزی رو داخل برنامه اضافه میکنم باید حتما برنامه رو خروج کنم تا محصولاتی ک وارد کردم رو نمایش بده.
میخواستم ببینم میشه کاری کرد که بدون باز و بسته کردن نرم افزار محصولات نمایش داده بشه؟
البته برنامه هم به صورت رایگان توی نت هست برای انبار داریه.

sg.programmer
جمعه 01 خرداد 1394, 17:06 عصر
هر دفعه که اضافه میکنید باید یکبار رفرش کنید تا محصولات را نمایش بدهید- کد را قرار بدید راحتتر میشه نظر داد -

reza ameri
جمعه 01 خرداد 1394, 23:45 عصر
ممنونم از پاسخ.
سورس کامل این برنامه
http://dl.mspsoft.ir/anbar_mspsoft.ir.rar
امیدوارم لینک خارجی خلاف قوانین انجمن نباشه

ghasem110deh
شنبه 02 خرداد 1394, 00:02 صبح
سلام
ساده ترین روش اینه که اطلاعات بانک رو توی یه متد بخونید و پاس بدین به دیتاگریدویو :

public void DGV() {
try
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=نام دیتابیس;Integrated Security=True");
SqlCommand com = new SqlCommand();
SqlDataReader oldr;
DataTable Table = new DataTable();
con.Open();
com.Connection = con;
com.CommandText = "SELECT * FROM جدول";
oldr = com.ExecuteReader();
Table.Load(oldr);
dataGridView1.DataSource = Table;
dataGridView1.Columns[0].HeaderText = "شماره";
dataGridView1.Columns[1].HeaderText = "نام";
}
catch
{
}
finally
{
con.Close();
}
}

حالا اگه یه سری اطلاعات جدید درج کردین تو بانک کافی توی دکمه درج این متد رو فراخوانی کنید : (بعد از دستورات insert)

DGV();

با هر بار اضافه شدن به بانک ... بلافاصله توی گریدویو نمایش داده میشن :)

reza ameri
شنبه 02 خرداد 1394, 10:35 صبح
اقا قاسم تشکر.
بانک اطلاعاتی اکسس رو هم با این تابع sql فراخوانی میشه؟
اگه میشه من این کد رو باید کجای برنامه بزارم؟
سورس اصلی رو در بالا ارسال کردم.

winner1
شنبه 02 خرداد 1394, 14:08 عصر
برنامه اگه داخل شبکه باشه کار سخت میشه ولی اگه تک کاربرس هم راحل دوستمون صحیحه و هم اینکه میتونید یک رویداد تعریف کنین که موقع ثبت اجرا بشه و فرم های دیگرو اپدیت کنه

sg.programmer
شنبه 02 خرداد 1394, 14:34 عصر
اینم یک نمونه در اکسس

OleDbConnection con = new OleDbConnection(variable._ConnectionString);
OleDbCommand cmd = new OleDbCommand();
OleDbDataReader dr;

con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT ID, Title from Tbl_Ostan;";
dr = cmd.ExecuteReader();
hashtable_Ostan.Clear();
while (dr.Read())
{
hashtable_Ostan.Add(dr[1].ToString(), Convert.ToInt32(dr[0]));
cmbOstan.Items.Add(dr[1].ToString());
}

dr.Close();
con.Close();

reza ameri
شنبه 02 خرداد 1394, 15:07 عصر
برنامه اگه داخل شبکه باشه کار سخت میشه ولی اگه تک کاربرس هم راحل دوستمون صحیحه و هم اینکه میتونید یک رویداد تعریف کنین که موقع ثبت اجرا بشه و فرم های دیگرو اپدیت کنه


برنامه داخل شبکه نیست دوست عزیز.

reza ameri
شنبه 02 خرداد 1394, 15:08 عصر
اینم یک نمونه در اکسس

OleDbConnection con = new OleDbConnection(variable._ConnectionString);
OleDbCommand cmd = new OleDbCommand();
OleDbDataReader dr;

con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT ID, Title from Tbl_Ostan;";
dr = cmd.ExecuteReader();
hashtable_Ostan.Clear();
while (dr.Read())
{
hashtable_Ostan.Add(dr[1].ToString(), Convert.ToInt32(dr[0]));
cmbOstan.Items.Add(dr[1].ToString());
}

dr.Close();
con.Close();



این کد رو فقط در یک رویداد بذارم کار درسته؟
باید برای هر تیبل به صورت جدا این کد رو بنویسم؟

sg.programmer
شنبه 02 خرداد 1394, 15:13 عصر
این کد برای هر رویدادی می باشد که میخواهد با هر جدول شما کار کند
یعنی برای کار با هر جدولت از این تابع در رویدادت استفاده کنی. (این تابع برای خواندن از جدول می باشد.)

reza ameri
شنبه 02 خرداد 1394, 15:29 عصر
این کد برای هر رویدادی می باشد که میخواهد با هر جدول شما کار کند
یعنی برای کار با هر جدولت از این تابع در رویدادت استفاده کنی. (این تابع برای خواندن از جدول می باشد.)

مرسی.امتحان کنم ببینم چی میشه

reza ameri
شنبه 02 خرداد 1394, 15:42 عصر
using System;using System.Data;
using System.Data.OleDb;


namespace anbar
{
public class DataBase
{
private OleDbCommand cmd;
private OleDbConnection con;
private OleDbDataAdapter da;
private DataTable dt;


//for sql
/*
private SqlCommand cmd;
private SqlConnection con;
private SqlDataAdapter da;
private DataTable dt;
*/


public DataBase()
{
}


public void DoCommand(string ole)
{
con = new OleDbConnection();
//for sql
//con=new SqlConnection();


con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb;Persist Security Info=True";
//for sql
//con.ConnectionString="server=(local);trusted_connection=yes;database=tel ephon;";


cmd = new OleDbCommand();
//for sql
//cmd=new SqlCommand();
cmd.Connection = con;
con.Open();
cmd.CommandText = ole;
cmd.ExecuteNonQuery();
con.Close();
}


public DataTable MySelect(string sql)
{
con = new OleDbConnection();
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb;Persist Security Info=True;";
cmd = new OleDbCommand();
cmd.Connection = con;
da = new OleDbDataAdapter(cmd);
dt = new DataTable();
con.Open();
cmd.CommandText = sql;
da.Fill(dt);
con.Close();
return dt;
}
}
}

فایل دیتا بیس ک در برنامه وجود داره این کدها رو داره اگه این کدی ک شما گفتی رو داخل همین فایل اضافه کنم به نظرتون درست نمیشه؟

sg.programmer
شنبه 02 خرداد 1394, 16:29 عصر
شدن میشه مثل همون تابع آخری