2016-04-25 193 views
0

在找出造成错误的原因时遇到了一些麻烦。我已经包含代码,错误和当我查看表约束选项卡时看到的内容。我一直在网上搜索和尝试建议,但没有任何工作。我不确定我做错了什么,所以希望有人能帮助我一点点努力,或者指引我走向正确的方向。谢谢。违反约束?

enter image description here

 STSQL = "insert into mpcs.shop_inv_orders" 
     STSQL = STSQL & " (" 
     STSQL = STSQL & "ORDER_ID," 
     STSQL = STSQL & "ORDER_ITEM_NO," 
     STSQL = STSQL & "INV_TYPE," 
     STSQL = STSQL & "MTI_PART_NO," 
     STSQL = STSQL & "DATE_ORDERED," 
     STSQL = STSQL & "DATE_REQUIRED," 
     STSQL = STSQL & "QUANTITY," 
     STSQL = STSQL & "EMPLOYEE_ID," 
     STSQL = STSQL & "MACHINE_ID," 
     STSQL = STSQL & "COMMENTS," 
     STSQL = STSQL & "JOB_NO," 
     STSQL = STSQL & "PROCESS_PLAN_ID," 
     'STSQL = STSQL & "ACCOUNT_NO" 
     STSQL = STSQL & "DESTINATION," 
     STSQL = STSQL & "COMPLETED," 
     STSQL = STSQL & "REQUEST_NO" 
     STSQL = STSQL & ") values (" 

     STSQL = STSQL & "'" & UCase(varOrderID) & "'," 'ORDER_ID 
     STSQL = STSQL & "'" & UCase(Item) & "'," 'ORDER_ITEM_NO 
     STSQL = STSQL & "'" & UCase(InvType) & "'," 'INV_TYPE 
     STSQL = STSQL & "'" & UCase(Mtipartno) & "'," 'MTI_PART_NO 

     STSQL = STSQL & "to_date(to_char(sysdate,'DD-MON-YYYY HH:MI:SS PM'),'DD-MON-YYYY HH:MI:SS PM')," 'DATE_ORDERED 
     STSQL = STSQL & "to_date('" & Format(dateneed.Value, "dd-MMMM-yyyy") & "','DD-MON-YYYY')," 'DATE_REQUIRED 

     STSQL = STSQL & "'" & UCase(Quantity) & "'," 'QUANTITY 
     STSQL = STSQL & "'" & UCase(cboEmployee.SelectedValue) & "'," 'EMPLOYEE_ID 
     STSQL = STSQL & "'" & UCase(MachID) & "'," 'MACHINE_ID 
     STSQL = STSQL & "'" & UCase(TextBox2.Text) & "'," 'COMMENTS 
     STSQL = STSQL & "'" & UCase(Jobno) & "'," 'JOB_NO 
     STSQL = STSQL & "'" & UCase(ProcPlanID) & "'," 'PROCESS_PLAN_ID 
     'STSQL = STSQL & "'" & UCase(AcctNo) & "'," 'ACCOUNT_NO 
     STSQL = STSQL & "'" & UCase(ComboBox2.SelectedText) & "'," 'DESTINATION 
     STSQL = STSQL & "'" & 0 & "'," 'COMPLETED 
     STSQL = STSQL & "'" & UCase(ReqNo) & "'" 'REQUEST_NO 
     STSQL = STSQL & ")" 

enter image description here

+1

您正试图插入已存在于您表中的ORDER_ID。 – jarlh

+0

我看起来并没有。我用下一个可用。 – Lee

+0

不,你一定要插入相同的(ORDER_ID + ORDER_ITEM_NO组合)。这可能意味着您获取下一个数字的算法被破坏,或者您在并发场景中运行,其中多个用户同时添加订单,或者您处于隐藏正在进行的订单的事务隔离级别来自您的查询,或者某人按顺序添加了订单ID,或者...查看您的数据。看看你想要插入的钥匙。有一个启示。 – Luaan

回答

0

试试这个,ORDER_ID是主键,所以不能手动添加,

STSQL = "insert into mpcs.shop_inv_orders" 
STSQL = STSQL & " ("   
STSQL = STSQL & "ORDER_ITEM_NO," 
STSQL = STSQL & "INV_TYPE," 
STSQL = STSQL & "MTI_PART_NO," 
STSQL = STSQL & "DATE_ORDERED," 
STSQL = STSQL & "DATE_REQUIRED," 
STSQL = STSQL & "QUANTITY," 
STSQL = STSQL & "EMPLOYEE_ID," 
STSQL = STSQL & "MACHINE_ID," 
STSQL = STSQL & "COMMENTS," 
STSQL = STSQL & "JOB_NO," 
STSQL = STSQL & "PROCESS_PLAN_ID," 
'STSQL = STSQL & "ACCOUNT_NO" 
STSQL = STSQL & "DESTINATION," 
STSQL = STSQL & "COMPLETED," 
STSQL = STSQL & "REQUEST_NO" 
STSQL = STSQL & ") values (" 

STSQL = STSQL & "'" & UCase(Item) & "'," 'ORDER_ITEM_NO 
STSQL = STSQL & "'" & UCase(InvType) & "'," 'INV_TYPE 
STSQL = STSQL & "'" & UCase(Mtipartno) & "'," 'MTI_PART_NO 

STSQL = STSQL & "to_date(to_char(sysdate,'DD-MON-YYYY HH:MI:SS PM'),'DD-MON-YYYY HH:MI:SS PM')," 'DATE_ORDERED 
STSQL = STSQL & "to_date('" & Format(dateneed.Value, "dd-MMMM-yyyy") & "','DD-MON-YYYY')," 'DATE_REQUIRED 

STSQL = STSQL & "'" & UCase(Quantity) & "'," 'QUANTITY 
STSQL = STSQL & "'" & UCase(cboEmployee.SelectedValue) & "'," 'EMPLOYEE_ID 
STSQL = STSQL & "'" & UCase(MachID) & "'," 'MACHINE_ID 
STSQL = STSQL & "'" & UCase(TextBox2.Text) & "'," 'COMMENTS 
STSQL = STSQL & "'" & UCase(Jobno) & "'," 'JOB_NO 
STSQL = STSQL & "'" & UCase(ProcPlanID) & "'," 'PROCESS_PLAN_ID 
'STSQL = STSQL & "'" & UCase(AcctNo) & "'," 'ACCOUNT_NO 
STSQL = STSQL & "'" & UCase(ComboBox2.SelectedText) & "'," 'DESTINATION 
STSQL = STSQL & "'" & 0 & "'," 'COMPLETED 
STSQL = STSQL & "'" & UCase(ReqNo) & "'" 'REQUEST_NO 
+0

我得到的错误是我无法将NULL插入到ORDER_ID中,所以我应该提供它。我插入下一个可用的order_id它未使用。 – Lee

+0

你使用MS ACCESS吗? –

+0

不,这是甲骨文。 – Lee

0

原来我被赋予了错误的数据库信息工作。我正在查看2个不同的来源。所以,每个人都是对的。感谢大家的帮助,它确实导致我在其他地方探索发现这一点。

+0

很高兴知道你解决了这个问题,但你还应该阅读如何建立准备使用参数等的语句。您创建SQL的方式容易受到恶意攻击,数据问题和性能问题的困扰。 – LoztInSpace