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


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 10. Июня 2008
Прямые запросы к базе DBF
10. Сентября 2014 :: 08:31
Печать  
Какие есть варианты для выполнения прямых запросов есть вообще, это первое и подключил класс ПрямойЗапрос.ert, ругается на функции я() и вирт(), где их можно взять, это второе.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #1 - 10. Сентября 2014 :: 08:47
Печать  
1.писать запрос к дбф через 1sqlite или через 1c++ +oledb провайдер, ну или на худой конец, через класс Прямойзапрос (который будет использовать 1sqlite при обращении к дбф базе)
2. нигде, это встроенные в длл методы
  
Наверх
 
IP записан
 
fantom
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 10. Июня 2008
Re: Прямые запросы к базе DBF
Ответ #2 - 10. Сентября 2014 :: 09:05
Печать  
а не моноольно будет работать?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #3 - 10. Сентября 2014 :: 09:15
Печать  
будет
  
Наверх
 
IP записан
 
fantom
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 10. Июня 2008
Re: Прямые запросы к базе DBF
Ответ #4 - 10. Сентября 2014 :: 10:07
Печать  
База = СоздатьОбъект("OLEDBData");
Соединение="Provider=vfpoledb.1;Mode=ReadWrite;Data Source="+КаталогИБ()+";Collating Sequence=machine;";
Если База.Соединение(Соединение)=0 Тогда
           Сообщить("Не соеденились");
           Возврат;
КонецЕсли;
ЗапросСКЛ = База.СоздатьКоманду();

спсПодразделенияУсловия = СоздатьОбъект("СписокЗначений");
Для счП = 1 По спсПодразделения.РазмерСписка() Цикл
     Если спсПодразделения.Пометка(счП) = 1 Тогда
;
     КонецЕсли;
КонецЦикла;

           ТекстЗапроса = "
           |SELECT
           |        Сотрудники.ID       Ссылка
           |      , Сотрудники.ISMARK   ПометкаУдаления
           |      , Сотрудники.PARENTID Родитель
           |      , Сотрудники.ISFOLDER ЭтоГруппа
           |      , Сотрудники.CODE     Код
           |      , Сотрудники.DESCR    Наименование
           |      , $ПоследнееЗначение.Сотрудники.Подразделение(Сотрудники.ID, :ВыбДата) [Подразделение $Справочник.Подразделения]
           |FROM $Справочник.Сотрудники AS Сотрудники With (NOLOCK)
           |";
           ЗапросСКЛ.УстановитьТекстовыйПараметр("ВыбДата", ТекущаяДата());
           тз = ЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса);
           тз.ВыбратьСтроку();
Ошибка  FAILED! ICommandText::Execute(): Syntax error. Что я делаю не так?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #5 - 10. Сентября 2014 :: 10:42
Печать  
ПоследнееЗначение нет в оледб

как и хинтов (nolock)
  
Наверх
 
IP записан
 
fantom
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 10. Июня 2008
Re: Прямые запросы к базе DBF
Ответ #6 - 10. Сентября 2014 :: 10:57
Печать  
без этого FAILED! ICommandText::Execute(): Cannot open file *\sc16.dbf
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #7 - 10. Сентября 2014 :: 11:00
Печать  
монополь ж еще поди запущаешь, да ?
Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #8 - 10. Сентября 2014 :: 11:02
Печать  
Для выполнения в монопольном режиме ставь
ЭТО

или пиши с помощью 1sqlite
  
Наверх
 
IP записан
 
fantom
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 10. Июня 2008
Re: Прямые запросы к базе DBF
Ответ #9 - 10. Сентября 2014 :: 12:05
Печать  
ага), заработало). А условие по списку значений так же как и для скульной версии делать или как-то по другому?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #10 - 10. Сентября 2014 :: 12:31
Печать  
да почти тоже самое:

Код
Выбрать все
|where $Рег.Номенклатура in (select val from :ВыбНоменклатура)


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

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


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 10. Июня 2008
Re: Прямые запросы к базе DBF
Ответ #11 - 10. Сентября 2014 :: 12:38
Печать  
спасибо
  
Наверх
 
IP записан
 
Dimon_Sarmat
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #12 - 29. Января 2015 :: 10:48
Печать  
        База = СоздатьОбъект("OLEDBData");
        Соединение="Provider=vfpoledb.1;Mode=ReadWrite;Data                               Source="+КаталогИБ()+";Collating Sequence=machine;";
        Если База.Соединение(Соединение)=0 Тогда
              Сообщить("Не подключились к базе DBF");
              Возврат;
     Иначе
            Сообщить("Все ОК");
       КонецЕсли;
Запрос = База.СоздатьКоманду();

ТекстЗапроса = "
     |Select
     |   Рег.Товар      [Товар $Справочник.Товары],
     |   Рег.Склад      [Склад $Справочник.Склады],
     |   Рег.Количество as Кво
     |   Рег.СуммаУчетная as Сумма
     |FROM
     |   $РегистрОстатки.ОстаткиТоваров as Рег
     |WHERE
     |      Рег.Склад = :ВыбСклад";

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

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

Выдает ошибку: {Глобальный модуль(40)}: FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword.

Если убрать "Запрос.УстановитьТекстовыйПараметр...", то ошибка уже другая: {Глобальный модуль(40)}: Meta name parser error: не указан параметр ":ВыбСклад"

ВыбСклад - элемент справочника
  
Наверх
 
IP записан
 
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Re: Прямые запросы к базе DBF
Ответ #13 - 29. Января 2015 :: 11:10
Печать  
ТекстЗапроса = "
     |Select
     |   $Рег.Товар      [Товар $Справочник.Товары],
     |   $Рег.Склад      [Склад $Справочник.Склады],
     |   $Рег.Количество as Кво
     |   $Рег.СуммаУчетная as Сумма
     |FROM
     |   $РегистрОстатки.ОстаткиТоваров as Рег
     |WHERE
     |      $Рег.Склад = :ВыбСклад";
  
Наверх
 
IP записан
 
Dimon_Sarmat
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #14 - 29. Января 2015 :: 11:29
Печать  
теперь выдает:
Meta name parser error: неизвестное метаимя или алиас "$Рег"

а если убираю $ возле Рег, то пишет:
FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать