|
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, то видно их будет только при следующем получении данных запросом (а пользователь перемещается по таблице кнопками вперед-назад). наверное надо мозги не жарить, а открывать второй файл когда юзер достигает последней записи первого
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший