Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Добрый день!
Возникла такая проблема: нужно из 1С 8.2 создавать dbf файлы и выгружать в них данные, некоторые файлы имеют мемо поля, поэтому XBase не подходит. Создаю файлы через ADO. Файлы создаются, но при выгрузке в них данных возникает ошибка: "Ошибка при вызове метода контекста (Execute)Command.Execute(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for Visual FoxPro): Memo file is missing or is invalid." Выгружаю данные тоже через ADO. Если брать готовый файл, созданный в FoxPro, то процедура выгрузки отрабатывает без ошибок. Может кто-нибудь подскажет в чем дело? |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
PaulWist Сообщений: 14696 Дата регистрации: 01.04.2004 |
Код строки соединения и код создания файла через ADO ?
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Соединение=Новый COMОбъект("ADODB.Connection");
Соединение.Open("Provider=vfpoledb.1;Data Source="+КаталогВыгрузки+";Collating Sequence=Russian;"); Для i=0 По 96 Цикл ИмяТаблицы = ПолучитьИмяТаблицы(i); ПоляТаблицы = ПолучитьПоляТаблицы(ИмяТаблицы); Соединение.Execute("Create Table "+ИмяТаблицы+" ("+ПоляТаблицы+")"); КонецЦикла; Соединение.Close(); |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
ПоляТаблицы - хранит строку с перечисленными полями: ИмяПоля1 ТипПоля(Длина), ИмяПоля2 ТипПоля(Длина)...
|
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
PaulWist Сообщений: 14696 Дата регистрации: 01.04.2004 |
Что получится если написать
создастся табла? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Таблица создалась, в ней 2 поля, F1 - мемо, и какое-то _NullFlags |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
PaulWist Сообщений: 14696 Дата регистрации: 01.04.2004 |
Так пробуем
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
То же самое получается |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
PaulWist Сообщений: 14696 Дата регистрации: 01.04.2004 |
Цитата: такой код у меня нормально отрабатывет. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Я повторюсь, таблицы у меня создаются без ошибок, они даже открываются пустые без ошибок, ошибка возникает при попытке записать в мемо поле данные, причем только в том случае, если таблица была создана из 1С
|
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это нормально. Если в описании поля уточнить NOT NULL то второго (служебного) поля не будет. При просмотре в фоксе его и так не будет видно. А провайдер какой версии используется? Может быть нужно обновить до последней? И было бы неплохо показать что именно содержит "ПоляТаблицы" - возможно там некорректно определяются эти самые мемо-поля... P.S. Да, ещё стоит приложить архивчик с пустой таблицей (включая fpt и cdx файлы, если таковые имеются) и показать код который пытается писать в это самое мемо поле. ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 31.01.12 12:54 |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Версия 9.0.0.3504 Для интересующей таблицы строка ПоляТаблицы выглядит так: BCODE numeric(6),BNAME char(75),BPER numeric(3),BQUAN numeric(7),BBUY numeric(10),BOPT numeric(10),BROZN numeric(10),BTYPE numeric(2),BSIGN char(5),BREDACTOR char(45),BCITY char(20),PUBCODE numeric(5),BPUBLISH char(30),BAUTHOR char(45),BISBN char(20),BYEAR numeric(4),BOBL char(1),BPAGES numeric(4),BRESDATA char(25),BCONTENT M,BSHTRIH char(14),BSERIE char(70),BILUSTR char(10),BBBK char(20),BUDK char(20),BPUBDATE date(8),MARK numeric(1),EDIT numeric(1),NEW numeric(1),BTHEMA numeric(2),BSUBTHEMA numeric(2) BCONTENT было определено и так тоже: BCONTENT мемо(10) |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
PaulWist Сообщений: 14696 Дата регистрации: 01.04.2004 |
Ну не знаю, вот код нормально отрабатывающий
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
|
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Command.Parameters.Append(Command.CreateParameter("Annot", 200, 1, 1500, "")); Для Каждого Запись Из Выборка Цикл Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(Строка(Запись)); Command.Parameters("Annot").Value=Номенклатура.Аннотация; Command.ActiveConnection = Соединение; Command.CommandText ="Update BOOKS.dbf set BCONTENT=? where BCODE="+Формат(Номенклатура.Код,"ЧГ=")+""; Command.Execute(); ПланыОбмена.УдалитьРегистрациюИзменений(ПланыОбмена.ФоксПро.НайтиПоКоду("1"),Номенклатура); КонецЦикла; На файлах, созданных в фокспро, отрабатывает без ошибок |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
medstrax Забанен Сообщений: 5964 Дата регистрации: 23.03.2007 |
Есть извращенное решение и без ADO. Можно создавать dbf из 1С как обычный бинарный файл
|
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Из фокса, используя провайдер версии 9.0.0.5815 (взять можно тут) и твою dbf из архива (не увидел в ней ничего криминального - фокс делает точно такие же файлы), я смог без ошибок добавить новые записи и обновить существующие, используя подобный параметризованный запрос (хотя мне кажется что тип параметра для memo указан не совсем подходящий).
Естественно, я не в курсе что у тебя находится в CommandText после подстановки туда Формат(Номенклатура.Код,"ЧГ="), но предполагаю что там будет число, и уж такую ошибку ты не просмотрел бы - да и не вываливается при этом провайдер, а ругается на синтаксическую ошибку, если что не так... Да, такой вопрос - создаётся таблица и начинает использоваться в рамках одной и той-же ADODB коннекции? Т.е. открыл соединение, потом одной командой создал таблицу а второй пытаешься писать в неё (хотя какой тогда к лешему UPDATE )? ------------------ WBR, Igor |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Нет, в процедуре создания файлов коннект создается и закрывается, а в процедуре заполнения данными коннект создается и закрывается снова |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Спасибо за ссылку, буду пробовать |
Re: Создание DBF файла с мемо полем из 1С | |
---|---|
Dizzy Автор Сообщений: 22 Дата регистрации: 13.09.2010 |
Всем спасибо за помощь, проблема решена.
Исправлено 1 раз(а). Последнее : Dizzy, 01.02.12 10:35 |
© 2000-2024 Fox Club  |