Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Пытаюсь освоить Прямые запросы (число прочтений - 2033 )
proudbird
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 28. Декабря 2009
Пытаюсь освоить Прямые запросы
28. Декабря 2009 :: 13:23
Печать  
Доброго времени суток.
Вот решил попробовать освоить приемы работы с прямыми запросами и сразу же столкнулся с проблемами. Пытался найти ответы на свои вопросы в уже имеющихся темах и статьях, но так ничего и не получилось. Если можно, помогите.
Итак, у меня DBF версия 1C, установил драйвер MICROSOFT OLE DB PROVIDER FOR VISUAL FOXPRO 9.0 SP2. Пытаюсь сделать простейший запрос по остаткам товаров на текущую дату:

Код
Выбрать все
Процедура Остатки()

	База = СоздатьОбъект("OLEDBData");
	Соединение = "Provider=VFPOLEDB.1;Data Source="+КаталогИБ()+";Mode=ReadWrite;Collating Sequence=MACHINE";
    РезультатПодключения = База.Соединение(Соединение);
	Если РезультатПодключения = 0 Тогда
	    Предупреждение("Не удалось подключиться к базе данных!");
		Возврат;
	КонецЕсли;

	Запрос = База.СоздатьКоманду();

	Запрос.УстановитьТекстовыйПараметр("ВыбДата",ТекущаяДата());

	ТекстЗапроса = "
		|SELECT
		|    Рег.Товар as [Товар $Справочник.Номенклатура],
		|    Рег.Количество as Количество
		|FROM
		|    $РегистрОстатки.ОстаткиТоваров(:ВыбДата~,,,(Товар),(Количество)) as Рег";

	ТЗ = СоздатьОбъект("ТаблицаЗначений");
	Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
	ТЗ.ВыбратьСтроку();

КонецПроцедуры

 



При попытке выполнить процедуру ругается следующим образом:

Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
{D:\TRADE\ADDINS\1CPP\SQLDIRECT.ERT(52)}: FAILED! ICommandText::Execute(): Syntax error.

Кто-нибудь, подскажите в чем тут дело и что я делаю не так. Заранее благодарен за помощь.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пытаюсь освоить Прямые запросы
Ответ #1 - 28. Декабря 2009 :: 13:40
Печать  
Виртуальный таблицы реализованы только для ODBC
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Пытаюсь освоить Прямые запросы
Ответ #2 - 28. Декабря 2009 :: 13:41
Печать  
В FAQ пост №24:
Цитата:
17.      Какие основные отличия  запросов SQL и ДБФ ?
а. Виртуальные таблицы  не поддерживаются в ДБФ.
  
Наверх
 
IP записан
 
proudbird
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 28. Декабря 2009
Re: Пытаюсь освоить Прямые запросы
Ответ #3 - 28. Декабря 2009 :: 13:44
Печать  
JohnyDeath писал(а) 28. Декабря 2009 :: 13:40:
Виртуальный таблицы реализованы только для ODBC


Код
Выбрать все
Процедура Остатки()

	БД =СоздатьОбъект("ODBCDataBase");
	БД.Соединение("DRIVER={Microsoft Visual FoxPro B="+КаталогИБ());
	Запрос=СоздатьОбъект("ODBCRecordSet");
	Запрос.УстБД(БД);

	Запрос.УстановитьТекстовыйПараметр("ВыбДата",ТекущаяДата());

	ТекстЗапроса = "
		|SELECT
		|    Рег.Товар as [Товар $Справочник.Номенклатура],
		|    Рег.Количество as Количество
		|FROM
		|    $РегистрОстатки.ОстаткиТоваров(:ВыбДата~,,,(Товар),(Количество)) as Рег";

	ТЗ = СоздатьОбъект("ТаблицаЗначений");
	Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
	ТЗ.ВыбратьСтроку();

КонецПроцедуры
 



Ошибки не выдает, на и результата тоже нет!
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Пытаюсь освоить Прямые запросы
Ответ #4 - 28. Декабря 2009 :: 13:49
Печать  
JohnyDeath писал(а) 28. Декабря 2009 :: 13:40:
Виртуальный таблицы реализованы только для ODBC

Ну я бы не стал говорить с такой категоричностью.
Автор топика - обратите внимание на класс ПрямойЗапрос Подмигивание
  
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пытаюсь освоить Прямые запросы
Ответ #5 - 28. Декабря 2009 :: 14:02
Печать  
leshik, ну мы же про "штатные" возможности 1С++ говорим Подмигивание , а там такого нет.

Да и и в классе "ПрямойЗапрос" OleDB не поддерживатся - используется 1sqlite.

Автор, не рекомендую вообще использовать ODBC для дбф-баз. Поэтому либо сам пиши запросы к регистрам, либо воспользуйся советом leshik-а
  
Наверх
 
IP записан
 
proudbird
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 28. Декабря 2009
Re: Пытаюсь освоить Прямые запросы
Ответ #6 - 28. Декабря 2009 :: 14:06
Печать  
Я так понял, что моя проблема в том, что у меня не SQL версия.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Пытаюсь освоить Прямые запросы
Ответ #7 - 28. Декабря 2009 :: 14:59
Печать  
Главное, чтобы ты понял что есть 1С++ в котором ВТ (виртуальные таблицы) реализованы только для SQL версий 1С++
а есть дополнительный класс ПрямойЗапрос в котором с использованием 1sqLite реализованы ВТ и для DBF версий.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать