|
|
|
| Здравствуйте все!
Застопорился на такой проблеме.
Я пишу на VBA скрипт, который берет таблицы с сервера (M SQL 2005) и на их основе формирует новые таблицы на том же (локальном) сервере. И исходные, и результирующие таблицы имеют кодовое поле с характеристикой int identity(1,1).
Получается такая незадача. Когда эта характеристика включается в оператор построения новой таблицы CREATE TABLE, то потом оператор SELECT не может выбрать из старой таблицы нужные данные и записать их в новую таблицу.
Если же сначала опустить характеристику кодового поля, тогда данные преобразуются и записываются как надо, но зато потом не удается сделать нужное поле новой таблицы кодовым.
В чем тут фишка? Подскажите.
Заранее спасибо. | |
|
| |
|
|
|
| "то потом оператор SELECT не может выбрать из старой таблицы нужные данные и записать их в новую таблицу."
Select не может вырать или insert записать?
Вам нужно что бы значения ключей в записях локальной таблице были такими же как и на сервере? ТОгда зачем Вам в локальных таблицах счетчик? Просто сделайте по этому полю Primary индекc (см. CREATE INDEX )
Если там нужен свой светчик, то исключите это поле из SElect (и соответственно Insert), тогда это поле будет заполняться автоматически значением счетчика | |
|
| |
|
25 Кб. |
|
| Обе таблицы находятся на сервере - и исходная, и формируемая. Локальным является сервер, и потому не нужна технология WEB. Счетчик в новой таблице при ее формировании должен иметь те же значения, что и в исходной таблице (она живая, и там есть/могут быть пропуски некоторых значений счетчика, это и нужно сохранить), а потом при работе он (счетчик) должен будет наращиваться по обычным нормальным правилам. Для продуктивного продолжения прилагаю фрагмент скрипта. То, что в нем незакомментировано, срабатывает как нужно. Если я пытаюсь раскомментировать что-нибудь из этого фрагмента или поставить для счетчика (поле Код) свойство IDENTITY (1,1), выдается сообщение Ошибка ODBC. Отсюда и проблемы.
Вариант явного перечисления полей в SELECT и INSERT со включением кодового поля и без такого включения я тоже пробовал, с тем же отрицательным результатом. Потому и попросил что можно подсказать. | |
|
| |
|
|
|
| ПОнятно
Возможно что через ODBC такой ALTER COLUMN и не будет работать...
странно что при уже созданном IDENTITY (1,1) insert into не срабатывает
попробуйте все тоже самое но через ADO.... | |
|
| |
|
|
|
| Спасибо за поддержку. Я попробую сделать то, что Вы порекомендовали, и еще попробую извратиться так: сделаю в приложении Access связанную таблицу и стану добавлять по отдельности поля через AddNew, Update и далее соответственно. Надеюсь, что это тоже получится и будет работать не слишком долго. На закуску останется сделать потом IDENTITY (1,1) , может быть, придется делать второй скрипт отдельно. | |
|
| |