|
Работа с MSSQL в 1С через ADODB | ☑ | ||
|---|---|---|---|---|
|
0
rino
30.10.08
✎
17:28
|
Здравствуйте.
У меня возникла задача, в которой необходимо данные из 1С записать в базу расположенную на MSSQL сервере. При этом сервер мб удаленным и к нему необходимо обращаться по адресу, имени БД, имени пользователя и т.д. Полазил в интернете, нашел пару кодов работы, но запустив их у себя не получается, так как возникают ошибки. Конфигурация у меня обычная. Исходный код //******************************************* Процедура Сформировать() БД=CreateObject("ADODB.Connection"); БД.ConnectionString = "Provider=SQLOLEDB;Data Source=QNT3;DatabaseName=domod_test2;Initial Catalog=domod_test2;UID=sa"; Попытка БД.Open(); Исключение Сообщить(ОписаниеОшибки()); Предупреждение("Не удалось подключиться к IB ...") КонецПопытки; Запрос=СоздатьОбъект("ADODB.Recordset"); Запрос.ActiveConnection = БД; Запрос.Source = "select * from budget_provod"; Запрос.Open(); кол = 0; Пока Запрос.Eof()=0 Цикл кол = Запрос.Fields("SUMMA").Value; //обрабатываем Recordset Запрос.MoveNext(); КонецЦикла; Сообщить(кол); Запрос.Close(); БД.Close(); КонецПроцедуры Результатом работы этого когда является ошибка: кол = Запрос.Fields("SUMMA").Value; {C:\DOCUMENTS AND SETTINGS\USER\РАБОЧИЙ СТОЛ\ТЕСТОВАЯ ШТУКА.ERT(17)}: Тип переменой не поддерживается Вопрос: что я делаю не так? и как правильно? Если есть возможность дать ссылку на нормальный ресурс, где можно изучить информацию по работы с 1С и MSSQL. |
|||
|
1
ДенисЧ
30.10.08
✎
17:30
|
77 через АДО не любит полей типа NUMERIC.
Такие поля нужно CAST'овать к VARCHAR'у. |
|||
|
2
Cap_1977
30.10.08
✎
17:30
|
(0) Число(Запрос.Fields("SUMMA").Value)
|
|||
|
3
leshikkam
30.10.08
✎
17:30
|
1) Юзай 1С++ - удобней;
2) Вместо Select * пиши Select Cast(SUMMA as numeric(20,5)) as Сумма From budget_provod а при получении: Запрос.Fields("Сумма").Value |
|||
|
4
physbox
30.10.08
✎
17:31
|
(3) а "as decimal" 1С съедает?
|
|||
|
5
leshikkam
30.10.08
✎
17:36
|
(4) 1С++ поддерживает, ADODB.Connection - не знаю.
|
|||
|
6
rino
30.10.08
✎
18:33
|
все, спасибо сделал и понял )
а вопрос такой, как нибудь можно записывать данные в таблицу используя конструкцию Запрос.Fields("SUMMA").Value = кол; ??? Или нужно делать SQL запрос типа INSERT??? |
|||
|
7
КонецЦикла
30.10.08
✎
18:50
|
Если изменять что-то - лучше наверное чтобы был порядковый номер (типа identity) для однозначного поиска записи
Тогда можно update делать, ну или удалять-добавлять |
|||
|
8
leshikkam
30.10.08
✎
18:54
|
>Или нужно делать SQL запрос типа INSERT???
нужно делать либо insert либо update |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |