PDA

View Full Version : اتصال کمبوباکس به دیتا گرید



bahar2008
چهارشنبه 22 اسفند 1386, 09:55 صبح
سلام به دوستان عزیزم
من در برنامم 2 تا کمبوباکس دارم که دارای اطلاعات سال هست .یعنی هر کمبوباکس از عدد 81 تا 90 پر شده .

حالا می خوام کدی بنویسم که وقتی بازه زمانی رو در 2 کمبوباکس مشخص می کنم (مثلا از سال 82 تا سال 85 ) ستون های دیتا گرید من این بازه رو نشون بده یعنی ستونهاش باشه 82 - 83 - 84 - 85
دوستان عزیز و اساتید محترم اگه کسی می دونه که چه جوری می تونم این کد رو بنویسم لطفا کمکم کنید :قلب::قلب:

یک مشکل دیگه ای هم که با کمبو باکس دارم این هست که وقتی مثلا عدد 85 رو انتخاب می کنم این عدد رو به جای عدد 81 که در اول لیست کمبوباکس هست نشون می ده و عدد 81 رو از لیست حذف می کنه :ناراحت:...... من خودم هر چی در داخل propertis کمبوباکس ها رفتم هیچ اطلاعاتی پیدا نکردم که این مشکل رو حل کنه :متفکر::متفکر:

Dariuosh
چهارشنبه 22 اسفند 1386, 13:25 عصر
فک میکنم این مشکل ادامه همون مشکل قبلی اس !!!
خوب میتونی برا Fill کردن دیتا تیبلت که توش سال داری Select با متغیر بنویسی
یعنی Quaryفیل رو تغییر بده و به جای مقدار ثابت برا متغیر تو Where علامت سوال بزار

bahar2008
چهارشنبه 22 اسفند 1386, 14:11 عصر
فک میکنم این مشکل ادامه همون مشکل قبلی اس !!!
خوب میتونی برا Fill کردن دیتا تیبلت که توش سال داری Select با متغیر بنویسی
یعنی Quaryفیل رو تغییر بده و به جای مقدار ثابت برا متغیر تو Where علامت سوال بزار

نه این یک مشکل جدیده ادامه اون مشکل قبلی یک چیز دیگه هست که دارم روش کار می کنم که اگر نتونستم جواب بگیرم بیام و اینجا بپرسم از دوستان خوبم :ناراحت: :اشتباه:


می شه لطفا یک مثال از اینکه Select با متغیر بنویسم و برای where علامت سوال بزارم بنویسید کدش رو
یعنی اگه همین 2 کار رو انجام بدم دیتا گرید اون بازه کمبو باکس ها رو می شناسه؟:متفکر:

Dariuosh
چهارشنبه 22 اسفند 1386, 14:49 عصر
یه چیزی تو این مایه ها

SELECT DISTINCT YEAR(ord_date) AS Year
FROM sales
WHERE (YEAR(ord_date) >= @MinYear) AND (YEAR(ord_date) <= @MaxYear)

reza6384
چهارشنبه 22 اسفند 1386, 17:23 عصر
اگر درست متوجه سوال شما شده باشم که اطلاعات هر سال شما توی یه ستون DataTable شما باشه و اسم اون ستون هم عدد سال باشه، یک Datatable جدید در نظر بگیرید به اسم Destination



PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MyTable AsNew DataTable
' We suppose that MyTable is filled now
Dim Destination AsNew DataTable("Destination")
Dim DS AsNew DataSet
DS.Tables.Add(Destination)
Dim DTC AsNew DataColumn
Dim SI, EI AsInteger' Start And End Indexes
SI = CInt(Me.ComboBox1.Text)
EI = CInt(Me.ComboBox2.Text)
For i AsInteger = SI To EI
DTC = MyTable.Columns(i)
Destination.Columns.Add(DTC)
Next
For j AsInteger = 0 To MyTable.Rows.Count - 1
Dim DR As DataRow = Destination.NewRow
For k AsInteger = 0 To Destination.Columns.Count - 1
DR.Item(k) = MyTable.Rows(j).Item(SI + k)
Next
Destination.Rows.Add(DR)
Next
Me.DataGridView1.DataSource = DS
Me.DataGridView1.DataMember = "Dewstination"
EndSub


امیدوارم درست متوجه شده باشم

bahar2008
چهارشنبه 22 اسفند 1386, 18:57 عصر
نه دوست عزیز من دو تا data table درست کردم به نامهای sal1 و sal2 که درون هر کدوم از اینها اعداد 81 تا 90 قرار داره که هر کدوم از کمبوباکس هامو به یکی از این دیتا تیبل ها وصل کردم آخه وقتی هر دو رو به یک دیتا تیبل وصل کردم وقتی کمبو باکس اول رو 85 انتخاب می کردم کمبوباکس دومی هم 85 انتخای می شد به صورت خودکار برای همین مجبور شدم که برای هر کمبو باکس یک data table جدا درست کنم

bahar2008
شنبه 25 اسفند 1386, 08:40 صبح
می شه لطفا برای این 2 تا کمبوباکس و یک دیتا گرید که قرار هست ستون های دیتا گرید با بازه کمبوباکس ها پر بشه کدی رو بنویسید؟

من خودم هر چی سعی کردم نتونستم جواب بگیرم از کدهای نوشته شده خودم :عصبانی++:
دوستان اگر ممکنه کمکم کنید :گریه: :گریه:

Dariuosh
شنبه 25 اسفند 1386, 09:03 صبح
نه دوست عزیز من دو تا data table درست کردم به نامهای sal1 و sal2 که درون هر کدوم از اینها اعداد 81 تا 90 قرار داره که هر کدوم از کمبوباکس هامو به یکی از این دیتا تیبل ها وصل کردم آخه وقتی هر دو رو به یک دیتا تیبل وصل کردم وقتی کمبو باکس اول رو 85 انتخاب می کردم کمبوباکس دومی هم 85 انتخای می شد به صورت خودکار برای همین مجبور شدم که برای هر کمبو باکس یک data table جدا درست کنم

خوب وقتی اعداد کمبوهات ثابتاً و محدود که دیگه دلیلی نداره اونا رو به دیتاتیبل وصل کنی :متفکر:

bahar2008
یک شنبه 26 اسفند 1386, 10:08 صبح
دلیلش این هست که می خوام وقتی اطلاعات وارد شد در سال مورد نظر خودش در بانک ثبت بشه تا برای بعدا که خواستم اطلاعات رو بازیابی کنم به راحتی از روی سالی که در بانک ذخیره شده بازیابی بشه

این راه حل برای بازیابی اطلاعات به نظر خودم رسید اگر شما دستان عزیز راه بهتری سراغ دارید لطفا راهنماییم کنید .

ممنونم از کدی که گذاشتی رضای عزیز ولی این کد جوابی رو که من می خواستم رو نداد :ناراحت:
من هر کاری کردم نتونستم بازه های کمبو باکس رو به دیتا گریدم بشناسونم .....آخه چه کدی باید بنویسم؟ :گریه: :گریه:

Dariuosh
یک شنبه 26 اسفند 1386, 10:45 صبح
میشه شما کدی رو که برای پر کردنه گرید ازش استفاده میکنی بزاری تا اگه تونستم برات تغییرش بدم

bahar2008
یک شنبه 26 اسفند 1386, 12:12 عصر
این کدی هست که من استفاده کردم که البته جواب درستی نمی ده



Me.DadeTableAdapter.Fill(Me.ProjectDataSet2.dade)
'TODO: This line of code loads data into the 'ProjectDataSet2.sal1' table. You can move, or remove it, as needed.
Me.Sal1TableAdapter.Fill(Me.ProjectDataSet2.sal1)
With Me.DataGridView1
For i As Int16 = 1 To Me.Sal1BindingSource.Count
.Columns.Add(New System.Windows.Forms.DataGridViewTextBoxColumn)
.Columns(i).Name = "sal" & i
.Columns.Item(i).HeaderText = Me.ComboBox2.ValueMember
Me.SetandeBindingSource.MoveNext()
Next
For i As Int16 = 0 To Me.DadeBindingSource.Count - 1
.Rows.Add()
.Rows(i).Cells(0).Value = Me.DadeBindingSource.Current.row.itemarray(1)
Me.DadeBindingSource.MoveNext()
Next
End With
'TODO: This line of code loads data into the 'ProjectDataSet2.sal2' table. You can move, or remove it, as needed.
Me.Sal2TableAdapter.Fill(Me.ProjectDataSet2.sal2)

Dariuosh
یک شنبه 26 اسفند 1386, 14:13 عصر
این مدل برنامه نویسی در کل خوب نیست ولی با این حال