powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите. Несложно.
24 сообщений из 24, страница 1 из 1
Помогите. Несложно.
    #39250167
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файлик, нужно создать два регулярных индекса, по одному на поле.
Если есть возможность создать констрэйнт на уникальность на оба поля сразу, тоже будет неплохо. Но я не знаю, можно ли так делать.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250183
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeЕсли есть возможность создать констрэйнт на уникальность на оба поля сразу, тоже будет неплохо. Но я не знаю, можно ли так делать.
Сделай составной и пометь CANDIDATE
Код: sql
1.
index on Field1+Field2 tag MyTag CANDIDATE


В принципе его можно использовать как замену индекса по Field1, но если принудительно искать по нему, автоматом фокс его не задействует, например тут select ... where Field1 = ...
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250189
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий, благодарю вас.
Задача немного в другой плоскости. У меня нет фокспро. И врожденная лень не позволяет мне найти дистрибутив и установить этот замечательный продукт на свой компьютер ради того, чтобы сделать два клика мышкой.
Посему бью челом, создайте, пожалуйста указанные индексы. Файлик приложу. Он небольшой.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250205
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, интересно, VFPOLEDB.1 будет учитывать эти индексы при селектах и обновлять их при апдэйтах?
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250215
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкладывай, создам. Только толку? Если индексы потом посыпятся то что будешь делать?
По идее VFPOLEDB должен уметь индексы создавать. Как - не скажу, не пользовался.

VFPOLEDB будет использовать индексы.

По хорошему индексирование надо делать периодически. Алгоритм такой
Код: sql
1.
2.
3.
use MyTable excl && открыть таблицу монопольно
delete tag all && Удалить все индексы
index on ... && создать индексы
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250224
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeКстати, интересно, VFPOLEDB.1 будет учитывать эти индексы при селектах и обновлять их при апдэйтах?

Много лет как не требовалось с foxpro че-нить делать, но вот остались фрагменты взаимодействия через провайдеров. Пойдет вам для начальной точки поиска.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
-- Командная строка от имени администратора
--C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\vfpoledb.dll"

--exec sp_configure 'show advanced options', 1;
--RECONFIGURE WITH OVERRIDE
--exec sp_configure 'Ad Hoc Distributed Queries', 1;
--RECONFIGURE	WITH OVERRIDE

--http://www.sqlservercentral.com/Forums/Topic1286522-2799-1.aspx#bm1402390
--http://blogs.technet.com/b/isv_team/archive/2012/05/14/3497825.aspx
--HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase
--HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Xbase

SELECT *
FROM OPENROWSET('MSDASQL', 
    'Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=D:\123\month1\;SourceType=DBF;
    Exclusive=No;BackgroundFetch=Yes;Null=Yes;collation = RUSSIAN;Deleted=Yes;";
	Initial Catalog=D:\123\month1\','select * from TP2206')

SELECT a.* 
FROM OPENROWSET('VFPOLEDB', 
'D:\123\month1\';;, 
'SELECT * FROM TP2206') AS a 

select top 100 *
from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
'Data Source=D:\123\month1\;Extended Properties=DBASE IV')...TP2206



* И да, индексы - вечный геморрой, так что лучше сразу научиться самому их пересоздавать. Пригодится. :)
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250227
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Спасибо, сейчас попробую. Какой полный синтаксис команды index on?
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250233
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-home, еще подкину на всяк случай. Может пригодится. См. вложение.

Примеры для индексов (фрагмент прг-файла фокспро)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
*-------------------------------------------------------------------------
close databases
set default to getdir()
public server
store sys(5)+sys(2003) to server
do setarea with "par22"
*--------
do setarea with "help"    && файл помощи
if .not.file("help.cdx")
   soob="Отсутсвует индексн.файл для файла Help.Файл будет создан."
   do atension.spr  
   do setarea with "help"    && файл помощи
   index on kdvts tag kdvts
endif
set order to tag kdvts     &&tag("nc01",select())
*--------
*--------
do setarea with "nc01"    && кадры
*--------
if .not.file("nc01.cdx")
   soob="Отсутсвует индексн.файл для файла NC01.Файл будет создан."
   do atension.spr  
   do setarea with "nc01"    && кадры
   index on nrt tag nrt
endif
set order to tag nrt     &&tag("nc01",select())
*--------
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250235
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, приблуда не понимает слова индекс
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250243
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но оле, похоже, понимает.
на запрос index on dt to buhnum
говорит, что произошла одна или несколько ошибок.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250245
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не разобрался, как создать неуникальный индекс по одному полю.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39250265
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeУ меня нет фокспро.
...
Что-то не разобрался, как создать неуникальный индекс по одному полю.

Никак.

Код: sql
1.
2.
3.
Unsupported Visual FoxPro Commands and Functions in OLE DB Provider

INDEX ON Command
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39252448
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, хрен с ними, с этими индексами.
Старые данные из этой таблицы ненужны. Можно просто их периодически удалять, и простого скана таблицы для быстродействия хватит. Тогда встает другой вопрос.
Как удалять помеченные на удаление записи без фокспро? Нашел приблуду, которая это делает, но она не подразумевает автоматизации.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39252654
Fffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зато OLEDB провайдер поддерживает
Код: vbnet
1.
ExecScript(cExpression [, eParameter1, eParameter2, ...])


Можно считывать скрипт хоть из текстового файла и выполнять этой функцией. Пробуй.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253012
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FffffffffffffЗато OLEDB провайдер поддерживает
Код: vbnet
1.
ExecScript(cExpression [, eParameter1, eParameter2, ...])


Можно считывать скрипт хоть из текстового файла и выполнять этой функцией. Пробуй.
Ух ты! Индекс создался!
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253020
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крутотень.
А где почитать, что там можно в эти скрипты засовывать?
А какой командой разлочить таблицу, которую я открыл эксклюзивно?
И еще раз по индексам: в таблице два поля. Для каждого поля надо создать неуникальный индекс. Других полей и индексов не будет. Покурил синтаксис index on, так и не понял.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253021
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и какой командой очистить таблицу от записей, помеченных на удаление?
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253024
Flying-homeКрутотень.Ну, дык!А где почитать, что там можно в эти скрипты засовывать?В доке, разумеется.А какой командой разлочить таблицу, которую я открыл эксклюзивно?Открытая эксклюзивно таблица не залочена, а открыта эксклюзивно. ПереОткрыть НЕ эксклюзивно.И еще раз по индексам: в таблице два поля. Для каждого поля надо создать неуникальный индекс. Других полей и индексов не будет. Покурил синтаксис index on, так и не понял.С понималкой проблемы?
Код: sql
1.
2.
Index on f1 nag f1
Index on f2 tag f2


Очень сложно для понимания?
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253034
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильный проходящий.С понималкой проблемы?
Код: sql
1.
2.
Index on f1 nag f1
Index on f2 tag f2


Очень сложно для понимания?
Ну, если честно, то сложно. Где слово, которое указывает, какой будет индекс? Слово "таг" явно не оно.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253046
Flying-homeправильный проходящий.С понималкой проблемы?
Код: sql
1.
2.
Index on f1 nag f1
Index on f2 tag f2


Очень сложно для понимания?
Ну, если честно, то сложно. Где слово, которое указывает, какой будет индекс? Слово "таг" явно не оно.Под словом "какой" вы что подразумеваете? Это будет индекс. Что еще надо? Уникальные индексы при создании помечаются словом unique. Вы в приведенном примере его видите? Слово после tag дает имя этому индексу. По-русски сия команда звучит так: создать индекс по полю f1 с именем f1. Сложно?
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253253
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С регулярными индексами ясно. Спасибо.
А вот в кандидатах меня вот что смущает:
авторДанный тип индекса предполагает, что по указанному индексному ключу во всей таблице нет повторяющихся значений. Попытка ввода в таблицу значения, которое уже есть в какой-либо записи таблицы, приведет к сообщению об ошибке. При этом наложенные на таблицу фильтры игнорируются. Следует заметить, что записи, помеченные как удаленные, также учитываются при контроле уникальности значения. Попытка ввода значения типа NULL также вызовет сообщение об ошибке.

Очень много недоразумений возникает из-за контроля уникальности данных в индексе типа Candidat. Типичные ошибки, заключаются в следующем:
-) Пустое значение (одни пробелы) - это тоже значение, поэтому невозможно создать 2 записи с пустыми значениями. Это будет воспринято как попытка ввода 2 одинаковых значений.
-) Установка ограничения SET DELETED ON - не есть физическое удаление записей помеченных как удаленные. Это всего-лишь наложение специфичекого фильтра, который делает такие записи "невидимыми", но тем не менее они по прежнему существуют в таблице. Поэтому попытка ввода новой записи со значениями, которые есть в одной из записей помеченных как удаленная также будет рассматриваться как ввод дублирующего значения .
Это что же, мне каждый раз после удаления записей очищать таблицу?
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253526
Ffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неизвестно что ты делаешь, потому на вопрос однозначно ответить нельзя. Таблица "очищается" от помеченнх на удаление записей в режиме Exclusive командой Pack.
Команда Zap полостью очищает таблицу от всех записей.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253707
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FfffffffffffffНеизвестно что ты делаешь, потому на вопрос однозначно ответить нельзя. Таблица "очищается" от помеченнх на удаление записей в режиме Exclusive командой Pack.
Команда Zap полостью очищает таблицу от всех записей.
Часто будет возникать ситуация, когда запись удаляется, а следом вставляется такая же.
Получается, что я не могу использовать кандидат-индекс на все (оба) поля.
...
Рейтинг: 0 / 0
Помогите. Несложно.
    #39253807
Нужно ли вообще использовать таблицу? Может, достаточно каждый раз создавать временный курсор?
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите. Несложно.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]