【发布时间】:2020-12-22 12:11:46
【问题描述】:
我有一个 ASP.NET 表单,它有两个文本框和一个标签,用户只在最后一个文本框中输入到期日期,而如果用户点击客户所在的转发器内的另一个按钮,其他的会自动插入找到代码和公司名称。
问题是我创建了一个类来进行插入:我使用存储过程进行插入,并使用查询参数化。
当我解析代码和日期时,它会给我 0 和一个默认日期,而我的目标是将它们插入到数据库中的表中,然后将其显示在中继器中。
附:我补充说,为了读取数据,我有另一个类和另一个存储过程,并且我有一些值在另一个表中(代码和公司名称)。
这是方法:
Public Sub INSERT_EXP_DATE_TABLE()
Dim id_customer As Integer
Dim exp_date As Date
Try
cmd.Connection = cn
cmd.CommandType = CommandType.StoredProcedure
MyParm = cmd.Parameters.Add("@COD_CUSTOMER", SqlDbType.Int)
If (Integer.TryParse(txt_COD_CUSTOMER.Text, id_customer)) Then
MyParm.Value = id_customer
Else
MsgBox("customer not found", vbCritical)
End If
MyParm = cmd.Parameters.Add("@COMPANY_NAME", SqlDbType.NVarChar)
MyParm.Value = lbl_COMPANY_NAME.Text.ToString
MyParm = cmd.Parameters.Add("@EXP_DATE", SqlDbType.Date)
If (Date.TryParse(txt_EXP_DATE.Text, exp_date)) Then
MyParm.Value = exp_date
Else
MsgBox("Exp Date not found", vbCritical)
End If
cmd.CommandText = "LST_INSERT_TABLE_01"
cmd.Connection.Open()
cmd.ExecuteNonQuery()
MsgBox("Date registred", vbInformation)
Catch ex As Exception
MsgBox(ex.Message)
Finally
cn.Close()
End Try
End Sub
这是存储过程:
@ID_CUSTOMER int,
@COMPANY_NAME varchar(50),
@EXP_DATE date,
AS
BEGIN
INSERT INTO TABLE
(
ID_CUSTOMER,
COMPANY_NAME,
EXP_DATE,
)
VALUES(
@ID_CUSTOMER,
@COMPANY_NAME,
@EXP_DATE,
)
END
【问题讨论】:
-
您看到任何错误吗?
-
它说“没有从字符串“”转换为“日期”类型
-
您将日期传递为空
MyParm = cmd.Parameters.Add("@EXP_DATE", SqlDbType.Date); MyParm.Value = exp_date -
正确的程序是什么?我尝试了不同的解析,例如日期的 Tryparse 和 TryparseExact 以及整数的 Cint。好像没有读取其他字段的值,如果前两个字段来自另一个表,可能是存储过程的问题?
-
试试这个
cmd.Parameters.AddWithValue("@EXP_DATE", exp_date); cmd.Parameters.AddWithValue("@COD_CUSTOMER", id_customer); cmd.Parameters.AddWithValue("@COMPANY_NAME", lbl_COMPANY_NAME.Text.ToString);
标签: asp.net sql-server vb.net