في اعضاء مسجلين في عام 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"
هل ما تقصده انك تريد عرض السنوات فقط من عمود التاريخ
فقط الكود التالى كمثال لكيفية عرض التاريخ...
كود :
' ضح قئمة الاستعلام لعمود التاريخ بدلاً من التاريخ
' Dim date_ As DateTime = ds(0)(date)
Dim date_ As DateTime = #05-08-2018#
' بعد ذلك استخدم التالى
' date_.Year()
تحياتى لك
{وَقُل رَّبِّ زِدْنِي عِلْمًا}
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
05-07-18, 01:58 PM (آخر تعديل لهذه المشاركة : 05-07-18, 01:59 PM {2} بواسطة dubai.eig.)
(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
05-07-18, 02:44 PM (آخر تعديل لهذه المشاركة : 05-07-18, 03:38 PM {2} بواسطة سعود.)
شوف اخي الكريم لا اريد الاستفسار لكن اذكرك بالطريقة التالية لاستخلاص السنة من التاريخ الطويل
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
و هكذا
المثال لكي يتضح المقال
05-07-18, 07:39 PM (آخر تعديل لهذه المشاركة : 05-07-18, 07:42 PM {2} بواسطة dubai.eig.)
(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
فوضح ما تريده تماماً حتى اقوم بكتابة الكود طبقاً لما تريد
تحياتى لك
مرحبا
الموضوع الان الكود الخاص بالاخ والاستاذ سعود شغال تمام بس شغال على 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