Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Прошу помощи. (число прочтений - 1526 )
Владимир1717
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 27. Января 2010
Прошу помощи.
28. Января 2010 :: 09:02
Печать  
Доброго времени суток! Много и внимательно читал форум, но четкого и однозначного ответа и работающего примера не нашел. Признаю, что мог что-то пропустить.
В общем, задача такая: есть 2 базы DBF, прошлого и этого года. При запуске определенных отчетов с нач. датой в прошлом году должны подцепляться данные из базы прошлого года и выводиться в отчете. Пробовал много вариантов с форума, тестил их (варианты) в локальном режиме (реальные базы на терминальном сервере) - запросы вылетают с ошибками. Хотя по постам с форума все должно работать. Если возможно, приведите работающие примеры для решения задачи.  Главное - корректно подключиться и получить первые данные, дальше буду копаться сам.

Пример:
- данный запрос работает:

ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ("D:\SALON\");
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(ИБ);

ТекстЗапроса = "
     |SELECT
     |      Спр.Code as Код,
     |      Спр.Descr as Наименование
     |FROM
     |      $Справочник.Товары as Спр
     |WHERE
     |      Спр.IsFolder = 2 AND
     |      Спр.IsMark = ''";    
ТЗ = рс.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
   Сообщить("Код - " + ТЗ.Код);
   Сообщить("Наименование - " + ТЗ.Наименование);
КонецЦикла;

а его продолжение нет:

ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ("D:\BASES\","Федоров","");
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(ИБ);
     
     ТекстЗапроса = "
     |SELECT
     |   Спр.ID as [Элемент $Справочник.Номенклатура]
     |FROM
     |      $Справочник.Номенклатура as Спр
     |WHERE
     |      Спр.IsFolder = 2 AND
     //|      Спр.IsMark = ''  AND
     |      Спр.ID IN (SELECT Val FROM :ВременнаяТаблица)";
     
ВременнаяТаблица = "ВременнаяТаблица";
рс.УложитьСписокОбъектов(ВыбТовары, ВременнаяТаблица,"Номенклатура");
рс.УстановитьТекстовыйПараметр ("ВременнаяТаблица", ВременнаяТаблица);
     
Попытка
           тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);            
           Сообщить("Колво строк - " + тз.количествоСтрок());
Исключение
           Сообщить("Ошибка - " + рс.ПолучитьОписаниеОшибки());
КонецПопытки;

Самое непонятное, что на форуме этот пример приведен как работающий...  Печаль
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прошу помощи.
Ответ #1 - 28. Января 2010 :: 09:06
Печать  
По-поводу запроса в чужой базе для дбф:
http://www.1cpp.ru/forum/YaBB.pl?num=1182497837/19#19

По-поводу временных таблиц ы дбф:
http://www.1cpp.ru/forum/YaBB.pl?num=1188673318

  
Наверх
 
IP записан
 
Владимир1717
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 27. Января 2010
Re: Прошу помощи.
Ответ #2 - 28. Января 2010 :: 09:56
Печать  
Eprst писал(а) 28. Января 2010 :: 09:06:
По-поводу запроса в чужой базе для дбф:
http://www.1cpp.ru/forum/YaBB.pl?num=1182497837/19#19

По-поводу временных таблиц ы дбф:
http://www.1cpp.ru/forum/YaBB.pl?num=1188673318



Буду смотреть, спасибо... а по тексту из моего поста можно указать на ошибки?
  
Наверх
 
IP записан
 
Владимир1717
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 27. Января 2010
Re: Прошу помощи.
Ответ #3 - 28. Января 2010 :: 11:00
Печать  
Eprst писал(а) 28. Января 2010 :: 09:06:
По-поводу запроса в чужой базе для дбф:
http://www.1cpp.ru/forum/YaBB.pl?num=1182497837/19#19



Смотрю... и вижу:

Процедура Сформировать()
       ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
     ПутьКБазе2= "C:\МояВтораяБаза\";// Указываем путь, в конце слэш не забываем

Если .СоздатьКоманду() - то это OLEDBData. Как подключить OLEDBData? Читаю комментарий к статье об этом:
http://www.1cpp.ru/forum/YaBB.pl?num=1148874473/13#13

Цитируется из статьи, как должно соединяться, после цитаты:
Для подключения к БД используется OLEDBData, а для выполнения запроса ODBCRecordset. Естественно, это не работает...
Смех Смех Смех и всё. А КАК ДОЛЖНО БЫТЬ, ЧТОБЫ РАБОТАЛО, НЕТ...

Ещё раз повторю просьбу: объясните, что не работает в примерах, приведенных мной?
  
Наверх
 
IP записан
 
Владимир1717
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 27. Января 2010
Re: Прошу помощи.
Ответ #4 - 28. Января 2010 :: 11:07
Печать  
Владимир1717 писал(а) 28. Января 2010 :: 11:00:
Eprst писал(а) 28. Января 2010 :: 09:06:
По-поводу запроса в чужой базе для дбф:
http://www.1cpp.ru/forum/YaBB.pl?num=1182497837/19#19



Смотрю... и вижу:

Процедура Сформировать()
       ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
     ПутьКБазе2= "C:\МояВтораяБаза\";// Указываем путь, в конце слэш не забываем

Если .СоздатьКоманду() - то это OLEDBData. Как подключить OLEDBData? Читаю комментарий к статье об этом:
http://www.1cpp.ru/forum/YaBB.pl?num=1148874473/13#13

Цитируется из статьи, как должно соединяться, текст после цитаты:
"Для подключения к БД используется OLEDBData, а для выполнения запроса ODBCRecordset. Естественно, это не работает..."
Смех Смех Смех и всё. А КАК ДОЛЖНО БЫТЬ, ЧТОБЫ РАБОТАЛО, НЕТ...

Ещё раз повторю просьбу: объясните, что не работает в примерах, приведенных мной?

  
Наверх
 
IP записан
 
nicolas
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 148
Зарегистрирован: 24. Мая 2006
Re: Прошу помощи.
Ответ #5 - 28. Января 2010 :: 13:06
Печать  
Владимир1717 писал(а) 28. Января 2010 :: 09:02:
     |      Спр.ID IN (SELECT Val FROM :ВременнаяТаблица)";
Печаль

Используешь, как я понял драйвер ODBC FOX. А он не поддерживает Эту конструкцию.
Используй OLEDB
  
Наверх
 
IP записан
 
Владимир1717
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 27. Января 2010
Re: Прошу помощи.
Ответ #6 - 28. Января 2010 :: 13:20
Печать  
nicolas писал(а) 28. Января 2010 :: 13:06:
Владимир1717 писал(а) 28. Января 2010 :: 09:02:
     |      Спр.ID IN (SELECT Val FROM :ВременнаяТаблица)";
Печаль

Используешь, как я понял драйвер ODBC FOX. А он не поддерживает Эту конструкцию.
Используй OLEDB


Спасибо, уже вроде сам допер. Уже тренируюсь на OLEDBData.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать