我有一个SQL数据库,其中包含[ServiceDate],[CLID],[Reading],[DueAmt],[PaidAmt],[Balance]和[Status]字段。我们的想法是选择过去4个月未支付的帐户,并使用VB.Net(VS18 IDE)将结果输出到Listivew控件。我需要有关如何使用VB.Net在Visual Studio IDE中编写此查询的示例或参考的帮助。
我访问的大多数其他平台都没有提供足够的解释性说明和代码来获取我应该做的事情并从中学习。另外,我希望将Listview控件中ServiceDate的列格式化为short date,DueAmt,PaidAmt和Balance to Currency。
我将不胜感激任何帮助 谢谢。
答案 0 :(得分:1)
我假设SQL Server,[ServiceDate]作为数据库中的DataTime而[Balance]作为数据库中的某种数字。
Private Function GetOldAccounts() As DataTable
Dim dt As New DataTable
Using cn As New SqlConnection("Your connection string")
Using cmd As New SqlCommand("Select * From YourTable Where [ServiceDate] < @d AND [Balance] > 0")
cmd.Parameters.Add("@d", SqlDbType.DateTime).Value = DateTime.Now.AddMonths(-4)
cn.Open()
Using dr As SqlDataReader = cmd.ExecuteReader
If dr.HasRows Then
dt.Load(dr)
Else
Return Nothing
End If
End Using
End Using
End Using
Return dt
End Function
我以为你能找到如何从DataTable中填充ListView。 ListViews显示一个文本属性,它是一个字符串。如果需要键入的列,请查看可轻松绑定到DataTable的DataGridView。
Private Sub FillListView()
Dim dt As DataTable = GetOldAccounts()
lv.Items.Clear()
Dim lstAccounts As New List(Of ListViewItem)
lv.BeginUpdate() 'keeps the control from repaintinng on every iteration
For Each r As DataRow In dt.Rows
Dim li As New ListViewItem()
li.Text = CDate(r("ServiceDate")).ToShortDateString
li.SubItems.Add(r("CLID").ToString)
li.SubItems.Add(r("Reading").ToString)
li.SubItems.Add(r("DueAmt").ToString)
li.SubItems.Add(CDec(r("PaidAmt")).ToString("N2"))
li.SubItems.Add(CDec(r("Balance")).ToString("C")) 'Will include the $
li.SubItems.Add(r("Status").ToString)
Dim i As Integer
Dim s As String = i.ToString("C")
lstAccounts.Add(li)
Next
lv.BeginUpdate() 'keeps the control from repaintinng on every addition
lv.Items.AddRange(lstAccounts.ToArray)
lv.EndUpdate()
End Sub