Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Подскажите с простым запросом. (число прочтений - 2479 )
MAXXL
Junior Member
**
Отсутствует



Сообщений: 17
Зарегистрирован: 25. Августа 2006
Подскажите с простым запросом.
19. Мая 2008 :: 17:34
Печать  
Понимаю что все должно быть просто, читал доку, н оне могу никак справиться со своим запросом. Написал так:
Код
Выбрать все
		ТекстЗапроса = "
		|SELECT
		|Рег.Направление as [НаправлениеЗапроса $Перечисления.Направление],
		|Рег.Место as КонОст
		|FROM
		|  $РегистрОстатки.Заказы(:ДатаЗапроса~,,,(Направление),(Место)) as Рег";
		Путь         = КаталогИБ();
		conStr         = "DRIVER=Microsoft Visual FoxPro rceType=DBF;SourceDB=" + Путь;

    
		БД = СоздатьОбъект("ODBCDatabase");
		Запрос = СоздатьОбъект("ODBCRecordSet");
		Состояние("Подключаемся к базе данных");
		Рез = БД .Соединение(conStr);

		Запрос.Debug(1);
		Запрос.SetDatabase(БД);
		Запрос.УстановитьТекстовыйПараметр("ДатаЗапроса",ДатаЗапроса);

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


Возвращает просто 0.  Вообще в исходном виде было так:
Код
Выбрать все
		Запрос = СоздатьОбъект("Запрос");
		ТекстЗапроса =
		"//{{ЗАПРОС(Сформировать)
		|Направление = Регистр.Заказы.Направление;
		|НаДату = Регистр.Заказы.НаДату;
		|Место = Регистр.Заказы.Место;
		|Функция МестоКонОст = КонОст(Место);
		|Условие(Направление = НаправлениеЗапроса);
		|Условие(НаДату = ДатаЗапроса);
		|"//}}ЗАПРОС
		;
 


Подскажите, в чем моя ошибка?
  
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Подскажите с простым запросом.
Ответ #1 - 19. Мая 2008 :: 18:46
Печать  
ВиртуальныеТаблицы работают только в SQL. Для DBF итоги по регистру надо руками сворачивать.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Подскажите с простым запросом.
Ответ #2 - 19. Мая 2008 :: 19:15
Печать  
Donat писал(а) 19. Мая 2008 :: 18:46:
ВиртуальныеТаблицы работают только в SQL. Для DBF итоги по регистру надо руками сворачивать.

Цитата:
DRIVER=Microsoft Visual FoxPro Driver
к тому же даже перестал поддерживаться лет 10 назад.
Дюже интересно из какой доки народ находит такие подключения?
  
Наверх
 
IP записан
 
MAXXL
Junior Member
**
Отсутствует



Сообщений: 17
Зарегистрирован: 25. Августа 2006
Re: Подскажите с простым запросом.
Ответ #3 - 19. Мая 2008 :: 20:37
Печать  
Из ответов на форуме образцы Улыбка
Подскажите, а как правильно будет?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Подскажите с простым запросом.
Ответ #4 - 19. Мая 2008 :: 21:31
Печать  
MAXXL писал(а) 19. Мая 2008 :: 20:37:
Из ответов на форуме образцы Улыбка
Подскажите, а как правильно будет?

http://www.1cpp.ru/docum/html/oledb.html
http://www.1cpp.ru/forum/YaBB.pl?num=1148038411/25#25

А вообще в поставке идет учебник по прямым запросам и в т.ч. ДБФ
  
Наверх
 
IP записан
 
MAXXL
Junior Member
**
Отсутствует



Сообщений: 17
Зарегистрирован: 25. Августа 2006
Re: Подскажите с простым запросом.
Ответ #5 - 20. Мая 2008 :: 18:03
Печать  
Обновил OLE DB провайдер
Написал так:
Код
Выбрать все
		БД = СоздатьОбъект("ODBCDatabase");
			Состояние("Подключаемся к базе данных");
			Рез = БД.Соединение("
			|Provider=VFPOLEDB.1;
		//	|Deleted=Yes;
			|Null = Yes;
			|Exclusive = No;
			|SourceType = DBF;
			|Data Source=" + КаталогИБ() + ";
			|Mode=ReadWrite;
			|Extended Properties="""";
			|User ID="""";
			|Password="""";
			|Mask Password=False;
			|Collating Sequence=MACHINE;
			|DSN=""""");

 


Рез возвращает 0
БД.IsConnected() тоже 0
где ошибка?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Подскажите с простым запросом.
Ответ #6 - 20. Мая 2008 :: 20:42
Печать  
Код
Выбрать все
глОлеДБ= СоздатьОбъект("OLEDBData");
	Рез=глОлеДБ.Соединение("
	|Provider=VFPOLEDB.1;
//	|Deleted=Yes;
	|Null = Yes;
	|Exclusive = No;
	|SourceType = DBF;
	|Data Source=" + КаталогИБ() + ";
	|Mode=ReadWrite;
	|Extended Properties="""";
	|User ID="""";
	|Password="""";
	|Mask Password=False;
	|Collating Sequence=MACHINE;
	|DSN=""""");
ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
ТЗ = ОлеДБКоманда.ВыполнитьИнструкцию(ТекстЗапроса);
 

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



Сообщений: 17
Зарегистрирован: 25. Августа 2006
Re: Подскажите с простым запросом.
Ответ #7 - 20. Мая 2008 :: 21:03
Печать  
теперь ругается на
"Meta name parser error: недопустимое значение параметра "$РегистрОстатки.Заказы" (1)"
Текст запроса
Код
Выбрать все
		ТекстЗапроса = "
		|SELECT
		|Рег.Направление as [НаправлениеЗапроса $Перечисления.Направление],
		|Рег.Место as КонОст
		|FROM
		|  $РегистрОстатки.Заказы(:ДатаЗапроса~,,,(Направление),(Место)) as Рег";
 


Параметр передаю так:
Код
Выбрать все
ОлеДБКоманда.УстановитьТекстовыйПараметр("ДатаЗапроса",ДатаЗапроса); 


Что не так?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Подскажите с простым запросом.
Ответ #8 - 20. Мая 2008 :: 21:39
Печать  
Donat писал(а) 19. Мая 2008 :: 18:46:
ВиртуальныеТаблицы работают только в SQL. Для DBF итоги по регистру надо руками сворачивать.

kiruha писал(а) 19. Мая 2008 :: 21:31:
А вообще в поставке идет учебник по прямым запросам и в т.ч. ДБФ
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Подскажите с простым запросом.
Ответ #9 - 21. Мая 2008 :: 05:19
Печать  
Цитата:
$РегистрОстатки.Заказы(:ДатаЗапроса~,,,(Направление),(Место)) as Рег


Для запроса к _1SJourn (и, вроде, к регистрам с "быстрой обработкой движений") вот это: :ДатаЗапроса~ - будет преобразовано в строку примерно такого вида '20080520z' - это связано с тем, что поле Date_Time_Iddoc имеет тип "Строка", в ДБФ - это три! разных поля Date, Time и Iddoc соответственно. Поэтому придется самому  Нерешительный
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать