Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Прямые запросы к базе DBF (число прочтений - 9483 )
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 записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #15 - 29. Января 2015 :: 12:39
Печать  
А если запятую после Кво добавить?  Круглые глаза
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Dimon_Sarmat
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #16 - 29. Января 2015 :: 13:00
Печать  
неа, не помогает запятая))) уменьшил запрос до минимума, с прямымобращением к регистру, теперь пошагово алиасами заменяю, пока идет процесс... если будет все ок, выложу все "танцы")))
  
Наверх
 
IP записан
 
Dimon_Sarmat
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #17 - 29. Января 2015 :: 13:54
Печать  
еще один вопрос нарисовался...
Запрос в ТЗ выгружается, только почему-то количество по всем строкам пишет со знаком "+", где расход был - тоже суммирует при группировке, а не вычитает

PS. Сорри, нафлудил, обращался к регистру движений, а не итогов
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #18 - 29. Января 2015 :: 13:56
Печать  
Це же оледб:


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

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #19 - 29. Января 2015 :: 13:57
Печать  
Dimon_Sarmat писал(а) 29. Января 2015 :: 13:54:
еще один вопрос нарисовался...
Запрос в ТЗ выгружается, только почему-то количество по всем строкам пишет со знаком "+", где расход был - тоже суммирует при группировке, а не вычитает


Покажи свой текст запроса
  
Наверх
 
IP записан
 
Dimon_Sarmat
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #20 - 29. Января 2015 :: 13:57
Печать  
все, разобрался "РегистрИтоги" надо было писать
  
Наверх
 
IP записан
 
Dimon_Sarmat
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #21 - 29. Января 2015 :: 13:59
Печать  
Eprst писал(а) 29. Января 2015 :: 13:56:
Це же оледб:


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



Да-да, и виртуальная таблица "РегистрОстатки" в дбф не работает)))
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы к базе DBF
Ответ #22 - 29. Января 2015 :: 14:14
Печать  
На вот, занимайся
  

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


1C++ rocks!

Сообщений: 7
Зарегистрирован: 29. Января 2015
Пол: Мужской
Re: Прямые запросы к базе DBF
Ответ #23 - 29. Января 2015 :: 14:43
Печать  
Eprst писал(а) 29. Января 2015 :: 14:14:
На вот, занимайся


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