|
Прямой SQL запрос | ☑ | ||
---|---|---|---|---|
0
ejikbeznojek
01.07.15
✎
13:47
|
Всем привет. Пытаюсь сейчас разобраться в прямых запросах.
И для начала пытаюсь тупо выбрать запросом все подразделения. [code] Запрос = " |SELECT | Спр.Code as Код, | Спр.Descr as Наименование |FROM | Reference15 as Спр"; СтрокаСоединения = ("Provider=SQLOLEDB;Driver={SQL Server}; Deleted=No; Data Source = ") + SQLServer + (";UID=") + Login + ("; PWD=") + Password +"; Database = "+base+ (";"); Подключение = Новый ComObject("ADODB.Connection"); Подключение.ConnectionString=СтрокаСоединения; Подключение.Open(СтрокаСоединения); СоединениеSQL = Новый COMObject("ADODB.Command"); СоединениеSQL.ActiveConnection = Подключение; СоединениеSQL.NamedParameters = True; СоединениеSQL.CommandText = Запрос; СоединениеSQL.CommandType = 1; ЗаписиSQL = Новый ComObject("ADODB.RecordSet"); ЗаписиSQL = СоединениеSQL.Execute(); [/code] Ругается на название таблицы. Я пытался указывать как Reference15 так и _Reference15, и $Справочник.Номенклатура. В первых двух случаях ругался в ЗаписиSQL = СоединениеSQL.Execute(); на Недопустимое имя объекта "Reference15" и "_Reference15" Третье это я так понял 1С++, а у меня ADODB |
|||
1
Ненавижу 1С
гуру
01.07.15
✎
13:49
|
а таблица _Reference15 точно есть?
|
|||
2
ejikbeznojek
01.07.15
✎
13:51
|
Ну я увидел вот такие вот таблицы
Reference15 Справочник.Подразделения Справочник.Подразделения Reference15.VT5088 Справочник.Подразделения.АвтоПроверяемыеАкции Справочник.Подразделения.ТабличнаяЧасть.АвтоПроверяемыеАкции Reference15.VT3481 Справочник.Подразделения.ВремяОбмена Справочник.Подразделения.ТабличнаяЧасть.ВремяОбмена Reference15.VT3697 Справочник.Подразделения.КарточкаОбъекта Справочник.Подразделения.ТабличнаяЧасть.КарточкаОбъекта Reference15.VT3677 Справочник.Подразделения.Счетчики Справочник.Подразделения.ТабличнаяЧасть.Счетчики |
|||
3
Mikeware
01.07.15
✎
13:51
|
(2) эт ты где увидел?
|
|||
4
ejikbeznojek
01.07.15
✎
13:53
|
(3) Штатная какая то обработина, называлась "структура ИБ"
Правда только щас понял, что она и для файловых баз тоже, а значит названия таблиц на скуле могут быть другими |
|||
5
Широкий
01.07.15
✎
13:55
|
_Reference15
|
|||
6
ejikbeznojek
01.07.15
✎
13:57
|
(5) Я пробовал, говорит Недопустимое имя объекта "_Reference15"
|
|||
7
фобка
01.07.15
✎
13:57
|
Ну надо чтото типа use сделать в запросе к базе или прописать ее в строке подключения
|
|||
8
фобка
01.07.15
✎
14:00
|
Проверь в самом сиквеле менеджменте
|
|||
9
ejikbeznojek
01.07.15
✎
14:01
|
(1) Среда SQL Server Management Studio посмотрел, тут тоже эта таблица есть
|
|||
10
фобка
01.07.15
✎
14:02
|
(9) запрос отрабатывает в ней?
|
|||
11
ejikbeznojek
01.07.15
✎
14:08
|
Нашёл косяк, имена полей были без подчёркиваний
поменял запрос на тот, который на скуле работает |SELECT | Спр._Code as Код, | Спр._Description as Наименование |FROM | _Reference15 as Спр"; Но с 1ски ругается всё равно. |
|||
12
ejikbeznojek
01.07.15
✎
14:12
|
Такое ощущение что он как то базу не открывает, там на скуле несколько баз крутится.
Но при этом тут Подключение.Open(СтрокаСоединения); не ругается, но в отладке Подключение.errors.count=1 |
|||
13
Ненавижу 1С
гуру
01.07.15
✎
14:13
|
ты имя базы правильно прописал?
|
|||
14
ejikbeznojek
01.07.15
✎
14:20
|
Ну я прописал
SQLServer="SrvdbCopy1"; Login="sa"; Password="******"; base="kuhar"; http://prntscr.com/7nhmz7 |
|||
15
ejikbeznojek
01.07.15
✎
14:35
|
В момент когда происходит
Подключение.Open(СтрокаСоединения); В отладке меняется Подключение.ConnectionString с "Provider=SQLOLEDB;Driver={SQL Server}; Deleted=No; Data Source = SrvdbCopy1;UID=sa; PWD=*****; Database = kuhar ;" на "Provider=SQLOLEDB.1;Data Source=SrvdbCopy1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=IT-KUHAR;Use Encryption for Data=False;Tag with column collation when possible=False;" |
|||
16
Ёпрст
01.07.15
✎
14:40
|
На вот, мучайся
СоединениеБазы = Новый COMОбъект("ADODB.Connection"); Драйвер="SQL Server"; Сервер="SrvdbCopy1"; Логин="sa"; Пароля="пиши суда пароля"; База="kuhar"; СтрокаПодключения = "driver={"+Драйвер+"}; Server="+Сервер+"; uid="+Логин+"; Pwd="+Пароля+"; Database ="+База+";"; СоединениеБазы.Open(СтрокаПодключения); Комманда = Новый COMОбъект("ADODB.Command"); Комманда.ActiveConnection = СоединениеБазы; ТекстЗапроса = " |select | t._Description as Вася |from dbo._Reference15 as t |"; Комманда.CommandText = ТекстЗапроса; Выборка = Комманда.Execute(); Пока Выборка.EOF() = 0 Цикл Сообщить(Выборка.Fields.Item("Вася").Value); Выборка.MoveNext(); КонецЦикла; Выборка.Close(); |
|||
17
ejikbeznojek
01.07.15
✎
14:45
|
(16) Спасибо, а драйвер какой использовать если я с семёрки запускаю и ничего дополнительно не устанавливал?
|
|||
18
ejikbeznojek
01.07.15
✎
14:46
|
А вижу
|
|||
19
ejikbeznojek
01.07.15
✎
14:53
|
(16) Что-то всё-таки со строкой соединения не так.
при открытии в СоединениеБазы.errors 3 элемента. На 2 и 3 наверное нужно забить, а вот что с 1м делать не ясно. "[Microsoft][ODBC SQL Server Driver]Недопустимый атрибут строки соединения" 0 "[Microsoft][ODBC SQL Server Driver][SQL Server]Контекст базы данных изменен на "master"." 5701 "[Microsoft][ODBC SQL Server Driver][SQL Server]Параметры языка изменены на "русский"." 5703 |
|||
20
ejikbeznojek
01.07.15
✎
14:59
|
А вот если убираю из строки соединения базу остаётся
СтрокаПодключения = "driver={"+Драйвер+"}; Server="+Сервер+"; uid="+Логин+"; Pwd="+Пароля+";" И из ошибок пропадает Недопустимый атрибут строки соединения. Но как-то же базу указать надо... |
|||
21
ejikbeznojek
01.07.15
✎
15:09
|
Заработало!!!!
СтрокаПодключения ="driver={SQL Server};server="+Сервер+";uid="+Логин+";pwd="+Пароля+";database="+База+""; |
|||
22
ЧеловекДуши
01.07.15
✎
15:20
|
(0) Нет у 1С 7.7 такой таблицы "Reference15" и небыло
|
|||
23
ejikbeznojek
01.07.15
✎
15:51
|
(22) Так говоря " если я с семёрки запускаю" я имел ввиду winows 7, а не 1С)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |