PDA

View Full Version : صفحه بندی دیتاگرید ویو پایگاه داده اکسس



juza66
پنج شنبه 20 شهریور 1393, 17:02 عصر
سلام دوستان


صفحه بندی دیتاگرید ویو
من قبلا با ADO - LINQ و دستی برای دیتابیس SQL صفحه بندی ساخته بودم

یک برنامه کوچک دارم می نویسم نیازی به اس کیو ال ندارم می خواستم با اکسس اینکار رو انجام بدم

تا حدی جلو رفتم با دستورات اس کیو ال قبلی، تویی نمایش اول 10 ایتم صفحه اول رو نشون میده ولی می خوام دکمه بعدی عمل نمیکنه در صورتی که با دستورات SQL براحتی اجرا میشه!!



OleDbConnection con;
private OleDbCommand cmd1;
private OleDbCommand cmd2;
private OleDbDataAdapter adp;
DataSet ds;
private int pagesize = 10;
private int currentpageindex = 1;
private int Totalpage = 0;



private void Form1_Load(object sender, EventArgs e)
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Application.StartupPath + "\\dbsedaghat.mdb;Persist Security Info=False;Jet OLEDB:Database Password=@@ESI@@ALI@@");
cmd1 = new OleDbCommand("Select * from tblbimar order by id", con);
ds = new DataSet();
adp = new OleDbDataAdapter(cmd1);
adp.Fill(ds, "tblbimar");
DWG1.DataSource = ds;
DWG1.DataMember = "tblbimar";
this.calculateTotalpages();
this.DWG1.ReadOnly = true;
this.DWG1.DataSource = Getcurrentrecords(1, con);
}



private void calculateTotalpages()
{

int rowcount = ds.Tables["tblbimar"].Rows.Count;
this.Totalpage = rowcount / pagesize;
if (rowcount % pagesize > 0)
{
this.Totalpage += 1;
}

}


private DataTable Getcurrentrecords(int page, OleDbConnection con)
{
DataTable dt = new DataTable();

if (page == 1)
{
cmd2 = new OleDbCommand(" Select TOP " + pagesize + " * FROM tblbimar ORDER BY id ", con);

}

else
{
int previouspagelimit = (page-1)*pagesize;
cmd2=new OleDbCommand(" Select TOP " + pagesize + " * form tblbimar " + " WHERE id NOT IN " +
"(Select TOP " + previouspagelimit + " id from tblbimar ORDER BY id)",con);
}
try
{

this.adp.SelectCommand=cmd2;
this.adp.Fill(dt);
}
finally
{
con.Close();
}
return dt;
}



دکمه NEXT






if (this.currentpageindex < this.Totalpage)
{
this.currentpageindex++;
this.DWG1.DataSource = Getcurrentrecords(this.currentpageindex, con);
}


نمایش 10 آیتم اول درست انجام میشه
ولی وقتی Next رو میزنم خطا میده که دستورات cmd2 در شرط بعدی قابل اجرا نیست!!

کسی هست ایراد رو تشخیص بده و حل کنه؟!!

تشکر

لینک دانلود سورس
http://charp.persiangig.com/DataGrildView_Page.rar

mohammad reza beizavi
پنج شنبه 20 شهریور 1393, 17:22 عصر
درود
کوئری با تعداد محدود توی access اینجوره:
SELECT * FROM table1 LIMIT 10;
اگر می خواید از رکورد 20 کوئری مقدار 10 رکورد رو بگیرید باید اینجور بنویسید:
SELECT * FROM table1 LIMIT 10,20;
تست کنید تا نتایج رو ببینید وبعد برنامتون رو بر همین اساس تغییر بدید.
پیروز باشید

juza66
پنج شنبه 20 شهریور 1393, 19:10 عصر
ممنون دوست عزیز


نشد باز خطا میده!!!


cmd2 = new OleDbCommand(" Select LIMIT " + pagesize + " * FROM tblbimar ORDER BY id ", con);

feryt20
پنج شنبه 20 شهریور 1393, 19:15 عصر
ممنون دوست عزیز


نشد باز خطا میده!!!


cmd2 = new OleDbCommand(" Select LIMIT " + pagesize + " * FROM tblbimar ORDER BY id ", con);

به کد پست شماره 2 دفت کنید

juza66
پنج شنبه 20 شهریور 1393, 19:25 عصر
آهان متوجه شدم

juza66
پنج شنبه 20 شهریور 1393, 20:16 عصر
اینم سورس کامل برای دوستان

http://charp.persiangig.com/datagridviewpaging.zip

ghasem110deh
جمعه 12 دی 1393, 17:37 عصر
سلام
واسه من این خطا رو میده ...
البته تو اس کیو ال

ghasem110deh
شنبه 13 دی 1393, 21:29 عصر
کسی نیست !

juza66 (http://barnamenevis.org/member.php?177324-juza66) نیستی ؟