Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 列名“allocationStart”无效_Asp.net_Sql - Fatal编程技术网

Asp.net 列名“allocationStart”无效

Asp.net 列名“allocationStart”无效,asp.net,sql,Asp.net,Sql,无论出于何种原因,在尝试执行查询时,我都会遇到错误Invalid column name allocationStart。这在dateadd函数中,该列确实存在于数据库中。这是约会时间 以下是查询: cmd.commandText = "Insert Into EmpPac (catalogIdent, empPacIdent, empIdent, allocation, quantityLimit, qu

无论出于何种原因,在尝试执行查询时,我都会遇到错误Invalid column name allocationStart。这在dateadd函数中,该列确实存在于数据库中。这是约会时间

以下是查询:

cmd.commandText = "Insert Into EmpPac 
                     (catalogIdent, empPacIdent, empIdent, allocation, 
                      quantityLimit, quantityIssued, quantityShipped, 
                      allocationMonths, sizeChartIdent, sizeNotes, nextUpdate)
                     values ( '" & catalogIdent & "', '" & intvalue_EmpPak 
                      & "', '" & empIdent & "',"&jobQuantityLimit&",'"
                      &jobQuantityLimit&"', '0', '0',"&
                      allocationMonths&", '"& sizeChartident & 
                      "', '', DATEADD(month, "&allocationMonths&
                      ", allocationStart))"
cmd.execute
您没有指定allocationstart所在的表

您需要使INSERT源成为源表中的SELECT,而不是使用VALUES关键字,因为这需要一个显式值列表

例如:

INSERT INTO MyTargetTable
SELECT <stuff>, DATEADD(month, XXX, allocationstart)
FROM MySourceDataTable

老实说,我不是百分之百地理解你的问题,但是我想我理解你想做什么

原始错误源自DATEADD命令

DATEADD的第三个参数是要操作的datetime值

我猜您的allocationStart列会在DB中自动设置当前日期时间,并将该列传递给DATEADD函数以对其进行操作,并将返回值插入nextUpdate列。如果您正试图这样做,则在提交行之前,auto datetime列将无法设置为返回日期/时间等,因此您不能从INSERT语句中使用函数中的auto=生成列

我还强烈建议你看看准材料,它更安全,更好的做法


如果您在nextUpdate列的月数之后,可以使用DateTime.Now.month并将其附加到SQL字符串中。

首先,您的查询在Management studio中有效吗?然后,使用SqlParameter而不是字符串cacatenation,因为很多原因,特别是你不必处理参数类型,而且你可以避免Sql注入攻击。你确定这是ASP.NET而不是经典的ASP吗?你真的需要查找数据库的排序规则吗?顺便说一下,insert语句的VALUES部分不允许使用列名。有效表达式是常量、常量表达式,在某些上下文中是变量