Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перешл с SQL на DBF как быть с запросом (число прочтений - 9388 )
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Перешл с SQL на DBF как быть с запросом
07. Апреля 2010 :: 02:49
Печать  
Код
Выбрать все
ТекстЗапроса = "
|create FUNCTION  sp_tohex(@val int, @len1 int) RETURNS varchar(9)
|AS
|begin
|declare @v int;
|declare @tval varchar(9);
|set @v = @val;
|set @tval = '';
|
|while (@v > 0)
|begin
|   set @tval = SUBSTRING('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',1+@v%36,1)+@tval;
|   set @v = @v/36;
|end;
|
|if @tval='' set @tval='0';
|
|while (len(@tval) < @len1)
|begin
|set @tval = ' '+@tval;
|end;
|RETURN(@tval);
|end
|";
Запрос.Открыть(ТекстЗапроса);
ТекстЗапроса = "
|SELECT
|     dbo.sp_tohex(Жур.IDDocDef, 4) +
|Рег.IDDoc [Док $Документ],
|	Жур.SP798 [Проект $Справочник.Проекты]
|FROM
|    $Регистр.Покупатели Рег
|LEFT JOIN 1SJourn Жур ON Жур.IDDoc = Рег.IDDoc
|WHERE Жур.SP798 IN (SELECT val FROM #ВыбПроект) AND
|Жур.Date BETWEEN :НачДата AND :КонДата~ AND
|Жур.Closed  = 1
|";

Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНач);
Запрос.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
Запрос.УложитьСписокОбъектов(ВыбПроект,"#ВыбПроект","Проекты");
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
 



Данный код вываливается так как в DBF нельзя создать функцию, может кто подскажет как это обойти или как сделать выборку?


Начал копать дальше, сделал такого типа запрос
Код
Выбрать все
ТекстЗапроса = "

|SELECT

|  Жур.IDDoc [Док $Документ],

|  Жур.IDDocDef Док_вид

|FROM

|  1Sjourn Жур

|INNER JOIN

|  1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND

|			  Отбор.MDID = $ГрафаОтбора.Проект AND

|			  Отбор.ParentVal = #ВыбПроект AND

|			  Отбор.ChildDate BETWEEN :НачДата AND :КонДата~";
 



Валится что незнает общего реквизита Проект, хотя он есть и на нем стоит Отбор.
« Последняя редакция: 07. Апреля 2010 :: 04:00 - n0_0ne »  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Перешл с SQL на DBF как быть с запросом
Ответ #1 - 07. Апреля 2010 :: 04:29
Печать  
Перейди на ПрямойЗапрос. Там проще будет.
  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #2 - 07. Апреля 2010 :: 05:06
Печать  
|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|    ,Жур.$ОбщийРеквизит.Проект as [Проект $Справочник.Проекты]
|    ,$Рег.Покупатель as [Клиентос $Справочник.Контрагенты]
|FROM
|    $Регистр.Покупатели Рег
|LEFT JOIN 1SJourn Жур ON Жур.IDDoc = Рег.IDDoc
|WHERE Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :ВыбПроект)
|AND Жур.Date BETWEEN :НачДата~~ AND :КонДата~~


И это.. цель то какая в целом ?
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #3 - 07. Апреля 2010 :: 05:20
Печать  
Цель - отбор документов за выбранный период с условием проекта, контрагента, потом скорее всего товара и т.д. )

Тыкните в прямой запрос )


Код
Выбрать все
ТекстЗапроса = "

|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|    ,Жур.$ОбщийРеквизит.Проект as [Проект $Справочник.Проекты]
|FROM
|    $Регистр.Покупатели Рег
|LEFT JOIN 1SJourn Жур ON Жур.IDDoc = Рег.IDDoc
|WHERE Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :#ВыбПроект)
|AND Жур.Date BETWEEN :НачДата AND :КонДата~ AND
|Жур.Closed  = 1
|";

Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНач);
Запрос.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
Запрос.УложитьСписокОбъектов(ВыбПроект,"#ВыбПроект","Проекты");
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
 



Валится с ошибкой даже не видел таких )))
FAILED! ICommandText::Execute(): Invalid path or file name.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #4 - 07. Апреля 2010 :: 05:21
Печать  
Нафига тогда регистр там сдался ?...
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #5 - 07. Апреля 2010 :: 05:30
Печать  
Хороший вопрос )

Регистр выкинул.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #6 - 07. Апреля 2010 :: 05:37
Печать  
n0_0ne писал(а) 07. Апреля 2010 :: 05:20:
Валится с ошибкой даже не видел таких )))
FAILED! ICommandText::Execute(): Invalid path or file name.


Ты это , внимательнее смотри, что тебе пишут то хоть..
на модификаторы у даты, на имя временной таблички и т.д..
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #7 - 07. Апреля 2010 :: 06:03
Печать  
Eprst
Большое спасибо, действительно запутал SQL и DBF все работает все хорошо! А про прямые запросы действительно весч, надо попробывать )

Ток не подскажешь почему после укладки во временную таблицу, не хочет делать выборку если проект выбран не сам объект, а папка?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #8 - 07. Апреля 2010 :: 06:24
Печать  
вот так можешь делать:

WHERE Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :ВыбПроект)



врГруппа="";
Запрос.УложитьСписокОбъектов(ВыбПроект, врГруппа,"Проекты");
Запрос.УстановитьТекстовыйПараметр("ВыбПроект", врГруппа);
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #9 - 07. Апреля 2010 :: 06:46
Печать  
хм вроде тоже самое писал, ток не дописал третье условие.
Такие запросы транзакцию в ДБФ уберают?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #10 - 07. Апреля 2010 :: 06:52
Печать  
вот так можно писать перед выполнением запроса
Код
Выбрать все
гЗапрос = глОлеДБ.СоздатьКоманду();
гЗапрос.Выполнить("EXECSCRIPT('SET ANSI OFF')");  
// Устанавливаем время ожидания захвата таблиц , если во время выполнения запроса кто то проводит документы
// Очень полезная функция - аналогична времени ожидания в 1С
гЗапрос.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')");
// Убираем буфепизацию, чтобы данные возвращаемые запросам всегда были актуальны

гЗапрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')");
гЗапрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");// отключили блокировки  



Для выполнения фокс -запросов в монопольном режиме, нужен либо провайдер от Uzhast http://uzhast.fatal.ru/vfpoledb/
Либо патч от hogik
http://www.infostart.ru/public/16268/
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #11 - 07. Апреля 2010 :: 07:14
Печать  
Патчиная дллка провайдера стоит. Просто сейчас делал тест, человек запустил отчет обычный еще один человек запустил отчет обычный и я запустил отчет через ODBC, он делался в место 22 секунд полторы минуты, и дважды выскакивало сообщение ожидание захвата таблицы.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #12 - 07. Апреля 2010 :: 07:20
Печать  
Через ODBC ?
используй фоксовый провайдер, + то что выше.. там "грязное" чтение..
+ используй индексы, ежели фокс используешь
http://www.1cpp.ru/forum/YaBB.pl?num=1184317705

Или пиши на 1sqlite - там не надо заботится о попадании в индекс..
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #13 - 07. Апреля 2010 :: 07:53
Печать  
Прости, OLEDB.

С индексами чет не вкурю пока, не хочет заводится, из примера с той темы пишет ошибку  ICommandText::Execute(): Command contains unrecognized phrase/keyword. Курю дальше )

Выкурил ) Ускорения обещенного не увидел, как делался 22 сек так и делается. С индексами т.д.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #14 - 07. Апреля 2010 :: 08:03
Печать  
это ошибка в синтаксисе.. скобочка там не там, например, зпт не хватает или лишняя и т.д..
Пользуйся Отладка(1)
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #15 - 21. Апреля 2010 :: 07:12
Печать  
Eprst
Ув. можно еще ваш мозг немного поюзать )))
Теперь в этот запрос, надо добавить исключение. Чтоб в выборку попадали только те документы у которых проект равен выбпроекту и док.корнтрагент не равен выбконтрагенту.

за ранее спс)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #16 - 21. Апреля 2010 :: 07:16
Печать  
Дык у тебя есть же условие на проект.. ?
А на клиентоса - цепляй шапку(и) нужного документа(ов) через left join , и делай условие на клиентоса из этой шапки.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Перешл с SQL на DBF как быть с запросом
Ответ #17 - 21. Апреля 2010 :: 07:32
Печать  
Хотелось бы порекомендовать отборы по Проекту накладывать по таблице 1sjourn а по Контрагенту накладывать через таблицу 1scrdoс. Так как Проект - это общий реквизит документов, а по Контрагенту есть графа отбора.
Автор, может стоит попробовать использовать ПрямойЗапрос?
  
Наверх
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #18 - 21. Апреля 2010 :: 08:13
Печать  
Eprst
Спасибо )
leshik
Уже второй раз говоришь юзать прямой запрос )
Неужели действительно стоящая вещь?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Перешл с SQL на DBF как быть с запросом
Ответ #19 - 21. Апреля 2010 :: 10:58
Печать  
n0_0ne, ты попробуй. Вдруг понравится Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #20 - 22. Апреля 2010 :: 03:43
Печать  
Код
Выбрать все
|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|    ,Жур.$ОбщийРеквизит.Проект as [Проект $Справочник.Проекты]
|
|FROM
|    1SJourn Жур
|LEFT JOIN
|	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
|				Отбор. MDID = $ГрафаОтбора.Контрагент AND
|			    left(Отбор.ParentVal,4) = 'B1  '  AND   substring(Отбор.ParentVal,5,9) in (SELECT Val FROM :ВыбКонтр) AND
|			    Отбор.ChildDate BETWEEN (DTOS(:НачДата~~)+'		   ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
|WHERE DTOS(date)+time+iddoc BETWEEN (DTOS(:НачДата~~)+'		   ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
|AND Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :ВыбПроект) AND
|Жур.Closed  = 1
| 


Не работает Печаль

Код
Выбрать все
|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|    ,Жур.$ОбщийРеквизит.Проект as [Проект $Справочник.Проекты]
|
|FROM
|    1SJourn Жур
|LEFT JOIN
|	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
|				Отбор. MDID = $ГрафаОтбора.Контрагент AND
|			    Отбор.ParentVal IN (SELECT val FROM :ВыбКонтр) AND
|			    Отбор.ChildDate BETWEEN (DTOS(:НачДата~~)+'		   ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
|WHERE DTOS(date)+time+iddoc BETWEEN (DTOS(:НачДата~~)+'		   ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
|AND Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :ВыбПроект) AND
|Жур.Closed  = 1
| 


не работает Печаль
А уж про отрицание вообще молчу, цель выбрать все документы с выбранным проектом, но не выбирать те кто попадают к выбранным контрагентам.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #21 - 22. Апреля 2010 :: 04:33
Печать  
Еще бы это работало..
вот это что за....???


Цитата:
Отбор.ChildDate BETWEEN (DTOS(:НачДата~~)+'               ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')


+ если уж делаешь таким способом фильтр на клиентоса, то нужен INNER JOIN
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #22 - 22. Апреля 2010 :: 04:54
Печать  
Как что ) Чтоб индексы брал.

Он валится именно на списке контров, что ему ненравится как я их ему преподношу хоть инер хоть лефтом

В документации идет речь об УложитьСписокОбъектов13, а в новой версии его уже или нет или он у меня не раб(
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #23 - 22. Апреля 2010 :: 05:27
Печать  
n0_0ne писал(а) 22. Апреля 2010 :: 04:54:
Как что ) Чтоб индексы брал.



Ну бред же написан...
Улыбка

Открой словарь и посмотри, какой есть индекс у 1SCRDOC.
ЗЫ:Ну хоть статью то прочитай, для начала:
http://www.1cpp.ru/forum/YaBB.pl?num=1184317705
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #24 - 22. Апреля 2010 :: 05:34
Печать  
Код
Выбрать все
FROM
    1SJourn Жур
INNER JOIN
	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
				Отбор. MDID = '  NY' AND
				Отбор.ParentVal IN (SELECT val FROM '8a1b6cfc-6bd3-4ce4-bd6f-7549b571930a') AND
			    Отбор.ChildDate BETWEEN {d '1990-01-01'} AND {d '2010-03-31'}
WHERE DTOS(date)+time+iddoc BETWEEN (DTOS({d '1990-01-01'})+'		   ') AND (DTOS({d '2010-03-31'})+'ZZZZZZZZZZZZZZZ')
AND Жур.sp798 IN (SELECT val FROM '6db28948-060d-40a9-81ca-dbca3e747e45') AND
Жур.Closed  = 1 



Вот что дает отладчик. Даже без выбора контры. Да вроде читал, или не внимат читал или глупо поступил. Убрал эту бредовую надпись на стандартную) По сути я думаю можно вообще убрать дату из инера.

Ткните носом где ошибка!!!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #25 - 22. Апреля 2010 :: 05:53
Печать  
фильтр на дату не нужен, клиентосов нужно упаковывать в самуюдлиннуюСтрокуБД, ибо ParentVal - char(23)

Тип того:
left(Отбор.ParentVal,4) = 'B1  '  AND   substring(Отбор.ParentVal,5,9) in (SELECT Val FROM :ВыбКонтрагент)
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #26 - 22. Апреля 2010 :: 06:23
Печать  
Делал и так все равно ошибка валится -

Код
Выбрать все
SELECT
     Жур.IDDocDef+Жур.IDDoc as [Док_1c_type_Документ]
    ,Жур.sp798 as [Проект_1c_type_Справочник_Проекты]
    
FROM
    1SJourn Жур
INNER JOIN
	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
				Отбор. MDID = '  NY' AND
				left(Отбор.ParentVal,4) = 'B1  '  AND   substring(Отбор.ParentVal,5,9) in (SELECT Val FROM '3ee4f320-1a14-4134-8304-cf9d11ecbb3d')
			    
WHERE DTOS(date)+time+iddoc BETWEEN (DTOS({d '1990-01-01'})+'		   ') AND (DTOS({d '2010-03-31'})+'ZZZZZZZZZZZZZZZ')
AND Жур.sp798 IN (SELECT val FROM 'e2b83c8e-b52e-4254-babb-877055b1378f') AND
Жур.Closed  = 1
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
ICommandText::Execute(): SQL: Queries of this type are not supported. 

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #27 - 22. Апреля 2010 :: 07:12
Печать  
Для фокса нужно SUBSTR
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #28 - 22. Апреля 2010 :: 07:17
Печать  
Некатит ))) Блин вроде простой запрос, а не раб ((((
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #29 - 22. Апреля 2010 :: 07:36
Печать  
Код
Выбрать все
|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|    ,Жур.$ОбщийРеквизит.Проект as [Проект $Справочник.Проекты],
|	 $Док.Контрагент as [Контрагент $Справочник]
|FROM
|    1SJourn Жур
|INNER JOIN
|	$Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc AND $Док.Контрагент in (SELECT val FROM :ВыбКонтр)
|WHERE DTOS(date)+time+iddoc BETWEEN (DTOS(:НачДата~~)+'		   ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
|AND Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :ВыбПроект) AND
|Жур.Closed  = 1
|
|";
 


Так тоже не кактит и ошибка таже ( FAILED! ICommandText::Execute(): SQL: Queries of this type are not supported.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Перешл с SQL на DBF как быть с запросом
Ответ #30 - 22. Апреля 2010 :: 07:38
Печать  
Код
Выбрать все
(SELECT val FROM :ВыбПроект) 


А может все таки
Код
Выбрать все
(SELECT val FROM #СзПроектов) 


Был не прав - видимо в :ВыбПроект имя таблицы.
  
Наверх
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #31 - 22. Апреля 2010 :: 07:48
Печать  
Если просто указать одного клиента без списка, то все работает!
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #32 - 22. Апреля 2010 :: 07:50
Печать  
Код
Выбрать все
ТекстЗапроса = "

|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|    ,Жур.$ОбщийРеквизит.Проект as [Проект $Справочник.Проекты]
|    
|FROM
|    1SJourn Жур
|INNER JOIN
|	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
|				Отбор. MDID = $ГрафаОтбора.Контрагент AND
|				Отбор.ParentVal = :ВыбКонтр
|			    
|WHERE DTOS(date)+time+iddoc BETWEEN (DTOS(:НачДата~~)+'		   ') AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
|AND Жур.$ОбщийРеквизит.Проект IN (SELECT val FROM :ВыбПроект) AND
|Жур.Closed  = 1
|
|";


врГруппа="";
Запрос.УложитьСписокОбъектов(ВыбПроект, врГруппа,"Проекты");
Запрос.УстановитьТекстовыйПараметр("ВыбПроект", врГруппа);

врГруппа2="";
Запрос.УложитьСписокОбъектов(ВыбКонтр, врГруппа2,"Контрагенты");
Запрос.УстановитьТекстовыйПараметр("ВыбКонтр", врГруппа2);
 



В данном примере ВыбКонтр заменен на одного клиента, а не на список.

Как только меняю на список, сразу валится ошибка.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #33 - 22. Апреля 2010 :: 07:50
Печать  
Блин..так лень QA открывать:

Код
Выбрать все
.....
FROM
    1SJourn Жур
INNER JOIN
	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc
	  AND Отбор. MDID = $ГрафаОтбора.Контрагент
	  AND   substr(Отбор.ParentVal,7,9) in (SELECT val FROM :ВыбКонтр)
........
 



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


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #34 - 22. Апреля 2010 :: 07:53
Печать  
Был бы он ) И один фиг не арбайтен!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #35 - 22. Апреля 2010 :: 07:54
Печать  
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #36 - 22. Апреля 2010 :: 08:03
Печать  
Короче, на вот, рабочий код:

Код
Выбрать все
|SELECT
|     Жур.IDDocDef+Жур.IDDoc as [Док $Документ]
|     ,substr(Отбор.ParentVal,7,9) as [Контрагент $Справочник.Контрагенты]
|FROM
|    1SJourn Жур
|INNER JOIN
|	1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc
|	  AND Отбор. MDID = $ГрафаОтбора.Контрагент
|Where
|    substr(Отбор.ParentVal,7,9) in (SELECT val FROM :ВыбКонтрагент) 

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


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #37 - 22. Апреля 2010 :: 08:09
Печать  
А в чем сложность то почему не работает обычный запрос?
Код то рабочий, а как теперь к нему прикрутить проекты ))) Думаю бдет тот же эффект.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #38 - 22. Апреля 2010 :: 08:14
Печать  
Какой именно ?
У тебя ошибка - нельзя в фоксе делать вложенный запрос в присоединении табличек..
Улыбка
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #39 - 22. Апреля 2010 :: 08:20
Печать  
Ну епт ((((
Делать два запроса чтоли((((

А как тогда сделать отбор доков по двум - трем - четырем реквизитам (списку) ???
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #40 - 22. Апреля 2010 :: 08:24
Печать  
n0_0ne писал(а) 22. Апреля 2010 :: 08:20:
Ну епт ((((
Делать два запроса чтоли((((

А как тогда сделать отбор доков по двум - трем - четырем реквизитам (списку) ???


Ау... я ж тебе написал рабочий код..
Добавь в него условие на проект и период по журнальчику... и всё.
  
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #41 - 22. Апреля 2010 :: 08:27
Печать  
Дык я добавил! Че я тундра чтоли и получил тоже самое что и изначально (
Или я совсем неулавливаю мыслю или хз ))))

Вот логически и объявил проект так как мне нужно это поле, далее добавил условие по дате из журнала через индекс и сделал проверку на принодлежность проекта к группе и поулчил что нельзя так делать

Даже больше скажу, все работает пока не добавляешь условие по проекту!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перешл с SQL на DBF как быть с запросом
Ответ #42 - 22. Апреля 2010 :: 09:03
Печать  
на вот, балуйся..
  

___________2.ert ( 261 KB | Загрузки )
Наверх
 
IP записан
 
n0_0ne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 02. Марта 2009
Re: Перешл с SQL на DBF как быть с запросом
Ответ #43 - 22. Апреля 2010 :: 09:32
Печать  
Вот не поверишь, один в один написал. Я про запрос.
И выдал ошибку.
А все оказалось в неверной последоваьтельности в поле WHERE
Спасибо тебе ОГРОМНОЕ Епрст. Был бы ты из г.Барнаула напоил бы пивом до отвала!!!


А вот подскажи, почему ставлю NOT перед IN ничего не показывает?

Все раб ) Через поле ввода все работает )
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать