Penjawab teratas
Auto Update DataGridView Berdasarkan Tanggal (Today) / Setiap Hari

Pertanyaan
-
permisi para suhu, para programmer handal , saya mempunyai suatu permasalahan sampai saat ini belum terpecahkan.
Jadi, Saya memiliki data yang tersimpan pada Ms.Access, kemudian data tersebut saya tampilkan pada DataGridView, permasalahannya, Bagaimana agar data saya dapat terupdate otomatis berdasarkan tanggal pada komputer saya (Today)
Saya membuat program yang memiliki field : Tanggal_Contract, Dateline, Sisa_Waktu , priority
Jadi bagaimana, agar sisa waktu tersebut dapat berkurang secara otomatis berdasarkan tanggal pada komputer dan prioritinya juga semakin berkurang ??
Saya sudah menemukan flowchartnya, namun kodingnya belum ada yang cocok .
Mohon bantuannya para suhu, para programmer skalian . ThanksJumat, 03 Januari 2014 08.28
Jawaban
-
Hi Rengga Dinata
Selamat datang di Forum MSDN
Saya sarankan jangan simpan sisa waktu dan priority di dalam database,
kita bisa hitung sisa waktu dan priority hanya jika kita membutuhkannya, jadi kita tidak perlu update secara otomatis
Kita bisa melakukannya dengan metode berikut
1. Menggunakan DateDiff Function - Access - Office.com untuk mendapatkan sisa waktuhttp://office.microsoft.com/en-us/access-help/datediff-function-HA001228811.aspx
2. dapatkan priority bedasarkan sisa waktu
Saya ganti sisa waktu menjadi Remaining_Time
Dan saya kategorikan priority menjadi 3 bagian
Low = lebih dari 7 hari
Normal = 3 ke 7 hari
Urgent = dibawah 3 hari
Overdue = lebih dari deadline
Contoh kode:
Public Class Form1 Dim connectionStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""E:\SQL\RemainingTimeDB.accdb"";Persist Security Info=False;" Private connection As OleDb.OleDbConnection Dim dt As New DataTable Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Using connection = New OleDb.OleDbConnection(connectionStr) Dim adapter As New OleDb.OleDbDataAdapter("SELECT Date_Contract,datediff(""d"",date(),Deadline) as Remaining_Time FROM ContractTime", connection) adapter.Fill(dt) End Using dt.Columns.Add("Priority") For index = 0 To dt.Rows.Count - 1 Dim intRMday = CInt(dt.Rows(index)("Remaining_Time")) If intRMday > 7 Then dt.Rows(index)("Priority") = "Low" ElseIf intRMday >= 3 Then dt.Rows(index)("Priority") = "Normal" ElseIf intRMday > 0 Then dt.Rows(index)("Priority") = "Urgent" Else dt.Rows(index)("Priority") = "Overdue" End If Next DataGridView1.DataSource = dt Catch ex As Exception MsgBox(ex.ToString()) End Try End Sub End Class
Semoga membantu dan selamat belajar
Terima kasih
Andy Nugraha
TechNet Community Support
- Disarankan sebagai Jawaban oleh Andy NugrahaModerator Selasa, 07 Januari 2014 07.17
- Diedit oleh Andy NugrahaModerator Selasa, 07 Januari 2014 07.24 tambahan link
- Ditandai sebagai Jawaban oleh Andy NugrahaModerator Jumat, 10 Januari 2014 02.20
Selasa, 07 Januari 2014 07.17Moderator
Semua Balasan
-
Hi Rengga Dinata
Selamat datang di Forum MSDN
Saya sarankan jangan simpan sisa waktu dan priority di dalam database,
kita bisa hitung sisa waktu dan priority hanya jika kita membutuhkannya, jadi kita tidak perlu update secara otomatis
Kita bisa melakukannya dengan metode berikut
1. Menggunakan DateDiff Function - Access - Office.com untuk mendapatkan sisa waktuhttp://office.microsoft.com/en-us/access-help/datediff-function-HA001228811.aspx
2. dapatkan priority bedasarkan sisa waktu
Saya ganti sisa waktu menjadi Remaining_Time
Dan saya kategorikan priority menjadi 3 bagian
Low = lebih dari 7 hari
Normal = 3 ke 7 hari
Urgent = dibawah 3 hari
Overdue = lebih dari deadline
Contoh kode:
Public Class Form1 Dim connectionStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""E:\SQL\RemainingTimeDB.accdb"";Persist Security Info=False;" Private connection As OleDb.OleDbConnection Dim dt As New DataTable Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Using connection = New OleDb.OleDbConnection(connectionStr) Dim adapter As New OleDb.OleDbDataAdapter("SELECT Date_Contract,datediff(""d"",date(),Deadline) as Remaining_Time FROM ContractTime", connection) adapter.Fill(dt) End Using dt.Columns.Add("Priority") For index = 0 To dt.Rows.Count - 1 Dim intRMday = CInt(dt.Rows(index)("Remaining_Time")) If intRMday > 7 Then dt.Rows(index)("Priority") = "Low" ElseIf intRMday >= 3 Then dt.Rows(index)("Priority") = "Normal" ElseIf intRMday > 0 Then dt.Rows(index)("Priority") = "Urgent" Else dt.Rows(index)("Priority") = "Overdue" End If Next DataGridView1.DataSource = dt Catch ex As Exception MsgBox(ex.ToString()) End Try End Sub End Class
Semoga membantu dan selamat belajar
Terima kasih
Andy Nugraha
TechNet Community Support
- Disarankan sebagai Jawaban oleh Andy NugrahaModerator Selasa, 07 Januari 2014 07.17
- Diedit oleh Andy NugrahaModerator Selasa, 07 Januari 2014 07.24 tambahan link
- Ditandai sebagai Jawaban oleh Andy NugrahaModerator Jumat, 10 Januari 2014 02.20
Selasa, 07 Januari 2014 07.17Moderator -
Terima Kasih atas jawabannya gan, tapi itu data akan digunakan untuk melihat perkembangan per hari , atau proses pekerjaan akan dilihat tanggal terakhir dan sisa waktu untuk mengerjakan pekerjaan tersebut gan. Maka sisa waktu akan count down setiap harinya. Tolong pencerahaannya gan. kalau di Ms.Excel Formulasinya saya bisa gan, tapi untuk Access gmna ??Rabu, 05 Februari 2014 11.18
-
Permisi gan, ane sudah mendapatkan formulasinya, tapi ada sedikit kendala , saya ingin menselesksi semua baris dari sebuah datagrid view , ini saya sudah membuat sebuah coding, namun hanya terdapat perubahan pada salah satu baris saja yaitu pada baris index saja, bagaimana agar semua baris dapat berubah sesuai coding yg sudah saya masukkan ??
Dim i As Integer Dim AWAL As Date = Convert.ToDateTime(Data_QTY.Rows(i).Cells(4).Value) Dim AKHIR As Date = Convert.ToDateTime(tanggal1.Text) Dim HITUNG As TimeSpan = AWAL.Subtract(AKHIR) Data_QTY.Rows(i).Cells(5).Value = FormatNumber(HITUNG.TotalDays, 0) If Data_QTY.Rows(i).Cells(5).Value <= 0 Then Data_QTY.Rows(i).Cells(6).Value = "URGENT" 'MsgBox("Tanggal sudah lewat dari batas penyelesaian, tanggal" & deadline.Text & "") ElseIf Data_QTY.Rows(i).Cells(5).Value <= 18 Then Data_QTY.Rows(i).Cells(6).Value = "1" End If If Data_QTY.Rows(i).Cells(5).Value >= 36 Then Data_QTY.Rows(i).Cells(6).Value = "2" End If If Data_QTY.Rows(i).Cells(5).Value >= 54 Then Data_QTY.Rows(i).Cells(6).Value = "3" End If If Data_QTY.Rows(i).Cells(5).Value >= 72 Then Data_QTY.Rows(i).Cells(6).Value = "4" End If If Data_QTY.Rows(i).Cells(5).Value >= 90 Then Data_QTY.Rows(i).Cells(6).Value = "5" End If End Sub
Rabu, 05 Februari 2014 16.18