locked
Auto Update DataGridView Berdasarkan Tanggal (Today) / Setiap Hari RRS feed

  • 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 . Thanks
    Jumat, 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 waktu

    http://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


    Selasa, 07 Januari 2014 07.17
    Moderator

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 waktu

    http://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


    Selasa, 07 Januari 2014 07.17
    Moderator
  • 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