Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2009, 16:12   #1
C0re
 
Регистрация: 11.07.2009
Сообщений: 6
По умолчанию Работа с SQL

Задача следующая: нужно экспортировать данные из Excel в SQL БД.
Решил для этого использовать функции SQLOpen, SQLExecQuery и тд из модуля Xlodbc.xla.
На данный момент 2 вопроса:
  • Возможно ли работа с MSSQL через этот модуль?
  • При попытке установить активировать этот модуль выдается сообщение "Name conflicts with existing module, project, or object library". Как с этим бороться?
C0re вне форума Ответить с цитированием
Старый 11.07.2009, 17:19   #2
C0re
 
Регистрация: 11.07.2009
Сообщений: 6
По умолчанию

Итак, уже определился с библиотекой. Использую ADODB. Все замечательно.
Текущий вопрос: как передать одному из параметров хранимой процедуры значение NULL?
C0re вне форума Ответить с цитированием
Старый 13.07.2009, 16:25   #3
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от C0re Посмотреть сообщение
Итак, уже определился с библиотекой. Использую ADODB. Все замечательно.
Текущий вопрос: как передать одному из параметров хранимой процедуры значение NULL?
Не понимаю в чем проблема, если ты смог использовать ADODB. Если необходимо передать NULL во внешную процедуру SQL сервера, то просто вместо переменной поставь две запятые. Если тебе необходимо передать данные то прделагаю как я делаю. Объявляю переменную как string, long, int в зависимости от переменной в данных (по умолчаниию она становиться равной NULL) и там где необходимо ее передать с помощью команды INSERT ставлю ее.
Этот фокус у меня спокойно проходит при использовании MS SQL2000, что же касается других - то нужно читать литературу.
Юнлинг вне форума Ответить с цитированием
Старый 14.07.2009, 04:39   #4
C0re
 
Регистрация: 11.07.2009
Сообщений: 6
По умолчанию

Поясню, что я имел ввиду:

Код:
                DBCommand.CommandType = adCmdStoredProc
                DBCommand.CommandText = "[dbo].[QuestionsInsert]"
                DBCommand.Parameters.Refresh

                ' ... задаем параметры

                DBCommand.Parameters(5) = 'и вот этому парметру нужно присвоить значение NULL. Параметр имеет тип image (бд MSSQL 2005).
 
                DBCommand.Execute
C0re вне форума Ответить с цитированием
Старый 14.07.2009, 10:35   #5
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Все ясно!
когда ты даешь команду
Цитата:
Сообщение от C0re Посмотреть сообщение
Код:
                DBCommand.CommandType = adCmdStoredProc
то она запускает SQL процедуру добавления новой записи в БД. Скорее всего, во всяком случае в 2000, все процедуры доавления новой записи формируют пустые поля (кроме тех Которые имеют тип - счетчик). Я не знаю 2005 (работаю только с лицензионными прогами), но похоже что то что ты называешь параметрами - это поле записи. По этому если ты просто убершь эту строчку - то там и запишется NULL

Последний раз редактировалось Юнлинг; 14.07.2009 в 10:41.
Юнлинг вне форума Ответить с цитированием
Старый 14.07.2009, 21:25   #6
C0re
 
Регистрация: 11.07.2009
Сообщений: 6
По умолчанию

Естественно, такой вариант уже пробовал. Выдает ошибку, что-то типа "Пропущено поле Image, ожидаемое в данной хранимой проедуре", при том что таблица, в которую вставляется новая запись, допускает нулевое значение для поля Image. Есть вариант изменить саму хранимую процедуру, так чтобы поле Image поумолчанию было бы задано как NULL. Хотя, такой способ пожалуй не самый лучший.
C0re вне форума Ответить с цитированием
Старый 15.07.2009, 01:26   #7
C0re
 
Регистрация: 11.07.2009
Сообщений: 6
По умолчанию

Проблема решена так:

Код:
DBCommand.Parameters(5).Attributes = adParamNullable
DBCommand.Parameters(5) = Null
(как просто все оказалось! )
C0re вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с bat-файлами и sql-скриптами... Nomad Общие вопросы Delphi 4 09.04.2009 20:10
Работа с Mistrosoft SQL сервером JUDAS БД в Delphi 0 21.02.2009 16:50
Некоректная работа SQL- запроса Tan БД в Delphi 4 05.04.2008 20:40
Работа с SQL-запросами Washington Общие вопросы Delphi 1 13.03.2007 01:28