Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема OLEDBData, УложитьСписокОбъектов в DBF-е? (число прочтений - 2785 )
GvH
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 06. Декабря 2006
OLEDBData, УложитьСписокОбъектов в DBF-е?
16. Сентября 2008 :: 08:03
Печать  
Добрый день!
Есть код:
Код
Выбрать все
БазаSQL = СоздатьОбъект("OLEDBData");
...
ЗапросSQL = БазаSQL.СоздатьКоманду();

ТекстЗапроса = "
|SELECT
|	J.DATE AS ДатаДокумента,
|	J.IDDOC AS [СсылкаНаДокумент $Документ],
|	J.IDDOCDEF AS СсылкаНаДокумент_вид,
|	$DH238.БанковскийСчет AS [БанковскийСчет $Справочник.БанковскиеСчета],
|	$DT238.ВидДвижения      AS [ВидДвижения     $Справочник.ДвиженияДенежныхСредств],
|	$DT238.НазначениеПлатежа AS НазначениеПлатежа,
|	$DT238.КоррСчет AS [КоррСчет $Счет.Основной],
|	$DT238.Субконто1 AS [Субконто1 $Субконто],
|	$DT238.Субконто2 AS [Субконто2 $Субконто],
|	$DT238.Субконто3 AS [Субконто3 $Субконто],
|	$DT238.Приход AS СуммаПриход,
|	$DT238.Расход  AS СуммаРасход
|
|FROM
|	$ДокументСтроки.Выписка AS DT238
|
|INNER JOIN 1SJOURN AS J ON J.IDDOC = DT238.IDDOC
|INNER JOIN $Документ.Выписка AS DH238 ON DH238.IDDOC = DT238.IDDOC
|
|WHERE
|	J.IDDOCDEF = $ВидДокумента.Выписка AND J.DATE BETWEEN :НачДата~~ AND :КонДата~~
|	AND $DT238.КоррСчет IN (SELECT val FROM #Группа)
|
|";

ЗапросSQL.УстановитьТекстовыйПараметр("НачДата", НачальнаяДата);
ЗапросSQL.УстановитьТекстовыйПараметр("КонДата", КонечнаяДата);

СписокСчетов = СоздатьОбъект("СписокЗначений");
СписокСчетов.ДобавитьЗначение(СчетПоКоду("62.1"));
ЗапросSQL.УложитьСписокОбъектов(СписокСчетов, "#Группа");

тз = ЗапросSQL.ВыполнитьИнструкцию(ТекстЗапроса);
 



Возникает ошибка
FAILED! ICommandText::Execute(): File '#группа.dbf' does not exist.

Вопрос: Что делать?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #1 - 16. Сентября 2008 :: 08:50
Печать  
Цитата:
Синтаксис: УложитьСписокОбъектов(Объект, ИмяТабл, ВидСпр)

Параметры:
Объект - тип: Справочник/Документ/СписокЗначений (содержащий элементы типа Справочник, Документ). Объект, который необходимо уложить во временную таблицу.
ИмяТабл - тип: Строка. Возвращаемое значение. Имя временной таблицы, которое будет сгенерировано методом и возвращено через этот параметр.

Т.е. сначала укладываешь свои объекты, получаешь имя таблицы, а потом уже в запросе:
Код
Выбрать все
AND $DT238.КоррСчет IN (SELECT val FROM "+СгенерированноеИмяТаблицы+") 

  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #2 - 16. Сентября 2008 :: 08:56
Печать  
Совет. Чтобы попасть в индекс можно поментять условие:
Код
Выбрать все
|WHERE
|	J.IDDOCDEF = $ВидДокумента.Выписка AND J.DATE BETWEEN :НачДата~~ AND :КонДата~~ 


НА:
Код
Выбрать все
|WHERE
|  (J.IDDOCDEF+DTOS(J.DATE)+J.TIME+J.IDDOC) BETWEEN ($ВидДокумента.Выписка+:НачДата) AND ($ВидДокумента.Выписка+:КонДата~) 

  
Наверх
 
IP записан
 
GvH
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 06. Декабря 2006
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #3 - 16. Сентября 2008 :: 09:00
Печать  
Код
Выбрать все
|	AND $DT238.КоррСчет IN (SELECT val FROM ВремТаблица)
|
|";

СписокСчетов = СоздатьОбъект("СписокЗначений");
СписокСчетов.ДобавитьЗначение(СчетПоКоду("60.1"));
СписокСчетов.ДобавитьЗначение(СчетПоКоду("62.1"));

ВремТаблица = "";
ЗапросSQL.УложитьСписокОбъектов(СписокСчетов, ВремТаблица); 


Что-то на это тоже не особо хочет.
  
Наверх
 
IP записан
 
GvH
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 06. Декабря 2006
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #4 - 16. Сентября 2008 :: 09:02
Печать  
JohnyDeath писал(а) 16. Сентября 2008 :: 08:56:
Совет. Чтобы попасть в индекс можно поментять условие:

А если у меня DBF это на что-то скажется?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #5 - 16. Сентября 2008 :: 09:07
Печать  
GvH писал(а) 16. Сентября 2008 :: 09:00:
Код
Выбрать все
|	AND $DT238.КоррСчет IN (SELECT val FROM ВремТаблица)
|
|";

СписокСчетов = СоздатьОбъект("СписокЗначений");
СписокСчетов.ДобавитьЗначение(СчетПоКоду("60.1"));
СписокСчетов.ДобавитьЗначение(СчетПоКоду("62.1"));

ВремТаблица = "";
ЗапросSQL.УложитьСписокОбъектов(СписокСчетов, ВремТаблица); 


Что-то на это тоже не особо хочет.

Надо сначала уложить, а потом формировать текст запроса:
Код
Выбрать все
СписокСчетов = СоздатьОбъект("СписокЗначений");
СписокСчетов.ДобавитьЗначение(СчетПоКоду("60.1"));
СписокСчетов.ДобавитьЗначение(СчетПоКоду("62.1"));

ВремТаблица = "";
ЗапросSQL.УложитьСписокОбъектов(СписокСчетов, ВремТаблица);

|	AND $DT238.КоррСчет IN (SELECT val FROM "+ ВремТаблица +")
|
|"; 


  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #6 - 16. Сентября 2008 :: 09:07
Печать  
GvH писал(а) 16. Сентября 2008 :: 09:02:
JohnyDeath писал(а) 16. Сентября 2008 :: 08:56:
Совет. Чтобы попасть в индекс можно поментять условие:

А если у меня DBF это на что-то скажется?

Попробуй.  Подмигивание
  
Наверх
 
IP записан
 
GvH
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 06. Декабря 2006
Re: OLEDBData, УложитьСписокОбъектов в DBF-е?
Ответ #7 - 16. Сентября 2008 :: 10:03
Печать  
JohnyDeath, спасибо огромное. Заработало.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать