استفسار :- فرز البيانات على حسب السنوات - dubai.eig - 05-07-18
السلام عليكم ورحمة الله
عندي قاعدة البيانات
الخاص بالاعضاء
في اعضاء مسجلين في عام 2006 و 2016 و 2017 و 2018 كمثال
اريد عند العرض اعرض السجل على حسب السنه
ComboBox
تيبل التاريخ متكون من
2004/10/31
2018/01/11
كود :
Dim com As String = String.Format("select id,CAL ,date ,timek FROM DB{0} order by date DESC , timek desc", strcallbk)
Using Adpt As New SQLiteDataAdapter(com, con)
Dim ds As New DataSet()
Adpt.Fill(ds, String.Format("DB{0}", strcallbk))
DataGridView1.DataSource = ds.Tables(String.Format("DB{0}", strcallbk)).DefaultView
End Using
With DataGridView1
.RowHeadersVisible = False
.Columns(0).Visible = False
.Columns(1).HeaderCell.Value = "Call Sign"
.Columns(2).HeaderCell.Value = "Date"
.Columns(3).HeaderCell.Value = "Time"
End With
اتمنى الفكره وصلت بارك الله فيكم
RE: استفسار :- فرز البيانات على حسب السنوات - elgokr - 05-07-18
لم تصل الفكرة بعد اخى الحبيب
هل ما تقصده انك تريد عرض السنوات فقط من عمود التاريخ
فقط الكود التالى كمثال لكيفية عرض التاريخ...
كود :
' ضح قئمة الاستعلام لعمود التاريخ بدلاً من التاريخ
' Dim date_ As DateTime = ds(0)(date)
Dim date_ As DateTime = #05-08-2018#
' بعد ذلك استخدم التالى
' date_.Year()
تحياتى لك
RE: استفسار :- فرز البيانات على حسب السنوات - dubai.eig - 05-07-18
(05-07-18, 01:48 PM)elgokr كتب : لم تصل الفكرة بعد اخى الحبيب
هل ما تقصده انك تريد عرض السنوات فقط من عمود التاريخ
فقط الكود التالى كمثال لكيفية عرض التاريخ...
كود :
' ضح قئمة الاستعلام لعمود التاريخ بدلاً من التاريخ
' Dim date_ As DateTime = ds(0)(date)
Dim date_ As DateTime = #05-08-2018#
' بعد ذلك استخدم التالى
' date_.Year()
تحياتى لك
تسلم على الرد استاذي الكريم
لا المقصود اني اطلع فقط المعلومات المدخله والتي في عام 2018 او 2017
مثلا
في القاعدة التيبل الخاص بالتاريخ
date
2018/01/11
2017/01/11
2018/01/11
2014/01/11
2018/01/11
[attachment=18728]
اانا اطلب اضهار فقط البيانات المدخله بسنه 2018
كمثال
select id,CAL ,date ,timek FROM DB{0} order by date 2018 DESC
وطبعا تغيير السنه عن طريق
ComboBox
موجود في الفورم
RE: استفسار :- فرز البيانات على حسب السنوات - elgokr - 05-07-18
فى هذه الحالة
ستجعل كود الاستعلام بهذا الشكل
كود :
"SELECT * FROM nametable WHERE date Like '%" & ComboBox1.Text & "%'"
كود الاستعلام كمثال
قم بالتعديل على المسميات
وحيث ان ComboBox ستكون قائمة تحتوى على ارقام السنوات
تحياتى لك
وتمنياتى لك التوفيق
RE: استفسار :- فرز البيانات على حسب السنوات - سعود - 05-07-18
شوف اخي الكريم لا اريد الاستفسار لكن اذكرك بالطريقة التالية لاستخلاص السنة من التاريخ الطويل
PHP كود :
TextBox2.Text = CDate(TextBox1.Text).Year
بعد ان تحصل على التواريخ من الجدول طبق الكود cdate(7/5/2017).year
PHP كود :
Public Class Form1 Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb" Dim con As OleDb.OleDbConnection Dim da As OleDb.OleDbDataAdapter Dim cm As OleDb.OleDbCommandBuilder Dim dta As DataTable Dim all_date As New List(Of String) Private Sub gd() con = New OleDb.OleDbConnection(str) Dim sql As String = "select * from tb" da = New OleDb.OleDbDataAdapter(sql, con) cm = New OleDb.OleDbCommandBuilder(da) dta = New DataTable da.Fill(dta) If dta.Rows.Count > 0 Then For r As Integer = 0 To dta.Rows.Count - 1 Dim yr As String = CDate(dta.Rows(r).Item(2)).Year all_date.Add(yr) Next End If End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim row As DataRow = dta.NewRow row(1) = tname.Text row(2) = CDate(tdate.Text).ToShortDateString dta.Rows.Add(row) da.Update(dta) d.Refresh() End Sub
Private Sub c_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles c.SelectedIndexChanged If c.Items.Count = 0 Then Exit Sub d.Rows.Clear() For r As Integer = 0 To all_date.Count - 1 Dim rowdate As String = all_date(r) If rowdate = c.Text Then d.Rows.Add(dta.Rows(r)(1), CDate(dta.Rows(r)(2)).ToShortDateString) End If Next End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load gd() End Sub End Class
الكومبوبكس عباته يدويا اثناء التصميم
2008
2015
2017
و هكذا
المثال لكي يتضح المقال
RE: استفسار :- فرز البيانات على حسب السنوات - dubai.eig - 05-07-18
(05-07-18, 02:17 PM)elgokr كتب : فى هذه الحالة
ستجعل كود الاستعلام بهذا الشكل
كود :
"SELECT * FROM nametable WHERE date Like '%" & ComboBox1.Text & "%'"
كود الاستعلام كمثال
قم بالتعديل على المسميات
وحيث ان ComboBox ستكون قائمة تحتوى على ارقام السنوات
تحياتى لك
وتمنياتى لك التوفيق
احسنت بارك الله فيك
واعتذر لاني ما عرفت اوصل الفكرة بشكل جيد
(05-07-18, 02:44 PM)سعود كتب : شوف اخي الكريم لا اريد الاستفسار لكن اذكرك بالطريقة التالية لاستخلاص السنة من التاريخ الطويل
PHP كود :
TextBox2.Text = CDate(TextBox1.Text).Year
بعد ان تحصل على التواريخ من الجدول طبق الكود cdate(7/5/2017).year
PHP كود :
Public Class Form1 Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb" Dim con As OleDb.OleDbConnection Dim da As OleDb.OleDbDataAdapter Dim cm As OleDb.OleDbCommandBuilder Dim dta As DataTable Dim all_date As New List(Of String) Private Sub gd() con = New OleDb.OleDbConnection(str) Dim sql As String = "select * from tb" da = New OleDb.OleDbDataAdapter(sql, con) cm = New OleDb.OleDbCommandBuilder(da) dta = New DataTable da.Fill(dta) If dta.Rows.Count > 0 Then For r As Integer = 0 To dta.Rows.Count - 1 Dim yr As String = CDate(dta.Rows(r).Item(2)).Year all_date.Add(yr) Next End If End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim row As DataRow = dta.NewRow row(1) = tname.Text row(2) = CDate(tdate.Text).ToShortDateString dta.Rows.Add(row) da.Update(dta) d.Refresh() End Sub
Private Sub c_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles c.SelectedIndexChanged If c.Items.Count = 0 Then Exit Sub d.Rows.Clear() For r As Integer = 0 To all_date.Count - 1 Dim rowdate As String = all_date(r) If rowdate = c.Text Then d.Rows.Add(dta.Rows(r)(1), CDate(dta.Rows(r)(2)).ToShortDateString) End If Next End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load gd() End Sub End Class
الكومبوبكس عباته يدويا اثناء التصميم
2008
2015
2017
و هكذا
المثال لكي يتضح المقال
احسنت بارك الله فيك
الكود يعمل بشكل جيد وهو المطلوب
ط
بس هناك تغيير صغير
انا اعمل على
ListView والكود الخاص بك ب DataGridView
وهذا الكود الخاص بي
كود :
Sub fill()
Dim con As New SQLiteConnection(String.Format("Data Source= C:\DB{0}.s3db", strbk))
lst1.FullRowSelect = True
Me.lbl_start.Text = "0 / 0"
Dim da As New SQLiteDataAdapter("SELECT (SELECT COUNT(*) FROM [DB" & strbk & "] t WHERE [DB" & strbk & "].id >= t.id) AS [Serial], * FROM [DB" & strbk & "] ", con)
lst1.Items.Clear()
dt.Clear()
If da.Fill(dt) > 0 Then
totalpages = Math.Ceiling(dt.Rows.Count / perpage)
viewpage(page)
End If
End Sub
Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
fill()
Application.DoEvents()
End Sub
محتاج لمسه منك ليضبط بارك الله فيك
وشكرا عل مجهودك
RE: استفسار :- فرز البيانات على حسب السنوات - سعود - 05-07-18
إقتباس :محتاج لمسه منك ليضبط بارك الله فيك
وشكرا عل مجهودك
عاد لو تدري ان الـListview ما اعرفها
و مادام الفكرة وصلت فالحمدلله والحمدلله على كل حال.
ان شاء الله ان الاخوان يساعدون بهذا الخصوص.
RE: استفسار :- فرز البيانات على حسب السنوات - dubai.eig - 05-07-18
(05-07-18, 07:52 PM)سعود كتب : إقتباس :محتاج لمسه منك ليضبط بارك الله فيك
وشكرا عل مجهودك
عاد لو تدري ان الـListview ما اعرفها
و مادام الفكرة وصلت فالحمدلله والحمدلله على كل حال.
ان شاء الله ان الاخوان يساعدون بهذا الخصوص.
ههههه تسلم انا قاعد احاول وان شاءالله يضبط او احصل حد يكمل ويساعدني
على العموم مجهودك على عيني وراسي تسلم والله
RE: استفسار :- فرز البيانات على حسب السنوات - elgokr - 05-07-18
الان انا اصبحت فى توهان لا اعلم
اين انت متوقف وماذا تريد بضبط
بناءا على ما فهمته مسبقاً قمت بالرد عليه
بكل طريقة فد فهمت فيها ما تريده
فاذا كلا من الردود السابقة ليست الحل
فوضح ما تريده تماماً حتى اقوم بكتابة الكود طبقاً لما تريد
تحياتى لك
RE: استفسار :- فرز البيانات على حسب السنوات - dubai.eig - 06-07-18
(05-07-18, 10:32 PM)elgokr كتب : الان انا اصبحت فى توهان لا اعلم
اين انت متوقف وماذا تريد بضبط
بناءا على ما فهمته مسبقاً قمت بالرد عليه
بكل طريقة فد فهمت فيها ما تريده
فاذا كلا من الردود السابقة ليست الحل
فوضح ما تريده تماماً حتى اقوم بكتابة الكود طبقاً لما تريد
تحياتى لك
مرحبا
الموضوع الان الكود الخاص بالاخ والاستاذ سعود شغال تمام بس شغال على
DataGridView
وانا الكود الخاص بي يعتمد على
الـListview
محتاج تعديل في الكود فقط
هذا كود الاستاذ سعود
كود :
Public Class Form1
Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb"
Dim con As OleDb.OleDbConnection
Dim da As OleDb.OleDbDataAdapter
Dim cm As OleDb.OleDbCommandBuilder
Dim dta As DataTable
Dim all_date As New List(Of String)
Private Sub gd()
con = New OleDb.OleDbConnection(str)
Dim sql As String = "select * from tb"
da = New OleDb.OleDbDataAdapter(sql, con)
cm = New OleDb.OleDbCommandBuilder(da)
dta = New DataTable
da.Fill(dta)
If dta.Rows.Count > 0 Then
For r As Integer = 0 To dta.Rows.Count - 1
Dim yr As String = CDate(dta.Rows(r).Item(2)).Year
all_date.Add(yr)
Next
End If
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim row As DataRow = dta.NewRow
row(1) = tname.Text
row(2) = CDate(tdate.Text).ToShortDateString
dta.Rows.Add(row)
da.Update(dta)
d.Refresh()
End Sub
Private Sub c_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles c.SelectedIndexChanged
If c.Items.Count = 0 Then Exit Sub
d.Rows.Clear()
For r As Integer = 0 To all_date.Count - 1
Dim rowdate As String = all_date(r)
If rowdate = c.Text Then
d.Rows.Add(dta.Rows(r)(1), CDate(dta.Rows(r)(2)).ToShortDateString)
End If
Next
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
gd()
End Sub
End Class
وهذا الكود الخاص بي
كود :
Public Class Form1
Sub fill()
Dim con As New SQLiteConnection(String.Format("Data Source= C:\DB{0}.s3db", strbk))
lst1.FullRowSelect = True
Me.lbl_start.Text = "0 / 0"
Dim da As New SQLiteDataAdapter("SELECT (SELECT COUNT(*) FROM [DB" & strbk & "] t WHERE [DB" & strbk & "].id >= t.id) AS [Serial], * FROM [DB" & strbk & "] ", con)
lst1.Items.Clear()
dt.Clear()
If da.Fill(dt) > 0 Then
totalpages = Math.Ceiling(dt.Rows.Count / perpage)
viewpage(page)
End If
End Sub
Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
fill()
Application.DoEvents()
End Sub
End Class
|