2015-11-20 2 views
0

Моя проблема заключается в том, что я хотел бы сделать запрос на добавление в Ms-Access 2010. Я пытался реализовать его в конструктор запросов, но он выдает ошибку:Автоматически сгенерированный SQL код генерирует несоответствие типов

Type mismatch in expression

См. Сгенерированный код:

INSERT INTO Yield (ProcessName, Sor, Lot, 
ProcessCode, Outgoing, DefectReason, DefectQty, ModifyQty) 

SELECT Process.[ProcessName], Sor.[Sor], Qty.[Lot], Qty.[ProcessCode], 
Qty.[Outgoing Date], Qty.[Defect Reason], Qty.[Defect Qty], Qty.[Modify_Qty] 

FROM (Sor INNER JOIN ProcessCode ON Sor.[SorID] = ProcessCode.[SorID]) 
INNER JOIN (Process INNER JOIN Qty ON Process.[ProcessID] = Qty.[ProcessID]) 
ON ProcessCode.[ProcessID] = Process.[ProcessID]; 

Таблицы и атрибуты все существующие. Идентификационные номера - это индексы, количественные числа - числовые, атрибуты «ProcessName», «Sor», «Lot», «ProcessCode», «DefectReason» - это строки.

В чем может быть проблема?

Заранее спасибо.

+0

Это может быть единственное поле, о котором вы не говорите: Исходящий. Он должен быть типа данных 'Date', если [Исходящая дата]. – Gustav

+0

@Gustav Я знаю об этом, но я положил веру и надеюсь, что OP уже проверит, что –

ответ

1

Выглядит нормально. Лучший совет - разделить его на мелкие кусочки.

http://importblogkit.com/2015/05/how-do-you-eat-an-elephant/.

Попробуйте это:

Удалите insert часть. Просто попробуйте select, чтобы убедиться, что соединение работает правильно. Если это не работает, проблема возникает в полях объединения

Затем снова введите insert, но вместо того, чтобы помещать поля таблицы из SELECT, используйте значения по умолчанию. '' для строк и 0 для числового значения и поместить правый псевдоним для имени столбца. Таким образом, вы убедитесь, что ваши данные приносят нужный тип данных. Если это не удается, одно из полей действительно не является строкой или числом. Как и gustav, предположим, что DATE

Если эта работа затем попытается поместить одно поле таблицы каждый раз, пока не найдете тот, который вызывает проблему. Возможно, одно поле не поддерживает нуль или получает большее значение, чем поддерживается.

0

Проблема заключалась в том, что таблица Yield не имела перечисленных атрибутов. Я думал, что если некоторые из перечисленных выходных атрибутов не включены в выходную таблицу, Access автоматически создает отсутствующие новые атрибуты. Я был неправ. Таблица вывода должна содержать атрибуты (строки), новые атрибуты не могут быть вставлены в нее таким образом.

+0

Это действительно правильно. – Gustav

Смежные вопросы