|
ADODB: Выборка из двух файлов DBF | ☑ | ||
---|---|---|---|---|
0
lizergin
11.09.11
✎
17:13
|
//подключаюсь к АДО так
//путь - каталог где лежат дбф Функция ПодключениеAdo(Путь) Экспорт ado = Новый COMОбъект("ADODB.Connection"); Попытка ado.Open("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Путь + ";" + "Extended Properties=""DBASE IV;"";"); Возврат ado; Исключение Сообщить("Неверно указан каталог файлов. Проверьте настройки."); Возврат Неопределено; КонецПопытки; КонецФункции //затем вот так получаю записи Процедура ЗагрузитьФайл() ado = ПодключениеAdo(ФайлыОБД); dbf = Новый COMОбъект("ADODB.Recordset"); ТекстЗапроса = "Select * From [" + ИмяФайла + "] where STATUS like 'НЕОБР'"; dbf.Open(ТекстЗапроса, ado, 3, 3); КонецПроцедуры Как модифицировать ТекстЗапроса, чтобы выбрать записи сразу из двух файлов? |
|||
1
gr13
11.09.11
✎
17:15
|
a dlja chego nugen From [" + ИмяФайла + "] ?
|
|||
2
lizergin
11.09.11
✎
17:28
|
в функции подключениекado() переменная ПУТЬ -это КАТАЛОГ где лежат файлы, а не какой-то конкретный файл. From [" + ИмяФайла + "] - выбрать записи конкретного файла из каталога ПУТЬ
|
|||
3
r-d-v2008
11.09.11
✎
17:33
|
ТекстЗапроса = "Select * From [" + ИмяФайла, ИмяФайла1 + "] where STATUS like 'НЕОБР'"; Не оно? Я правда точно уже не помню
|
|||
4
Jaap Vduul
11.09.11
✎
17:46
|
Каталог, где лежат файлы - это в данном случае "база данных".
Вот и пишешь запрос в контексте этой базы данных: select * from dh150 inner join dt150 on dh150.iddoc = dt150.iddoc |
|||
5
lizergin
12.09.11
✎
10:50
|
через UNION получилось.
спасибо! |
|||
6
lizergin
12.09.11
✎
11:53
|
блин, рано радовался. выборка получилась, но записи теперь недоступны для обновления. Делаю так:
dbf = Новый COMОбъект("ADODB.Recordset"); ТекстЗапроса = "Select * From [" + СтрЗаменить(ФайлДт.Имя, ",", "#") + "] where STATUS like 'НЕОБР' " + "UNION Select * From [" + СтрЗаменить(ФайлКт.Имя, ",", "#") + "] where STATUS like 'НЕОБР'"; dbf.Open(ТекстЗапроса, ado, 2, 3); ПрочитатьЗапись(); ///////// Потом, когда пытаюсь записать, ругается вот так: Произошла исключительная ситуация (Microsoft JET Database Engine): Обновление невозможно. База данных или объект доступны только для чтения. |
|||
7
lizergin
12.09.11
✎
12:52
|
понял, что когда ЮНИОН, тогда создается как бы виртуальная таблица, и рекордсет бежит уже по ней. Если обновить записи методом Set, то видно их будет только при следующем получении данных запросом (а пользователь перемещается по таблице кнопками вперед-назад). наверное надо мозги не жарить, а открывать второй файл когда юзер достигает последней записи первого
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |