Vb.net 从数据库创建和填充标签
目前,我正在开发一个用户可以输入和查看评论的系统。输入部分工作正常,但是让它显示注释不起作用 我目前试图做的是,对于comments表中的每个条目,我希望系统创建一个新标签,然后用日期、用户名和用户注释填充该标签的文本 我已经附上下面的代码,任何输入或指导都将不胜感激Vb.net 从数据库创建和填充标签,vb.net,visual-studio-2010,labels,Vb.net,Visual Studio 2010,Labels,目前,我正在开发一个用户可以输入和查看评论的系统。输入部分工作正常,但是让它显示注释不起作用 我目前试图做的是,对于comments表中的每个条目,我希望系统创建一个新标签,然后用日期、用户名和用户注释填充该标签的文本 我已经附上下面的代码,任何输入或指导都将不胜感激 Try Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\IMData.mdb;") Dim
Try
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\IMData.mdb;")
Dim cmd As New OleDbCommand
con.Open()
cmd.Connection = con
cmd.CommandText = "Select * from Comments where ID=@p1"
cmd.Prepare()
cmd.Parameters.AddWithValue("@p1", TrackNum.Text)
Dim Comments = cmd.ExecuteReader
Dim labelY = 418
With Comments
.Read()
For Each item In Comments
Dim newComment As New Label
newComment.Name = item
newComment.Left = 983
newComment.Top = labelY
newComment.Font = Font
newComment.Text = .Item("Date") + " " + .Item("User") + " : " + .Item("Comment")
newComment.Visible = True
Me.Controls.Add(newComment)
labelY += 47
Next
.Close()
End With
con.Close()
Catch
End Try
这是工作代码:
Try
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\IMData.mdb;")
Dim cmd As New OleDbCommand
con.Open()
cmd.Connection = con
cmd.CommandText = "Select * from Comments where ID=@p1"
cmd.Prepare()
cmd.Parameters.AddWithValue("@p1", TrackNum.Text)
Dim Comments = cmd.ExecuteReader
With Comments
.Read()
Dim labelY = 418
For Each item In Comments
Dim newComment As New Label
newComment.Name = labelY
newComment.Top = labelY
labelY += 47
newComment.Left = 983
newComment.Font = Font
newComment.Text = item("Date") + " : " + item("User") + " : " + item("Comment")
newComment.Width = 900
newComment.Visible = True
Me.Controls.Add(newComment)
Next
.Close()
End With
con.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
这里有几个错误,因为它是在一个try,catch上没有输出,所以您没有看到问题 有关更正,请参见下面的注释:
Try
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\IMData.mdb;")
Dim cmd As New OleDbCommand
con.Open()
cmd.Connection = con
cmd.CommandText = "Select * from Comments where ID=@p1"
cmd.Prepare()
cmd.Parameters.AddWithValue("@p1", TrackNum.Text)
Dim Comments = cmd.ExecuteReader
Dim labelY = 418
With Comments
.Read()
For Each item In Comments
Dim newComment As New Label
newComment.Name = item 'this needs to be a string such as item("ID") - must be unique!'
newComment.Left = 983
newComment.Top = labelY
newComment.Font = Font
newComment.Text = .Item("Date") + " " + .Item("User") + " : " + .Item("Comment")
'these 'Item's should not have the period in front of them'
newComment.Visible = True
Me.Controls.Add(newComment)
labelY += 47
Next
.Close()
End With
con.Close()
Catch
'add in something to catch the error such as console.writeline'
End Try
不幸的是,我仍然无法让它工作。。。我已将.Name=item(“ID”)更改为labelY(因此它是唯一的,所有ID都是相同的),并删除了句点,但我无法让它仍然工作。我想捕获注释捕获的内容,以查看ExecuteReader获得的内容,但我也不知道如何使其正常工作……如果在捕获(同一行)后添加
ex As Exception
,则可以使用console.writeline(ex.tostring)或(等待反对意见…)msgbox(ex.tostring),它将向您显示错误的位置或位置(等待爆炸…)对于调试注释,请尝试,共捕获!感谢OSKM!我得到的错误是System.InvalidCastException:从字符串“Wo311110414”转换键入“Double”无效。System.FormatException:输入字符串的格式不正确。它是否指示了错误发生在哪一行?顺便说一句,如果ID为uniqueManaged以使其正常工作,则更为正常。需要定义.Width?我将在一分钟内用工作代码编辑上面的内容。