Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Задание кодового поля
 
 автор: MS_4G   (15.03.2008 в 04:36)   личное сообщение
 
 

Здравствуйте все!
Застопорился на такой проблеме.

Я пишу на VBA скрипт, который берет таблицы с сервера (M SQL 2005) и на их основе формирует новые таблицы на том же (локальном) сервере. И исходные, и результирующие таблицы имеют кодовое поле с характеристикой int identity(1,1).

Получается такая незадача. Когда эта характеристика включается в оператор построения новой таблицы CREATE TABLE, то потом оператор SELECT не может выбрать из старой таблицы нужные данные и записать их в новую таблицу.
Если же сначала опустить характеристику кодового поля, тогда данные преобразуются и записываются как надо, но зато потом не удается сделать нужное поле новой таблицы кодовым.

В чем тут фишка? Подскажите.
Заранее спасибо.

  Ответить  
 
 автор: osmor   (17.03.2008 в 09:13)   личное сообщение
 
 

"то потом оператор SELECT не может выбрать из старой таблицы нужные данные и записать их в новую таблицу."
Select не может вырать или insert записать?
Вам нужно что бы значения ключей в записях локальной таблице были такими же как и на сервере? ТОгда зачем Вам в локальных таблицах счетчик? Просто сделайте по этому полю Primary индекc (см. CREATE INDEX )
Если там нужен свой светчик, то исключите это поле из SElect (и соответственно Insert), тогда это поле будет заполняться автоматически значением счетчика

  Ответить  
 
 автор: MS_4G   (17.03.2008 в 16:25)   личное сообщение
25 Кб.
 
 

Обе таблицы находятся на сервере - и исходная, и формируемая. Локальным является сервер, и потому не нужна технология WEB. Счетчик в новой таблице при ее формировании должен иметь те же значения, что и в исходной таблице (она живая, и там есть/могут быть пропуски некоторых значений счетчика, это и нужно сохранить), а потом при работе он (счетчик) должен будет наращиваться по обычным нормальным правилам. Для продуктивного продолжения прилагаю фрагмент скрипта. То, что в нем незакомментировано, срабатывает как нужно. Если я пытаюсь раскомментировать что-нибудь из этого фрагмента или поставить для счетчика (поле Код) свойство IDENTITY (1,1), выдается сообщение Ошибка ODBC. Отсюда и проблемы.
Вариант явного перечисления полей в SELECT и INSERT со включением кодового поля и без такого включения я тоже пробовал, с тем же отрицательным результатом. Потому и попросил что можно подсказать.

  Ответить  
 
 автор: osmor   (17.03.2008 в 18:30)   личное сообщение
 
 

ПОнятно
Возможно что через ODBC такой ALTER COLUMN и не будет работать...
странно что при уже созданном IDENTITY (1,1) insert into не срабатывает
попробуйте все тоже самое но через ADO....

  Ответить  
 
 автор: MS_4G   (17.03.2008 в 19:02)   личное сообщение
 
 

Спасибо за поддержку. Я попробую сделать то, что Вы порекомендовали, и еще попробую извратиться так: сделаю в приложении Access связанную таблицу и стану добавлять по отдельности поля через AddNew, Update и далее соответственно. Надеюсь, что это тоже получится и будет работать не слишком долго. На закуску останется сделать потом IDENTITY (1,1) , может быть, придется делать второй скрипт отдельно.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList