#0
by Штурман
Подскажите собственно как извлечь нужные данные из файлов *.dbf посредством запросов 1С ?
#1
by Rie
Запросы _1С_ непосредственно с DBF-файлами не работают. Тут или объект XBase использовать, или подключаться через OLE DB и там уже запросами.
#2
by Штурман
т.е. лучше всего перекинуть временно все данные из дбф в таблицу значений а там уже использовать менеджер временных таблиц ?
#5
by Rie
Если в запросе будут использоваться ещё и данные из 1С - то да, каким-либо способом перекинуть во временную таблицу и дальше 1С-овскими запросам. Если нет - то можно запросами через ADO.
#8
by DCKiller
ТекстЗапроса = "SELECT DB1.*, DB2.* FROM DB1 LEFT JOIN DB2 ON DB2.FIELD1 = DB1.FIELD1";
#16
by DCKiller
Имя файла - это DB1. А FROM - это команда запроса, указывающая, что мы получаем данные из DB1.
#18
by Штурман
уважаемый, вы тут? в общем я запрос написал, мну понравилось ) а можно ссылку на более подробный механизм работы в 1с с использованием ADO ?
#21
by Штурман
ап, завис чуток, как задать параметр в вышепредставленном запросе? т.е. на форме есть поле выбора сотрудника, мы запоминаем его код, вот так: а как теперь Имя вставить в запрос? Where ....
#24
by МаленькийВопросик
лучше загрузи в неотображаемое табличное поле 1 раз... потом делай запрос уже с помощью временных таблиц - будет быстрее...
#25
by Штурман
шот я вас не пойму - одни АДО советуют, я уже код написал, а терь советуют юзать временные таблицы :)) а можно точнее, где быстрее все ж ?
#26
by Odavid
одно другому не мешает :) Сначала делаешь запрос через ADO, потом результат загружаешь в ВрТ Это разные механизмы, а не одно и то же.
#27
by МаленькийВопросик
мне кажется временные таблицы пошустрее будут т.к. работа тут с памятью идет только, а при чтении из дбф - ты каждый раз дбф-ку считываещь
#28
by Штурман
ладно, я сейчас допишу через АДО, тока разберусб как параметр в запрос вставить, а потом буду запрос с временными таблицами писать
#29
by Odavid
вы человеку объясните :) Что сначала все равно запрос к DBF делать, а потом, перед циклом - выгрузку во временную таблицу (конструкция заполнения ВрТ используется непосредственно в запросе, либо через менеджер ВрТ).
#31
by МаленькийВопросик
короче так: 1.подключаешься через к дбф (обычное чтение дбф) - адо не надо.. 2.результат считываешь в табличное поле - например скрытое 3.результат с тп - засовываешь во временную таблицу 4.работаем с временной таблице запросами sql
#32
by Alpinist22
Вот держи, сам делал, работает на любой винде старше XP, наличие офиса не обязательно:
#35
by Злобный Йожег
"обычное чтение дбф) - адо не надо" Ты представляешь, какая скорость чтения дбф через адо и черех Xbase? Если файл загрузки большой, то обычное чтение будет идти очень медленно.
#36
by Alpinist22
у меня на дбф с 4000 записей через адо читает с такой же скоростью как и обычным способом, зато привязки к офису нету
#40
by Alpinist22
ну там SQL запрос как видно из текста, но я бы на твоем месте анализировал данные программно на 1С, слишком много нюансов в этом запросе получиться
#41
by Штурман
да меня в общем зацепило, хочется табельный сотра передать, никак не выходит уже так написал:
#43
by Штурман
да, вот какую ошибку выдает: Ошибка при вызове метода контекста (Append): Произошла исключительная ситуация (ADODB.Parameters): Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения.
#44
by Lelic
А просто как строку "склеить" параметры не получается? У нас вроде работает. С датами только приходится поковыряться
#47
by Штурман
ошибка вроде тут: CreateParameter("sotr", ?, ? ); вот вместо вопросов не понял что писать
#48
by Штурман
не вышло... вот текст ошибки: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC dBase] Слишком мало параметров. Требуется 1.
#50
by Штурман
+ это на такой код: написал потом так: ТекстЗапроса = "SELECT DUP FROM RLS03 WHERE TBN="+сотрудник; сейчас выдает такую ошибку: Ошибка при вызове метода контекста (Fields): Произошла исключительная ситуация (ADODB.Recordset): Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру.
#58
by Rie
В тексте запроса в местe параметра ставишь "?". Ну и устанавливаешь параметр через Parameters.
#59
by Штурман
ну написал так: вот ошибка: Ошибка при вызове метода контекста (Append): Произошла исключительная ситуация (ADODB.Parameters): Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения. может все дело в том что у меня написано так: вроде нужно писать так: вот вместо вопросительных знаков не ясно что писать
#60
by Lelic
Извиняюсь. Я все про строки...Насколько я понимаю в результате запрос д.выглядеть ка-то так SELECT DUP FROM RLS03 WHERE TBN='000001'. Наверное просто кавычек не хватает. Может так получится: "SELECT DUP FROM RLS03 WHERE TBN=' "+сотрудник+"'";
#61
by Rie
Если мне не изменяет мой склероз, то второй параметр - тип, третий параметр - in/out. И то, и другое обозначается числами (см. в документации).
#62
by Штурман
ну что ж такое (((((( пишу уже так: ТекстЗапроса = "SELECT DUP FROM RLS03 WHERE TBN='"+сотрудник+"'"; так вылетает такая ошибка: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC dBase] Несоответствие типов данных в выражении условия отбора.
#64
by Lelic
Согласна с Rie. Я бы уже попробовала в лоб запрос написать с конкретным таб.номером, чтобы он отработал, а потом параметр передать.
#65
by Штурман
ну спасибо, я уже написал в лоб, тока таже ошибка вылетает может все дело в том, что 1С у четырехзначных цифр после первой цифры ставит пробел, т.е. получается ввели 5555 а на выходе такое число: 5 555
#68
by Rie
"Там" - это где? В "SELECT ..... WHERE TBN="+сотрудник этот самый сотрудник преобразуется в строку автоматически, вставляя неразрывный пробел между группами разрядов.
#70
by Штурман
шота нипанятное дело выходит - запрос через АДО писать уже явно усе прописал: ан нет, вылетает та же ошибка
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Бух: Как сделать правильно запрос в запросе ?
- kladr.dbf, street.dbf, socrbase.dbf
- Закрытие месяца. Бух просит сделать вместо Д90.8.1 - К26 сделать Д90.2 - К26
- Как сделать в УТ8.0 сделать реализацию по нескольким заказам
- Как можно серый ip сделать белым если сделать у провайдера это нельзя
- Можно ли сделать элемент формы "подменю" сделать недоступным для разворачивания?
- Можно ли сделать реквизит таб. части, сделать недоступным в отдельных строках?
- Как в конструкторе запроса существующий запрос сделать вложенным?
- 1c запрос к dbf чере FoxPro: подскажите как сделать фильтр по дате?..
- Конвертация. Как лучше сделать? Как вообще сделать?
В этой группе 1С
- Ориентация печати - ландшафт
- УНФ разработка
- Регистрация оплаты НДС в Бюджет
- Конвертация с 8.1 в 8.2
- СКД. Разница между датами
- Расчет себестоимости отрицательные остатки.
- Как настроить обмен между типовыми УТ (10.3.10.4) с фильтром по организации и тп ?
- 8.2 Неправильный отбор с группировкой в динамическом списке
- Отбор документов: по контрагенту за период определенного вида
- Отключить/Включить обновление формы обработки
- Как получить Цену номенклатуры по наименованию?
- Удаление помеченных объектов после свертки
- Язык запросов sql в рамках 1с
- Можно ли изменить ДополнительныеСвойства у документа из управляемой формы?
- Драйвер принтера не выгружается при закрытии терминального сеанса
- 1С - OpenOffice
- Сохранение значения при отмене редактирования строки ТЧ
- УТ. Создание нового плана обмена РИБ. Всвязи с этим вопрос...
- СКД: Результат запроса в наборе данных содержит лишние строки по группировке
- 8.2 На клиенте проверить на пустое значение