Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Создание индекса через VFP OleDB Provider  [new]
savolv
Member

Откуда:
Сообщений: 75
Имеется файл (dbf). Для доступа использую VFP OleDB Provider. Программа под C#.NET. Как создать индекс для данного файла. Команда CREATE INDEX не прокатывает. Уже посещает смутное подозрение, что этот провайдер не умеет создавать индексы.
12 май 05, 00:14    [1531398]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
Cyv
Member

Откуда: Клайпеда
Сообщений: 164
См. команды INDEX и ALTER TABLE
12 май 05, 08:39    [1531599]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
savolv
Member

Откуда:
Сообщений: 75
Нельзя ли поконкретнее.
12 май 05, 08:56    [1531625]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
savolv
Member

Откуда:
Сообщений: 75
Все еще актуально. Неужели никто никогда не сталкивался с этой проблемой?
Может подскажете куда еще обратиться?
20 май 05, 10:47    [1557952]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
Crip
Member

Откуда:
Сообщений: 2490
ВD MSDN например
20 май 05, 10:51    [1557985]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
Sergey Sizov.
Guest
2Savolv
Ты может все таки догадаешься привести текст твоей команды и текст сообщения об ошибке? Начался сезон отпусков и телепаты самые первые смылись :)
20 май 05, 10:56    [1558011]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
savolv
Member

Откуда:
Сообщений: 75
Кратко задача. Имеется файл, передаваемый сторонней организацией. Файл создан FoxPro 2.6. Файл не индексированный. В нем порядка 12000 записей. Необходимо по ключевому полю LC_SOBES найти требуемые записи и заполнить определенные поля. Так вот без индекса этот файл заполняется порядка 5 минут, что недопустимо. (К слову в связке Delphi+BDE индексирование и заполнение этого же файла происходит за 1 сек!!!)
Если индекс создаю с помощью FoxPro, то затем индексированный файл заполняется за 8 сек, что уже приемлимо.

Индекс пытался создать с помощью OleDBCommand следующими способами

ALTER TABLE P2 ADD PRIMARY KEY LC_SOBES TAG LC_SOBES
ошибка:
Feature is not supported for non-.DBC tables

или так
Use P2
(без ошибок)

затем
INDEX ON LC_SOBES TAG LC_SOBES ADDITIVE
ошибка:
"Произошла одна или несколько ошибок во время обработки команды"

и вот так
CREATE INDEX LC_SOBESidx ON P2(LC_SOBES)
ошибка:
Syntax error
20 май 05, 11:30    [1558188]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
гость 36
Guest
А в MSDN глянуть не судьба? Не поддерживается команда провайдером.
20 май 05, 11:37    [1558222]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
savolv
Member

Откуда:
Сообщений: 75
Спасибо, успокоил. MSDN я смотрел в первую очередь и help к VFP OleDB Provider'у тоже смотрел. Но никак не мог поверить, что такую основу основ как индекс нельзя создать, пусть не командой index on, может еще какой способ есть. Собственно с этим и пришел сюда.
20 май 05, 11:52    [1558293]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
Crip
Member

Откуда:
Сообщений: 2490
Ну как как. Установить VFP runtime.
И дальше например из VB Script.
oVFP = CreateObject("VisualFoxPro.Application")
и пошел....
20 май 05, 13:34    [1558879]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
Crip
Member

Откуда:
Сообщений: 2490
Ой ошибся. Забыл что это среда фокса. Сорри...
20 май 05, 13:40    [1558909]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi savolv!

Написань на VFP простейший COM-сервер. Из своей программы использовать его.
Например создать там метод

PROCEDURE MyCreateIndex(tcTable AS String, tcExpression AS String, tcTag AS String)
SET CPDIALOG OFF
SELECT 0
USE (m.tcTable) EXCLUSIVE ALIAS tmp
INDEX ON (m.tcExpression) TAG (m.tcTag)
USE IN SELECT("tmp")
ENDPROC

Posted via ActualForum NNTP Server 1.2

22 май 05, 04:09    [1562344]     Ответить | Цитировать Сообщить модератору
 Re: Создание индекса через VFP OleDB Provider  [new]
savolv
Member

Откуда:
Сообщений: 75
Да.... уж. Я был лучшего мнения о Microsoft. Все время писал на Delphi. А тут подвернулась небольшая задачка, думаю дай-ка залабаю на .NET, так сказать приобщусь к майкросовтовским технологиям. И такой косяк на ровном месте. Понятно, что COM сервер я делать не буду, но в любом случае спасибо за участие. Поковыряю в сторону Jet и ODBC, в противном случае вернусь для такого типа задач к своей старой доброй Delphi.
22 май 05, 15:01    [1562520]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Создание индекса через VFP OleDB Provider  [new]
Starpom
Member

Откуда: г. Москва
Сообщений: 35
Все просто:
// Создаем Индекс (простой)
                    strComm =   "EXECSCRIPT(" +
                                "[USE Invoice!Invoice EXCLUSIVE]" + "+chr(13)+" +
                                "[INDEX ON INID TAG INID_KEY ADDITIVE]" +
                                ")";
                    ocCom.CommandText = strComm;
                    ocCom.ExecuteNonQuery();
-----------------------------------------------------------
Не сразу пришло мастерство к молодому саперу.
14 сен 06, 15:35    [3136945]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить