|
v7: Соединиться с MS Access из 1С и забрать данные | ☑ | ||
---|---|---|---|---|
0
YF
17.07.11
✎
19:20
|
Хочу из 1С 7.7 соединиться с базой данных MS Access и забрать оттуда данные.
Данные забираю перекрестным запросом написанным в той же базе MS Access. Попытка № 1 Соединение: адоДБ_ = СоздатьОбъект("ADODB.Connection"); Попытка строкаПодключения_ = " |Provider=Microsoft.Jet.OLEDB.4.0; |Data Source = " + путь_ +"; |Persist Security Info=False"; // А теперь выполним подключение адоДБ_.Open(строкаПодключения_); Исключение // Делать больше нечего Сигнал(); Сообщить(ОписаниеОшибки(), "!"); Возврат 0; КонецПопытки; командаАДОДБ_ = СоздатьОбъект("ADODB.Command"); командаАДОДБ_.ActiveConnection = адоДБ_; Все ОК, соединились Запрос: запрос_ = СоздатьОбъект("ADODB.Recordset"); командаАДОДБ_.CommandText = "SELECT * FROM MyTable;"; // попробуем выполнить запрос Попытка запрос_ = командаАДОДБ_.Execute; Исключение Сигнал(); Сообщить(ОписаниеОшибки(), "!"); Возврат 0; КонецПопытки; // Если рекордсет пуст, то вернемся Если (запрос_.EOF() = -1) ИЛИ (запрос_.BOF() = -1) Тогда запрос_.Close(); запрос_ = ""; Сообщить("Пустой запрос"); Иначе запрос_.MoveFirst(); КонецЕсли;//(запрос_.EOF() = 1) ИЛИ (запрос_.BOF() = 1) // Побежали по рекордсету Пока запрос_.EOF() = 0 Цикл // ... КонецЦикла;//запрос_.EOF() = 0 Если MyTable перекрестный запрос, то всегда запрос_.EOF() = 1 и запрос_.BOF() = 1 если же MyTable запрос на выборку или таблица, то все Ок, данные выбираются ... Как забрать данные из перекрестного запроса? |
|||
1
Лефмихалыч
17.07.11
✎
19:24
|
щито?..
|
|||
2
YF
17.07.11
✎
19:26
|
(1) Што?
|
|||
3
YF
18.07.11
✎
12:54
|
Продолжаем разговор ...
|
|||
4
VladZ
18.07.11
✎
12:58
|
Пример перекрестного запроса приведи.
|
|||
5
skunk
18.07.11
✎
12:59
|
ничего не понял ... перекрестный возращает один член такой-же рекордсет
|
|||
6
YF
18.07.11
✎
13:01
|
(5) Я тоже так думал, но если его выполнять в самом Акцессе, то все ок, а через АДО из 1С - вот как в (0) ...
|
|||
7
skunk
18.07.11
✎
13:08
|
(6)у тебя там непонятно ... у тебя запрос возращает все таки -1, 0 или 1
|
|||
8
btrvodka
18.07.11
✎
13:19
|
А нельзя результат запроса сохранять в текстовик и потом читать его. Если скорость не критична- то это самое то. Можно даже использовать хранимые процедуры.
|
|||
9
YF
18.07.11
✎
15:04
|
(7) Отладчик говорит что:
запрос_.EOF() = -1 запрос_.BOF() = -1 сорри. опечаточка была (8) Нельзя |
|||
10
ado
18.07.11
✎
15:13
|
(5) Нет.
|
|||
11
ado
18.07.11
✎
15:20
|
Пиши обычный select и "перекрещивай" уже в 1С.
|
|||
12
YF
18.07.11
✎
15:28
|
(11) Блин геморно это, а варианта получить через адо совсем нету? Микрософтовский хелп пишет, что Jet.SQL поддерживает Transform ... Блин, врут опять :-(
|
|||
13
ado
18.07.11
✎
15:32
|
(12) Оно, может и поддерживает, но вот что при этом должна поддерживать принимающая сторона?
Ну сам подумай, как можно сводную таблицу в рекордсет запихать? Там же заголовки стобцов не имена полей, а значения. |
|||
14
ado
18.07.11
✎
15:39
|
Хотя ... вот тут, вроде, для входа тоже рекордсет используют: http://hiprog.com/index.php?option=com_content&task=view&id=430&Itemid=35
Но пишут, что сугубо через DAO, через ADO не работает. |
|||
15
YF
18.07.11
✎
15:51
|
DAO - это же акцесс 97, все последующие используют адо?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |