Имя: Пароль:
1C
1С v8
Помогите с запросом к текстовому файлу через ADO
,
0 ptiz
 
26.04.16
12:02
Спасите!
Хочу сделать простейший запрос к текстовому файлу.
Делаю так:

    ADOСоединение  = Новый COMОбъект("ADODB.Connection");
    ADOСоединение.Open("Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=" + Каталог + ";");

    Команда = "SELECT * FROM " + Файл.Имя + " WHERE F1 LIKE '%" + ИщемСтроку + "%'";
    AdoCMD = Новый COMОбъект("ADODB.Command");
    AdoCMD.ActiveConnection    = ADOСоединение;
    AdoCMD.CommandText = Команда;
    AdoCMD.CommandType = 1;
    Result = AdoCMD.Execute();
        

Получаю ошибку:

{Форма.Форма.Форма(109)}: Ошибка при вызове метода контекста (Execute)
        Result = AdoCMD.Execute();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Текст] Обновление невозможно. База данных или объект доступны только для чтения.


К файлу доступ есть, спокойно удаляю и заново копирую.
Чего не хватает?
1 КМ155
 
26.04.16
12:27
(0) используй рекордсет
2 Serginio1
 
26.04.16
12:30
Конечно можно использовать и вариант через ADO  http://catalog.mista.ru/public/98398/

Например используя Schema.ini для Microsoft.ACE.OLEDB.12.0  http://it-proposition.blogspot.ru/2011/08/schemaini-microsoftaceoledb120.html
3 ptiz
 
26.04.16
12:54
(1) Как? Буду благодарен за пример.
(2) Спасибо, попробую. Но неужели ошибка от отсутствия schema.ini ?
4 ptiz
 
26.04.16
13:00
(2) Та же ошибка. Schema.ini ничего не изменило.
5 ptiz
 
26.04.16
13:06
Произошла исключительная ситуация (Microsoft JET Database Engine): Обновление невозможно. База данных или объект доступны только для чтения.

блин...
6 Serginio1
 
26.04.16
13:10
Попробуй не указывать
AdoCMD.CommandType = 1; или поставь 8
7 Serginio1
 
26.04.16
13:12
Или попробуй вызов
как http://catalog.mista.ru/public/98398/

Ну и можно вручную
http://catalog.mista.ru/public/371887/
8 ptiz
 
26.04.16
13:14
(6) Не помогает :(
9 ptiz
 
26.04.16
13:16
(7) Скопировал функцию из примера - та же ошибка.
А ЧтениеТекста - слишком просто :)
10 Serginio1
 
26.04.16
14:48
Сделай запрос попроще. Может не все понимает
11 ViSo76
 
26.04.16
18:05
пConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" + оФайл.Путь + """;Extended Properties=""Text;FMT=Delimited"""

        Попытка
            пКоннектор = Новый COMОбъект( "ADODB.Connection" );
            пКоннектор.ConnectionString = пConnectionString;

            Попытка
                пКоннектор.Open();

            Исключение
                пКоннектор = Неопределено;
                Сообщить( "Не удалось подключиться к источнику." + Символы.ПС + ОписаниеОшибки() );

            КонецПопытки;

        Исключение
            Сообщить( "Нет драйвера ADODB." + Символы.ПС + ОписаниеОшибки() );

        КонецПопытки;

Да чтобы работало нужно создавать schema.ini в каталоге где содержится файл для описания заголовков csv перед чтением файла.