Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: 1c++ и внешний файл DBF

v7: 1c++ и внешний файл DBF
Я
   DES
 
12.07.18 - 18:50
Есть ли в 1с++ функции запросов к внешним файлам DBF ?
 
 
   Djelf
 
1 - 12.07.18 - 18:54
(0) А штатные возможности чем не устраивают?
   DES
 
2 - 12.07.18 - 18:57
не знаю о таких
   Djelf
 
3 - 12.07.18 - 18:59
(2) Печально. Изучай встроенный объект 1С - XBASE
   Djelf
 
4 - 12.07.18 - 19:02
   NSSerg
 
5 - 12.07.18 - 19:05
(0) если по каким то причинам xbase не устраивает, то иожно через ado
Вопрос к vde69 по ADO
   DES
 
6 - 12.07.18 - 19:07
(3) Здрасьте, приехали...
Найдите в Вашей ссылке слово ЗАПРОС или SELECT
   Djelf
 
7 - 12.07.18 - 19:20
(6) "ЗАПРОС" вообще не относится к 1C++, SELECT относится.
Но вопроса про SELECT не было, хотя он тоже запрос.
Прямое чтение DBF в 1C++ не встроена. Работает через ado или oledb.
В 1sqlite тоже не встроено, но если подключить к 1sqlite расширение libspatialite то чтение DBF возможно.
   Emery
 
8 - 12.07.18 - 19:36
(0) > Есть ли в 1с++ функции запросов к внешним файлам DBF ?

У себя я предпочел воспользоваться внешним приложением на Visual FoxPro, которое вызывается из «семерки», а в VFP доступ к 1С77 осуществляется как к DDE-серверу. При этом VFP передает рассчитанные с его помощью данные в особых dbf-файлах (с подключением к 1С-овским cdx-индексам из VFP) в экспортируемую функцию 1С, которая уже отображает расчет заработной платы в режиме он-лайн. Схема работы просто великолепная для «семерки» и, похоже, что никто, кроме меня, ее не использует в профессиональных конфигурациях.
   DES
 
9 - 12.07.18 - 19:38
сделал подключение по
DBConn = CreateObject("ADODB.Connection");
     DBConn.Open("Provider=vfpoledb;"+ 
           "Data Source=E:\TEMPO\zz.dbf;"+ 
           "Mode=ReadWrite|Share Deny None;"+ 
           "Collating Sequence=MACHINE;"+ 
           "Password='';");           
  
А как указать более чем одного файла источника?
   DES
 
10 - 12.07.18 - 19:39
или как указывать их прямо в запросе?
 
 Рекламное место пустует
   Попытка1С
 
11 - 12.07.18 - 20:13
А что ты собрался делать с несколькими источниками?
Читай последовательно, пихай в ТЗ или еще куда
   Попытка1С
 
12 - 12.07.18 - 20:14
Если хочешь делать прямой запрос с нескольких файлов, тогда грузи в ТЗ, а тз уже помещай в ВТ на скуле, и к ним уже обращайся.
   DES
 
13 - 12.07.18 - 20:15
а как тз закинуть в вт?
   DES
 
14 - 12.07.18 - 20:15
и не читаются цифровые поля, говорит
{Обработка.OLEDB_FoxPro.Форма.Модуль(22)}: Тип переменой не поддерживается
   Попытка1С
 
15 - 12.07.18 - 20:20
Покури метод ВыполнитьSQL_ИзТЗ 

вроде так называется
   Попытка1С
 
16 - 12.07.18 - 20:21
   DES
 
17 - 12.07.18 - 20:25
(12) ну мне же нужно свзать данные из двух файлов, а в ТЗ  это проблематично делать
   big
 
18 - 12.07.18 - 20:32
База = СоздатьОбъект("OLEDBData");
        Соединение ="
        |Provider=VFPOLEDB.1;
        |Data Source=" + КаталогИБ() + ";
        |Mode=Read;
        |";
        Рез        = База.Соединение(Соединение);
        Запрос    = База.СоздатьКоманду();

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

Ессно в ТекстЗапроса можно поместить запросы по разным таблицам с объединением и т.д. и т.п.
   Попытка1С
 
19 - 12.07.18 - 20:33
(17) Да я понял, читай ветку что я скинул, там в первом посте есть код.
   DES
 
20 - 12.07.18 - 20:38
(19) у меня не считывается из DBF поля типа NUMERICВернее считывается в рекордсет, а
objRecordset.Fields(6).Value = Ошибка в выражении!
причем 
objRecordset.Fields(5).Value = "пять"
   NSSerg
 
21 - 12.07.18 - 20:59
(20) CAST(STR as CHAR) в запросе не поможет?
   DES
 
22 - 12.07.18 - 21:08
(21 ) Да!
   DES
 
23 - 13.07.18 - 06:17
а есть способ как то загонять результаты ADODB.Connection в ТЗ ?
   big
 
24 - 13.07.18 - 06:52
(23) То есть штатный режим работы 1С++ не устраивает? Ковыряться с ADO больше удовольствия доставляет? ;)

В (18) результат в ТЗ выгружается
   DES
 
25 - 13.07.18 - 07:53
(24)спс, чет затупил...
   DES
 
26 - 13.07.18 - 08:07
подскажите синтаксис для начала
"SELECT a.*, b.*  FROM [pp.dbf] AS a, [lg.dbf] AS b where a.LIZ=b.LIZ ";    
так?
   Sserj
 
27 - 13.07.18 - 08:10
(26) Поля нужно все расписать, а то у тебя "LIZ" сразу в обеих файлах есть.
   DES
 
28 - 13.07.18 - 08:20
и что странно работает, в ТЗ две одинаковые колонки
   DES
 
29 - 13.07.18 - 09:54
и что странно
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
Если ТЗ имеет тип индексированнаятаблица
то ТЗ пустая получется
Если ТЗ таблицаЗначений-  то запрос выполняется
и далее не могу поместить ТЗ обычную в индексированную
ни .Загрузить()  , ни  .Выгрузить()
в результате интексированнаятаблица пуста.

        ТЗ.УдалитьСтроку(1);
        ТЗ.Выгрузить(ТЗи);
        ТЗи.Загрузить(ТЗ);

При обычных ТЗ все работает .

в чем дело ?
   Ёпрст
 
30 - 13.07.18 - 10:29
(0)
на вот, развлекайся
https://cloud.mail.ru/public/BrqJ/e2ikRvcgs
   Ёпрст
 
31 - 13.07.18 - 10:33
ну и для ИТЗ, на так, заменить:

    начало = _GetPerformanceCounter();
    ИТЗ = СоздатьОбъект("ИндексированнаяТаблица");
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ИТЗ);
    Сообщить("время запроса: "+(_GetPerformanceCounter()-начало));
    ИТЗ.ВыбратьСтроку();
   DES
 
32 - 13.07.18 - 12:30
спс
опс!
Это примочка РедакторТЗ() не фунциклирует с ИндексированнойТаблицей корректно.
Показывает Пусто
   Ёпрст
 
33 - 13.07.18 - 13:01
(32) я хз, че там за редактор тз ты используешь. Как правило, это лишнее
 
 
   DES
 
34 - 13.07.18 - 23:54
А как в индексированнойтаблице поменять тип колонки с данными с числового на символьный или наоборот ?
   Chieftain
 
35 - 14.07.18 - 00:44
(34) в ИТЗ колонки нетипизированны


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует