2016-04-25 4 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 комбо). Это может означать, что ваш алгоритм для получения следующего номера сломан или работает в параллельном сценарии, когда несколько пользователей одновременно добавляют заказы или что вы находитесь на уровне изоляции транзакций, который скрывает выполняемые заказы из вашего запроса или что кто-то добавил идентификатор заказа из строя, или ... Посмотрите на свои данные. Посмотрите на ключ, который вы пытаетесь вставить. Есть откровение. – 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

В Oracle вы можете использовать последовательности, чтобы получить увеличивающиеся идентификатор.

INSERT INTO someTable (yourSequence.NEXTVAL, ...) 

Читайте подробности здесь:
http://www.techonthenet.com/oracle/sequences.php

0

Оказывается, я получил неправильную базу данных для работы. Я просматривал 2 разных источника. Итак, все были правы. Спасибо за помощь каждого, это привело меня к тому, что я проворачивал в других местах, чтобы обнаружить это.

+0

Приятно знать, что вы исправили проблему, но вы также должны прочитать о том, как построить подготовленную с использованием параметров и т. д. Ваш способ создания SQL подвержен вредоносным атакам, проблемам с данными и проблемам производительности. – LoztInSpace