|
v7: SQL запрос | ☑ | ||
---|---|---|---|---|
0
kupec
14.12.12
✎
14:44
|
Здравствуйте! Подскажите пожалуйста по поводу SQL запроса, сам не разу с этим не сталкивался!
Есть база1 и база2, база1 на SQL, база2 на DBF, как с помощью SQL запроса из базы2 обратиться к SQL серверу чтобы вытащить значение конкретного реквизита конкретного справочника базы1 |
|||
1
DrunkAnimal
14.12.12
✎
14:46
|
1cpp.ru
|
|||
2
kupec
14.12.12
✎
14:48
|
(1) а пример самого простого кода можно?
|
|||
3
Mikeware
14.12.12
✎
14:50
|
[ИмяБазы].[ИмяВладельца].ИмяТаблицы
|
|||
4
Wobland
14.12.12
✎
14:50
|
Состояние("Соединение с центральной БД");
ЦБ=СоздатьОбъект("ODBCDatabase"); ЦБ.Соединение(СокрЛП(Константа.СтрокаПодключенияЦБ)); Если ЦБ.ЕстьСоединение()<>1 Тогда Предупреждение("Ошибка подключения к ЦБ"); Возврат; КонецЕсли; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Результат=СоздатьОбъект("ТаблицаЗначений"); Запрос=СоздатьОбъект("ODBCRecordSet"); Запрос.УстБД(ЦБ); ТекстЗапроса= "select Запрос.УстановитьТекстовыйПараметр("Фирма", ОтборПоФирме); Запрос.ВыполнитьИнструкцию(ТекстЗапроса, Результат); |
|||
5
kupec
14.12.12
✎
14:53
|
(4) что такое СокрЛП(Константа.СтрокаПодключенияЦБ)
|
|||
6
Mikeware
14.12.12
✎
14:54
|
(5) см (1)
|
|||
7
Wobland
14.12.12
✎
14:55
|
(5) строка
|
|||
8
kupec
14.12.12
✎
14:56
|
(6) я понимаю что все везде можно посмотреть но может быть подскажете
|
|||
9
viktor_vv
14.12.12
✎
14:58
|
(5) Ты бы пока не заморачивался с разными базами, получи сначала прямым запросом, то что тебе надо, в родной базе скульной.
Потом уже переходи как получить то же самое из другой базы. |
|||
10
Ёпрст
14.12.12
✎
14:58
|
||||
11
Wobland
14.12.12
✎
14:59
|
(9) держи, болезный
Соединение(<?>) Синтаксис: Соединение(<СтрокаСоединения>) Назначение: присоединиться по указанному DSN к источнику. В случае успеха возвращает 1, иначе 0. Возвращаемое значение: (Число) В случае успеха возвращает 1, иначе 0. Параметры: <СтрокаСоединения> - (Строка) connection-string ::= empty-string[;] | attribute[;] | attribute; connection-string empty-string ::= attribute ::= attribute-keyword=attribute-value | DRIVER=[{]attribute-value[}] attribute-keyword ::= DSN | UID | PWD | driver-defined-attribute-keyword attribute-value ::= character-string driver-defined-attribute-keyword ::= identifier Где: DSN - имя источника. (необязателен, по умолчанию DSN=Default) FILEDSN - имя файла *.dsn с описание параметров соединения (необязателен) DRIVER - имя драйвера соединения. (необязателен, по умолчанию значение атрибута берется из настроек DSN) UID - имя пользователя PWD - пароль пользователя Пример: db.DriverConnect(DSN=pubs; DRIVER=SQL Server; UID=sa; PWD=1234;); |
|||
12
Ёпрст
14.12.12
✎
14:59
|
(9) да разницы то никакой нет, за исключением типизации
|
|||
13
viktor_vv
14.12.12
✎
15:01
|
(12) Согласен, но ему-то сначала просто потренироваться со скулем, а он сейчас упреться в методику подключения.
А глянув на (11) может и поплохеть :). |
|||
14
Irek-kazan
14.12.12
✎
15:02
|
на как пример из экселя
Set @sql = 'INSERT INTO ds(NumDS, DateDS,gmDS,rsDS,dvigDS,nazn,accDS,s1,s2,s3,sumDS,pldocDS,podrDS,stDS,objDS,otchetDS,vidDS) SELECT * FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',''Data Source=C:\1С_обмен\'+ @fname + ';Extended Properties=EXCEL 5.0'')...[Sheet1$]' Exec (@sql) |
|||
15
Irek-kazan
14.12.12
✎
15:04
|
+ (14) OPENDATASOURCE глянь в инете какие параметры для DBF
|
|||
16
kupec
14.12.12
✎
15:05
|
(13) ПОПЛОХЕЛО...
|
|||
17
Wobland
14.12.12
✎
15:07
|
(15) это был контрольный в голову?
|
|||
18
Irek-kazan
14.12.12
✎
15:12
|
(17) да нет, пинок под зад, чтобы шел учить мат.часть. У меня еще в запасе есть загрузка в скуль из папки всех файлов в разные таблицы
|
|||
19
kupec
14.12.12
✎
15:16
|
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"1cpp\1CPP.dll");
Состояние("Соединение с центральной БД"); ЦБ=СоздатьОбъект("ODBCDatabase"); ЦБ.Соединение("DSN=имясервера; DRIVER=SQL Server; UID=имяпользователя; PWD=пароль"); правильно или нет? |
|||
20
kupec
14.12.12
✎
15:17
|
сам понял что нет...курю дальше
|
|||
21
viktor_vv
14.12.12
✎
15:25
|
Вариант помедленнее, но не такой страшный.
//******************************************* Процедура Сформировать() БазаДляПодключения = СоздатьОбъект("ODBCDataBase"); КаталогБазы = СокрЛП(фасНаправление.КаталогБазы) ; Логин = СокрЛП(фасНаправление.Логин) ; Пароль = СокрЛП(фасНаправление.Пароль) ; БазаДляПодключения.ПрисоединитьИБ(КаталогБазы+"\",Логин,Пароль); мЗапросСКЛ = СоздатьОбъект("ODBCRecordSet"); мЗапросСКЛ.УстБД(БазаДляПодключения) ; ТекстЗапроса = " |Select | СпрТМЦ.Code as Код, | СпрТМЦ.Descr as Наименование |From | $Справочник.ТМЦ as СпрТМЦ |Where | СпрТМЦ.Code = '20836' |"; ТЗ = мЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); КонецПроцедуры Процедура ПриОткрытии() Попытка ЗагрузитьВнешнююКомпоненту("1cpp.dll"); // КаталогИБ()+ Исключение Предупреждение("Не смогли загрузить внешние библиотеки !!!"); СтатусВозврата(0); Возврат ; КонецПопытки; КонецПроцедуры |
|||
22
kupec
14.12.12
✎
15:27
|
(21) спасибо
|
|||
23
kupec
14.12.12
✎
15:28
|
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"1cpp\1CPP.dll");
Состояние("Соединение с центральной БД"); ЦБ=СоздатьОбъект("ODBCDatabase"); ЦБ.Соединение("DRIVER=SQL Server;Server=мойсервер;Database=моябаза;User Id=sa;Password=мойпароль"); Если ЦБ.ЕстьСоединение()<>1 Тогда Сообщить(ЦБ.ПолучитьОписаниеОшибки()); Предупреждение("Ошибка подключения к ЦБ"); Возврат; КонецЕсли; а вот так правильно |
|||
24
kupec
14.12.12
✎
15:32
|
(21) а вот это от куда брать СпрТМЦ
|
|||
25
Ёпрст
14.12.12
✎
15:35
|
на вот тебе примерчик запроса одновременно к обоим базам с использованием метапарсера.
Процедура Сформировать() рс=создатьОбъект("ODBCRecordSet"); ТекстЗапроса = " |SELECT | СпрНаш.DESCR as КлиентосВЭтойбазе -- наименование клиентоса в этой базе, можно и не присоединять справочник, а просто типизировать | ,Спр.DESCR as КлиентосВУдаленнойБазе --наименование клиентоса в удаленной базе |FROM $Справочник.Контрагенты СпрНаш |left join dataBase2.dbo.@Справочник.Контрагенты Спр on СпрНаш.Code = Спр.Code |"; глМД = СоздатьОбъект("MetaDataWork"); ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса); глМД2 = СоздатьОбъект("MetaDataWork"); ПутьКБазе2 = "D:\полный путьк базе данных\"; глМД2.ПрисоединитьМД(ПутьКБазе2+"1Cv7.md"); ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"@","$"); ТекстЗапроса=глМД2.ОбрМетаСКЛ(ТекстЗапроса); Т = рс.ВыполнитьИнструкцию(ТекстЗапроса); Т.ВыбратьСтроку(); КонецПроцедуры |
|||
26
viktor_vv
14.12.12
✎
15:36
|
(24) Отсюда
|From | $Справочник.ТМЦ as СпрТМЦ |
|||
27
Serginio1
14.12.12
✎
15:42
|
(25) Оооо. Не знал. Спасибо.
|
|||
28
Ёпрст
14.12.12
✎
15:53
|
ну там юнион нужен, ну это так, для примеру
|
|||
29
kupec
14.12.12
✎
15:57
|
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"1cpp\1CPP.dll");
Состояние("Соединение с центральной БД"); ЦБ=СоздатьОбъект("ODBCDatabase"); ЦБ.Соединение("DRIVER=SQL Server;Server=мойсервер;User Id=sa;Password=мойпароль"); Если ЦБ.ЕстьСоединение()<>1 Тогда Сообщить(ЦБ.ПолучитьОписаниеОшибки()); Предупреждение("Ошибка подключения к ЦБ"); Возврат; КонецЕсли; БазаДляПодключения = СоздатьОбъект("ODBCDataBase"); БазаДляПодключения.ПрисоединитьИБ("\\ohrana\kupec\"); мЗапросСКЛ = СоздатьОбъект("ODBCRecordSet"); мЗапросСКЛ.УстБД(БазаДляПодключения) ; ТекстЗапроса = " |Select | СпрТМЦ.Code as Код, | СпрТМЦ.Descr as Наименование |From | $Справочник.Покупатели as СпрТМЦ |Where | СпрТМЦ.Code = '3658' |"; ТЗ = мЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); вот так правильно?? или что то лучше подправить |
|||
30
kupec
14.12.12
✎
16:16
|
я кажись вкурил....спасибо ребята !!! :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |