
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.142.253] |
![]() |
|
![]() |
|
|
1)dBASE tables
2) BDE Здравствуйте у меня проблемка. При попытке сортировки элементов в DBGrid1 таким кодом if table1.IndexFieldNames='NAZVA' then table1.IndexFieldNames:='NAZVA' else table1.IndexFieldNames:='WID_TRANSP'; возникает ошибка Project Project1.exe raised exception class EDatabaseError with message ‘Table: No index for fields ‘WID_TRANSP’’. Process stopped. Use step or run to continue. ![]() Подскажете как можно отсортировать. |
Сообщ.
#2
,
|
|
|
Цитата neznayka @ возникает ошибка Project Project1.exe raised exception class EDatabaseError with message ‘Table: No index for fields ‘WID_TRANSP’’. Process stopped. Use step or run to continue нет индекса для поля WID_TRANSP Цитата neznayka @ Подскажете как можно отсортировать или индекс создать, дла вышеуказанного поля, или запрос с Order By: ![]() ![]() Select * From YorTable Order By WID_TRANSP |
Сообщ.
#3
,
|
|
|
И вместо IndexFieldNames используй IndexName
|
Сообщ.
#4
,
|
|
|
СЕТИМ РАЗОБРАЛСЯ СОРТИРУЮ ТАК
![]() ![]() procedure sort1(TABLE1:TTable;listbox1:TListBox); var s:string; List: TStrings; i:integer; begin Table1.IndexDefs.Update; TABLE1.GetIndexNames(listbox1.Items); if listbox1.Items.Count>0 then begin for i:=0 to listbox1.Items.Count do begin if listbox1.Items.Strings[i]='NEWINDEX2' then begin Table1.AddIndex('NewIndex1', 'NAZVA', [IxExpression]); Table1.IndexName:='NewIndex1'; Table1.IndexDefs.Update; Table1.DeleteIndex('NewIndex2'); end else begin Table1.AddIndex('NewIndex2', 'NAZVA', [IxExpression]); Table1.IndexName:='NewIndex2'; Table1.IndexDefs.Update; Table1.DeleteIndex('NewIndex1'); end; break; end; end else begin Table1.AddIndex('NewIndex2', 'NAZVA', [IxExpression]); Table1.IndexDefs.Update; Table1.IndexName:='NewIndex2'; Table1.IndexDefs.Update; end; TABLE1.Refresh; end; Проблема другая всё харашо работала в друг начло писать Цитата Class EDBEngine error whith message ‘Table is busy’ |
![]() |
Сообщ.
#5
,
|
|
1.Таблица открыта другим пользователем в режиме монопольного доступа
2.BDE - не отпустило таблицу 3.При создании индексов таблица должна быть открыта в монопольном режиме. |
Сообщ.
#6
,
|
|
|
Какие то странные манипуляции с индексами. Зачем?
|
![]() |
Сообщ.
#7
,
|
|
Цитата Anatoly Podgoretsky @ Какие то странные манипуляции с индексами. Зачем? ![]() Не проще на этапе проектирования добавить все индексы в IndexDefs , а нужный индекс активировать по клику на Title грида(кнопку,выбрать из списка,....) |
Сообщ.
#8
,
|
|
|
Цитата Не проще на этапе проектирования добавить все индексы в IndexDefs , а нужный индекс активировать по клику на Title грида(кнопку,выбрать из списка,....) И так пробовал через IndexDefs на уровне проектирования создавал. (при этом по идеи чуть ниже список с индексами таблицы (IndexName) если я добавил то они должны били там появится а их там нету ![]() При попытке выбрать индекс через Table1.IndexName:='NAZ'; пишет Цитата Table1: index does not exist index: NAZ ![]() Я так понял что надо создать индексный файл. Как это сделать? И после добавления записей его надо обновлять. |
![]() |
Сообщ.
#9
,
|
|
Цитата neznayka @ Я так понял что надо создать индексный файл. ![]() ![]() ![]() create index Цитата neznayka @ И после добавления записей его надо обновлять. Cтруктурные индексы (MDX) всегда подключенны к базе и при изменении записей - обновляються автоматически. |
Сообщ.
#10
,
|
|
|
Никаких IndexDefs не надо, индексы создаются один раз, например с помощью Database Desktop и потом просто используются, путем указания в IndexName
|
Сообщ.
#11
,
|
|
|
![]() ![]() ТЕМА ЗАКРЫТА ![]() |