VB.net / SQL 可以存储数字、逗号、小数(2位)和vbcrlf的数据类型?

Posted

技术标签:

【中文标题】VB.net / SQL 可以存储数字、逗号、小数(2位)和vbcrlf的数据类型?【英文标题】:VB.net / SQL Datatype that can store numbers, comma, decimal(2places) and vbcrlf? 【发布时间】:2015-01-16 06:00:33 【问题描述】:

我总是得到一个“字符串或二进制数据将被截断”,我已经在谷歌上搜索了答案,但我找不到与我的文本框相同的值。

在我的程序中,我有一个文本框(multiLine),其值为 number、comma、decimal(2places) 和 vbCrlf,如下所示。

1,234,567.89
      9,876,543.21

上图是我的文本框具有的值的示例。 (注意:请注意上面的数字有 2 个逗号,因为它是百万),我不知道它背后的原因是什么,但如果它只有 1 个逗号,我的代码就像

123,456.78
      987,654.32

我已将我的 vb.net 数据类型设置为字符串、十进制、双精度和对象,但我仍然遇到相同的错误。关于我的 SQL 数据类型,我已经将它设置为 varchar、nvarchar、char 但仍然得到相同的错误。这是我的代码:

*This is my CLASS code title SQLControl

Public Sub AddToJournalEntry(DrCrAmount As Object)
    Try
        Dim strInsert As String = "INSERT INTO JournalEntry (DrCrAmount) " & _
                                  "VALUES (" & _
                                  "'" & DrCrAmount & "') "
        SQLCon.Open()
        SQLCmd = New SqlCommand(strInsert, SQLCon)
        SQLCmd.ExecuteNonQuery()
        SQLCon.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

*This my code in my frmMain

Dim sql As New SQLControl

Private Sub btnGenerate_Click(sender As System.Object, e As System.EventArgs) Handles btnGenerate.Click

    Dim format1 As String = "0,-10 1,12"

    Dim Line1Amount, Line2Amount As String

    If lbl1.Text = "Dr" Then
        Line1Amount = String.Format(format1, txtAmount1.Text, vbNullString)
        Line1Amount = Line1Amount.TrimEnd(" ", vbNullString)
    ElseIf lbl1.Text = "Cr" Then
        Line1Amount = String.Format(format1, vbNullString, txtAmount1.Text)
        Line1Amount = Line1Amount.TrimEnd(" ", vbNullString)
    Else
        Line1Amount = String.Format(format1, vbNullString, vbNullString)
        Line1Amount = Line1Amount.TrimEnd(" ", vbNullString)
        lbl1.Text = vbNullString
    End If

    If lbl2.Text = "Dr" Then
        Line2Amount = String.Format(format1, txtAmount2.Text, vbNullString)
        Line2Amount = Line2Amount.TrimEnd(" ", vbNullString)
    ElseIf lbl2.Text = "Cr" Then
        Line2Amount = String.Format(format1, vbNullString, txtAmount2.Text)
        Line2Amount = Line2Amount.TrimEnd(" ", vbNullString)
    Else
        Line2Amount = String.Format(format1, vbNullString, vbNullString)
        Line2Amount = Line2Amount.TrimEnd(" ", vbNullString)
        lbl2.Text = vbNullString
    End If

    Dim myString2 As String = Line1Amount & vbCrLf & Line2Amount

    ****This code is to delete unnecessary spaces and new lines
    myString2 = myString2.TrimEnd(" ", vbNullString, Convert.ToChar(Keys.Return), Convert.ToChar(Keys.LineFeed))

    txtDrCrAmount.Text = myString2

End Sub

Private Sub btnRecord_Save_Click(sender As System.Object, e As System.EventArgs) Handles btnRecord_Save.Click

    sql.AddToJournalEntry(txtDrCrAmount.Text)

End Sub

注意:我的代码已经过编辑,为了您的方便,我已经删除了不必要的代码。

谢谢 =) 顺便说一句,我是一个新手程序员

【问题讨论】:

创建数据类型为varchar的数据库表应该没有问题。 嗨,Akhil 先生,是的,它正在工作,但问题出在上面提到的 2 逗号上。它在 1 comma.tnx 中工作正常 但同样适用于我,两个甚至三个逗号和小数点。请检查错误发生的确切位置。 您能否指定发生“stirng or binary data will be truncated”错误的值。以及sql中数据字段的长度。 感谢 akhil,我如何将您的评论标记为已回答? =) 我明白了,我的程序运行良好。 【参考方案1】:

每当你看到消息时......

string or binary data would be truncated 

自己想想……这个字段不够大,无法容纳我的数据。

检查 yourtable 的表结构。我想您会发现字段的长度不足以容纳您尝试插入的数据。例如,如果 journalentry 字段是 varchar(50) 字段,并且您尝试在其中输入 51 个字符,则会收到此错误。

【讨论】:

谢谢,我忘了检查与其他表格相关/链接的其他表格。存在长度问题,现在已解决。非常感谢

以上是关于VB.net / SQL 可以存储数字、逗号、小数(2位)和vbcrlf的数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

VB.net 转换为十进制(放置顺序)

小数的 SQL 格式,用逗号表示小数,仅用于数字

VB.Net Convert ToDecimal 不适用于逗号

vb.net怎么设置数字保留小数点位数

SQL Server 存储过程并在 VB.NET 中执行

在 VB.NET 中从 SQL Server 执行存储过程?