|
v7: 1c++ и внешний файл DBF | ☑ | ||
---|---|---|---|---|
0
DES
12.07.18
✎
18:50
|
Есть ли в 1с++ функции запросов к внешним файлам DBF ?
|
|||
1
Djelf
12.07.18
✎
18:54
|
(0) А штатные возможности чем не устраивают?
|
|||
2
DES
12.07.18
✎
18:57
|
не знаю о таких
|
|||
3
Djelf
12.07.18
✎
18:59
|
(2) Печально. Изучай встроенный объект 1С - XBASE
|
|||
4
Djelf
12.07.18
✎
19:02
|
||||
5
NSSerg
12.07.18
✎
19:05
|
(0) если по каким то причинам xbase не устраивает, то иожно через ado
Вопрос к vde69 по ADO |
|||
6
DES
12.07.18
✎
19:07
|
(3) Здрасьте, приехали...
Найдите в Вашей ссылке слово ЗАПРОС или SELECT |
|||
7
Djelf
12.07.18
✎
19:20
|
(6) "ЗАПРОС" вообще не относится к 1C++, SELECT относится.
Но вопроса про SELECT не было, хотя он тоже запрос. Прямое чтение DBF в 1C++ не встроена. Работает через ado или oledb. В 1sqlite тоже не встроено, но если подключить к 1sqlite расширение libspatialite то чтение DBF возможно. |
|||
8
Emery
12.07.18
✎
19:36
|
(0) > Есть ли в 1с++ функции запросов к внешним файлам DBF ?
У себя я предпочел воспользоваться внешним приложением на Visual FoxPro, которое вызывается из «семерки», а в VFP доступ к 1С77 осуществляется как к DDE-серверу. При этом VFP передает рассчитанные с его помощью данные в особых dbf-файлах (с подключением к 1С-овским cdx-индексам из VFP) в экспортируемую функцию 1С, которая уже отображает расчет заработной платы в режиме он-лайн. Схема работы просто великолепная для «семерки» и, похоже, что никто, кроме меня, ее не использует в профессиональных конфигурациях. |
|||
9
DES
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='';"); А как указать более чем одного файла источника? |
|||
10
DES
12.07.18
✎
19:39
|
или как указывать их прямо в запросе?
|
|||
11
Попытка1С
12.07.18
✎
20:13
|
А что ты собрался делать с несколькими источниками?
Читай последовательно, пихай в ТЗ или еще куда |
|||
12
Попытка1С
12.07.18
✎
20:14
|
Если хочешь делать прямой запрос с нескольких файлов, тогда грузи в ТЗ, а тз уже помещай в ВТ на скуле, и к ним уже обращайся.
|
|||
13
DES
12.07.18
✎
20:15
|
а как тз закинуть в вт?
|
|||
14
DES
12.07.18
✎
20:15
|
и не читаются цифровые поля, говорит
{Обработка.OLEDB_FoxPro.Форма.Модуль(22)}: Тип переменой не поддерживается |
|||
15
Попытка1С
12.07.18
✎
20:20
|
Покури метод ВыполнитьSQL_ИзТЗ
вроде так называется |
|||
16
Попытка1С
12.07.18
✎
20:21
|
Вот пример тебе
http://www.1cpp.ru/forum/YaBB.pl?num=1295864034/31#31 |
|||
17
DES
12.07.18
✎
20:25
|
(12) ну мне же нужно свзать данные из двух файлов, а в ТЗ это проблематично делать
|
|||
18
big
12.07.18
✎
20:32
|
База = СоздатьОбъект("OLEDBData");
Соединение =" |Provider=VFPOLEDB.1; |Data Source=" + КаталогИБ() + "; |Mode=Read; |"; Рез = База.Соединение(Соединение); Запрос = База.СоздатьКоманду(); ТЗ=Запрос.ВыполнитьИнструкцию(ТекстЗапроса) Ессно в ТекстЗапроса можно поместить запросы по разным таблицам с объединением и т.д. и т.п. |
|||
19
Попытка1С
12.07.18
✎
20:33
|
(17) Да я понял, читай ветку что я скинул, там в первом посте есть код.
|
|||
20
DES
12.07.18
✎
20:38
|
(19) у меня не считывается из DBF поля типа NUMERICВернее считывается в рекордсет, а
objRecordset.Fields(6).Value = Ошибка в выражении! причем objRecordset.Fields(5).Value = "пять" |
|||
21
NSSerg
12.07.18
✎
20:59
|
(20) CAST(STR as CHAR) в запросе не поможет?
|
|||
22
DES
12.07.18
✎
21:08
|
(21 ) Да!
|
|||
23
DES
13.07.18
✎
06:17
|
а есть способ как то загонять результаты ADODB.Connection в ТЗ ?
|
|||
24
big
13.07.18
✎
06:52
|
(23) То есть штатный режим работы 1С++ не устраивает? Ковыряться с ADO больше удовольствия доставляет? ;)
В (18) результат в ТЗ выгружается |
|||
25
DES
13.07.18
✎
07:53
|
(24)спс, чет затупил...
|
|||
26
DES
13.07.18
✎
08:07
|
подскажите синтаксис для начала
"SELECT a.*, b.* FROM [pp.dbf] AS a, [lg.dbf] AS b where a.LIZ=b.LIZ "; так? |
|||
27
Sserj
13.07.18
✎
08:10
|
(26) Поля нужно все расписать, а то у тебя "LIZ" сразу в обеих файлах есть.
|
|||
28
DES
13.07.18
✎
08:20
|
и что странно работает, в ТЗ две одинаковые колонки
|
|||
29
DES
13.07.18
✎
09:54
|
и что странно
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ); Если ТЗ имеет тип индексированнаятаблица то ТЗ пустая получется Если ТЗ таблицаЗначений- то запрос выполняется и далее не могу поместить ТЗ обычную в индексированную ни .Загрузить() , ни .Выгрузить() в результате интексированнаятаблица пуста. ТЗ.УдалитьСтроку(1); ТЗ.Выгрузить(ТЗи); ТЗи.Загрузить(ТЗ); При обычных ТЗ все работает . в чем дело ? |
|||
30
Ёпрст
13.07.18
✎
10:29
|
||||
31
Ёпрст
13.07.18
✎
10:33
|
ну и для ИТЗ, на так, заменить:
начало = _GetPerformanceCounter(); ИТЗ = СоздатьОбъект("ИндексированнаяТаблица"); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ИТЗ); Сообщить("время запроса: "+(_GetPerformanceCounter()-начало)); ИТЗ.ВыбратьСтроку(); |
|||
32
DES
13.07.18
✎
12:30
|
спс
опс! Это примочка РедакторТЗ() не фунциклирует с ИндексированнойТаблицей корректно. Показывает Пусто |
|||
33
Ёпрст
13.07.18
✎
13:01
|
(32) я хз, че там за редактор тз ты используешь. Как правило, это лишнее
|
|||
34
DES
13.07.18
✎
23:54
|
А как в индексированнойтаблице поменять тип колонки с данными с числового на символьный или наоборот ?
|
|||
35
Chieftain
14.07.18
✎
00:44
|
(34) в ИТЗ колонки нетипизированны
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |