|
v7: Запрос к 2-м dbf файлам | ☑ | ||
---|---|---|---|---|
0
MobilSoyuz
31.05.13
✎
17:39
|
Появилась сложность:
Процедура Сформировать() Папка = КаталогИБ() + "Обмен\SEB\"; DBConn = CreateObject("ADODB.Connection"); DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Папка + ";" + "Extended Properties=""DBASE IV;"";"); Результат = DBConn.Execute("Select * from [gsfact.DBF] a, [gsrest.DBF] b where a.code = b.code and ((a.DBF.quantity > b.DBF.out_qty) or (a.DBF.quantity > b.DBF.in_qty))"); Пока Результат.EOF=0 Цикл //Цикл по записям ТЗ.НоваяСтрока(); ТЗ.код = Результат.Fields("Code").Value; Возврат; Результат.MoveNext(); //Переходим к след. записи DBF КонецЦикла; DBConn.Close(); //Закрываем соединение КонецПроцедуры Сложность в правильности синтаксиса запроса! Подскажите синтаксис...если так вообще можно обращаться, как в примере? Заранее благодарен за ответ! |
|||
1
Ёпрст
31.05.13
✎
17:41
|
вообще, лучше не использовать старый формат записи, а явно указывать что это Иннер Джоиин
|
|||
2
Ёпрст
31.05.13
✎
17:42
|
ну и.. проще в тексте запроса писать полный путь к табличкам
|
|||
3
MobilSoyuz
31.05.13
✎
17:43
|
(1) а по подробнее ?
|
|||
4
MobilSoyuz
31.05.13
✎
17:44
|
(1) типа
SELECT MyFile.*, MyFile1.SUMMA FROM MyFile INNER JOIN MyFile1 ON MyFile.ID = MyFile1.ParentID IN 'C:\DBF' [dbase 5.0;]; |
|||
5
Ёпрст
31.05.13
✎
17:45
|
(3)
select * from D:\вася.dbf as a inner join E:\федя.dbf as b on a.code = b.code and ((a.DBF.quantity > b.DBF.out_qty) or (a.DBF.quantity > b.DBF.in_qty)) |
|||
6
MobilSoyuz
31.05.13
✎
17:54
|
(5) ТЗ.код = Результат.Fields("Code").Value;
{D:\СЕРГЕЙ\ПРОВЕРКАDBF.ERT(12)}: ADODB.Recordset: Item cannot be found in the collection corresponding to the requested name or ordinal. |
|||
7
ДенисЧ
31.05.13
✎
17:56
|
(6) у тебя нет Code в результате
|
|||
8
Ёпрст
31.05.13
✎
17:57
|
(6) ну нету у тя code в табличке.. или запрос пустой.
Вообще, делай через оледб и 1cpp, если религия позволяет: ОлеДБ = СоздатьОбъект("OLEDBData"); Соединение = "Provider=VFPOLEDB.1;Data Source=" + СокрЛП(Путь)+ ";Mode=ReadWrite;Collating Sequence=MACHINE"; Рез = ОлеДБ.Соединение(Соединение); Запрос = ОлеДБ.СоздатьКоманду(); Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); Запрос.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')"); Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')"); Запрос = ОлеДБ.СоздатьКоманду(); //сюда воткнешь свой текст запроса ТекстЗапроса = " |Select * |From "+СокрЛП(ИмяФайла); ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); |
|||
9
MobilSoyuz
31.05.13
✎
17:58
|
(7) это я перевел )
|
|||
10
MobilSoyuz
31.05.13
✎
18:04
|
(8) Соединение = "Provider=VFPOLEDB.1;Data Source=" + СокрЛП(Путь)+ ";Mode=ReadWrite;Collating Sequence=MACHINE";
Путь - это путь куда? |
|||
11
MobilSoyuz
31.05.13
✎
18:05
|
(8) орет
Рез = ОлеДБ.Соединение(Соединение); {D:\СЕРГЕЙ\ПРОВЕРКАDBF.ERT(7)}: FAILED! IDataInitialize::GetDataSource(): Class not registered |
|||
12
MobilSoyuz
31.05.13
✎
18:06
|
(8) видимо религия
|
|||
13
Ёпрст
31.05.13
✎
18:10
|
(10) можешь КаталогИБ() заместо путь воткнуть..
(11) нужно vfpoledb провайдер установить |
|||
14
Ёпрст
31.05.13
✎
18:11
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |