PDA

View Full Version : سوال: حرکت بین داده ها (اول ، آخر ، بعدی ، قبلی)



nima_8m
جمعه 24 آذر 1391, 00:38 صبح
چطور میتونم بین داده ها حرکت کنم یعنی با زدن دکمه برم اولین رکورد یا آخرین رکورد ، قبلی یا بعدی و اگه

رسید به آخر متوجه بشه و پیغام خطا نده

طریقه اتصال به دیتابیس

Dim cmdSql, cmdSelect As OleDbCommand
Dim strSql As String
Dim con As OleDbConnection
Dim dr As OleDbDataReader
Dim strSelect As String
Dim da As OleDbDataAdapter
Dim ds As DataSet


con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
con.Open()
Dim da As New OleDbDataAdapter("select * from tabel1 order by id asc ", con)
Dim ds As New DataSet
Dim ds_seke As New DataSet
da.Fill(ds, "tabel1")

rezaprogrammer
جمعه 24 آذر 1391, 00:48 صبح
راه ها مختلفه. چه جوری میخای اطلاعات رو پر کنی؟ از BindingSource میخای استفاده کنی؟

nima_8m
جمعه 24 آذر 1391, 10:08 صبح
هر روشی که منطقی تر باشه و با کد نویسی نه اضافه کردن کامپوننت

rezaprogrammer
جمعه 24 آذر 1391, 10:15 صبح
ببینید. شی bindingsource خودش مشخصه position داره که می تونی باهاش بری به رکورد خاص یا Next و Previues داره برای عقب جلو کردن. first و end برای رفتن به ابتدا و انتها.
حتی یک کنترل کمکی به نام Binding Navigator داره که به خودش وصل میشه. یک کنترل گرافیکی هست که می تونید با اون به اطلاعات دسترسی داشته و عقب و جلو برید. و همچین قابلیت متصل شدن به همه کنترل های ویندوز از یک textbox گرفته تا DataGridView می تونه اونها رو پر کنه و شما در رکوردها حرکت هم بکنید. قابلیت فیلتر کردن اطلاعات هم داره.

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

nima_8m
جمعه 24 آذر 1391, 10:52 صبح
چطور باید به دیتابیس و تکست باکسها این و بایند کنم؟

rezaprogrammer
جمعه 24 آذر 1391, 12:28 عصر
آناتومی اتصال به بانک اطلاعاتی:

1. اتصال به بانک اطلاعاتی SqlConnection -----> Sql ConnectionString
2. تعریف شی DataAdapter
3. تعریف شی DataSet
4. مقدار دهی پارامتر اتصال و Query مناسب به DataAdapter
5. پرکردن DataSet
6. مقدار دهی BindingSource یا DataView و اتصال به کنترل ها

BindingSource ------> Binding Navigator

rezaprogrammer
جمعه 24 آذر 1391, 12:30 عصر
الان کداشو میذارم

rezaprogrammer
جمعه 24 آذر 1391, 13:14 عصر
فکر می کنم کد پایین مناسب باشه.
این کد برای خواندن اطلاعات از دو جدول به صورت Master And Detail است. ابتدا دو تا شی DataAdapter ایجاد می کنید. سپس به اونها دستورات Select میدید.
بعد از اون دیتاست ها رو پر می کنید.
و بعد کار Bind کردن اطلاعات رو انجام می دهید.

Dim con As New SqlConnection(StrConnection)

Dim daCust As New SqlDataAdapter("Select * from Acc_Group", con)

Dim daOrders As New SqlDataAdapter("Select * from Acc_Koll", con)

Dim ds As New DataSet
daCust.Fill(ds, "Cust")
daOrders.Fill(ds, "Orders")

ds.Relations.Add("CustOrd", _
ds.Tables!Cust.Columns!Id_Db_Group, ds.Tables!Orders.Columns!Id_Db_Group)

TxtNo.DataBindings.Add("Text", ds.Tables!Cust, "Id_Db_Group")
TxtCode.DataBindings.Add("Text", ds.Tables!Cust, "Code_G")
TxtSubject.DataBindings.Add("Text", ds.Tables!Cust, "Name_G")

DataGrid1.DataSource = ds.Tables!Cust
DataGrid1.DataMember = "CustOrd"

cm = CType(Me.BindingContext(ds.Tables!Cust), CurrencyManager)

Me.RightToLeft = RightToLeft.Yes

DataGrid1.GridLineColor = Color.Green


TxtNo.DataBindings.Add("Text", ds.Tables!Cust, "Id_Db_Group")
TxtCode.DataBindings.Add("Text", ds.Tables!Cust, "Code_G")
TxtSubject.DataBindings.Add("Text", ds.Tables!Cust, "Name_G")

این دستورات سه تا جعبه متن رو به دیتاست بایند می کنه.
DataGrid1.DataSource = ds.Tables!Cust
DataGrid1.DataMember = "CustOrd"
این دستورات DataGrid یا DatagridView رو تحت انقیاد دیتاست در میاره.

یک توضیح باید ذکر کنم.

اینجا مستقیم ما دیتاگرید رو متصل کردید. شما می تونید شی bindingSource رو هم همینطوری به دیتاست وصل کنید:

BindingSource.DataSource = DataSet
BindingSource.DataMember = "Table"

حال عملیات Bind کردن برای جعبه متن رو همانند بالا اینگونه انجام می دهیم:
BankAccountTypeTitleTextBox.DataBindings.Add("Text", BsBanks, "Id_Db_Group")


و همینطور DataGridview:
DtvCustomerGroups.AutoGenerateColumns = False
DtvCustomerGroups.DataSource = BsCustomerGroups

و دیگر کنترل ها به همین شیوه/

اگر ابهامی هستن بپرسید تا جواب بدم

nima_8m
چهارشنبه 06 دی 1391, 11:09 صبح
من این کار رو تو vb6 انجام میدادم و خیلی راحتر از اینها بود تو رویداد keydown مینوشتیم

1خط بیشتر نمیشد

اینجا :متعجب:

rezaprogrammer
پنج شنبه 07 دی 1391, 14:00 عصر
خاصیت دات نته. یک سری خصوصیات شی گرایی باعث شده کد نویسی بیشتره بشه.
البته کد بالا رو من در پایین خرد کردم در موردش توضیح دادم

amir2844
دوشنبه 02 اردیبهشت 1392, 07:40 صبح
برای رکورد بعدی : databindingsource.MoveNext();
برای رکورد قبلی : databindingsource.MoveLast();