【问题标题】:Argument 'Prompt' cannot be converted to type 'String' :AutoIncrement Customer ID参数“提示”无法转换为类型“字符串”:AutoIncrement 客户 ID
【发布时间】:2016-02-01 05:34:04
【问题描述】:

我有一个名为 customer 的表,其中有两个名为 cust_ID 和 Temp_ID 的列。 Temp_ID 是一个整数。我想要一个串联的 ID 作为 cust_ID。

我有以下函数来获取 temp_id 的最大值并将其递增 1。

Private Function Tempo()

    Try
        con.Open()
        cmd.Connection = con
        cmd.CommandText = ("Select MAX(Temp_ID) From Customer")
        cmd.ExecuteNonQuery()
        Dim sqlRead As SqlDataReader = cmd.ExecuteReader()
        Temp1 = sqlRead.Item("Temp_ID")
        Temp1 = Temp1 + 1
    Catch ex As Exception
        MsgBox(ex)
    End Try
    Return True
End Function

我在 vb.net 客户界面中有客户 ID 文本框的点击事件。

 Private Sub txtBoxCustProfileID_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtBoxCustProfileID.Click
    Tempo()
    Dim x = Temp1
    Dim newID = String.Concat("C/", cmbNationality.Text, "/", Now.Year, "/", x)
    txtBoxCustProfileID.Text = newID
End Sub

当我运行此代码时,我在 Tempo 函数中收到以下错误消息,因为“参数'提示'无法转换为类型'字符串'”我真的不明白这意味着什么,我也是编程新手。 请帮忙。

【问题讨论】:

  • 开启选项严格; 您的代码 递增的 ID 不是 AutoIncrement ID。将 6 位信息粘合在一起形成一个 ID 是糟糕的设计。去掉 Try/Catch,你至少会知道是哪一行导致了错误
  • @Farhan Anam : Temp1 = sqlRead.Item("Temp_ID") 行

标签: sql-server vb.net auto-increment


【解决方案1】:

您目前没有从您的 sql 查询中获得名为 Temp_ID 的列。

你需要改变这个:

cmd.CommandText = ("Select MAX(Temp_ID) From Customer")

到这里:

cmd.CommandText = ("Select MAX(Temp_ID) AS Temp_ID From Customer")

也去掉这一行:

cmd.ExecuteNonQuery()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多