это мой третий вопрос здесь, до сих пор отличные ответы ^^«ключ нарушение» автоинкремент поле в ClientDataSet [Delphi]
Я не имею никаких проблем в просмотре, редактирование данных, но вставка ...
Вот мои сомнения: в финансах/фондовом программное обеспечение у меня есть форма, чтобы создать новый заказ,
естественно мне нужно вставить новую строку в t_orders таблицы
и вставка элементов в t_orderitems таблицы с OrderId поле связано с рядом в t_orders
CREATE TABLE `t_orders` (
`orderId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`clientId` INT(10) UNSIGNED NOT NULL,
...)
CREATE TABLE `t_orderitems` (
`orderitemId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`orderId` INT(10) UNSIGNED NOT NULL,
...)
--> INDEXES AND FOREIGN KEYS OMITTED <--
Как добавить itemorders к сетке и, наконец, кнопка "FinalizeOrder" нажмите
- Создать заказ в t_orders
- Включить позиции в t_orderitems 0 связался с этим заказом
Подключение осуществляется с использованием ADO.
Я не уверен, что так можно сделать в таком случае, как я должен это делать?
редактировать: Я попытался с помощью вложенных ClientDataSets и он работает в частях, но я до сих пор не знаю, как получить вставленную Id Order
edit2:
Теперь у меня есть еще одна проблема, я могу Не добавляйте более одного элемента в ClientDataSet.
Поскольку OrderItemId пуст для всех элементов (я могу получить только эти значения при вставке базы данных), когда я пытаюсь добавить второй элемент, он дает мне Key Violation, любые идеи?
Если я установить UpdateMode на что-то другое, чем upWhereKeyOnly и установить pfInKey Ложь это работает, но я не думаю, что это вариант
Любые идеи?
Заранее спасибо!
Arthur.
Wich Database Вы используете? MySQL? – RRUZ
Да, но я изменюсь на PosgreSql в окончательной версии – arthurprs
Проверьте функцию mysql LAST_INSERT_ID(), см. Эту ссылку http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html – RRUZ