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


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

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

По хорошему индексирование надо делать периодически. Алгоритм такой
Код: sql
1.
2.
3.
use MyTable excl && открыть таблицу монопольно
delete tag all && Удалить все индексы
index on ... && создать индексы
...
Рейтинг: 0 / 0
03.06.2016, 15:47
    #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
03.06.2016, 15:49
    #39250227
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите. Несложно.
Dima T,

Спасибо, сейчас попробую. Какой полный синтаксис команды index on?
...
Рейтинг: 0 / 0
03.06.2016, 15:57
    #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
03.06.2016, 15:58
    #39250235
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите. Несложно.
Не, приблуда не понимает слова индекс
...
Рейтинг: 0 / 0
03.06.2016, 16:04
    #39250243
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите. Несложно.
Но оле, похоже, понимает.
на запрос index on dt to buhnum
говорит, что произошла одна или несколько ошибок.
...
Рейтинг: 0 / 0
03.06.2016, 16:05
    #39250245
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите. Несложно.
Что-то не разобрался, как создать неуникальный индекс по одному полю.
...
Рейтинг: 0 / 0
03.06.2016, 16:29
    #39250265
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите. Несложно.
Flying-homeУ меня нет фокспро.
...
Что-то не разобрался, как создать неуникальный индекс по одному полю.

Никак.

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

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


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


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


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


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


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

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


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