Поиск:

Ответ в темуСоздание новой темы Создание опроса
> индексы 
:(
    Опции темы
Гость_grib
Дата 24.2.2005, 20:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











надо сортировать Grid по клику на столбце.
использую таблицу, поэтому Query.SQL:=Order By не подходит.
начал разбираться с индексами, запутался. Их можно создать до выполнения проги?? Почему не работает
Код

table1.active:=false;
table1.exlusive:=true;
table1.AddIndex('indexName','MyField',[]);

Пишет Table busy. ПАМАГИТЕ!
  Вверх
Kesh
Дата 24.2.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Цитата
Их можно создать до выполнения проги??

Конечно можно, а инода даже намного удобнее...
Ты бы вот еще базу указал... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Гость_grib
Дата 25.2.2005, 04:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











База Paradox, BDE. создавать индексы надо в DBD или Delphi?? и как?? В Table, в свойстве IndexDefs, то что я добавляю, почему-то не сохраняется. а в IndexFields неактивна кнопка Add.
И все-таки почему код приведеный выше не работает?
  Вверх
Bes
Дата 25.2.2005, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



А почему ордер бай не подходит? Если не секрет.
PM MAIL   Вверх
bursa
Дата 25.2.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: 1
Всего: 1



Table1.IndexFieldNames:='MyField';


PM MAIL   Вверх
Guest
Дата 25.2.2005, 21:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
А почему ордер бай не подходит? Если не секрет.

Потому что я добавляю и удаляю записи из набора данных, в Query этого делать нельзя (насколько я знаю)
кто-нибуть скажет мне наконец КАК создать индекс в базе??
bursa, сначала надо сделать индекс, а потом пользовать.
  Вверх
Vit
Дата 27.2.2005, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Guest @ 25.2.2005, 12:50)
Потому что я добавляю и удаляю записи из набора данных, в Query этого делать нельзя (насколько я знаю)



МожноЮ причём точно так же как и из табицы, если запрос live


Цитата(Guest @ 25.2.2005, 12:50)
кто-нибуть скажет мне наконец КАК создать индекс в базе??



Не советую, Парадокс очень плохо работает с индексами, они у него легко портятся. При необходимости я создаю SQL запросом.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Bes
Дата 28.2.2005, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Цитата
Потому что я добавляю и удаляю записи из набора данных, в Query этого делать нельзя (насколько я знаю)

Дак ты закрой набор, добавь запись и открой набор. При необходимости сделай зарубку БукМарк и потом вернись к ней.
PM MAIL   Вверх
bursa
Дата 28.2.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: 1
Всего: 1



CREATE INDEX Name_idex ON nametable
(namefield)

PM MAIL   Вверх
TYRARGO
Дата 1.7.2006, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.6.2006

Репутация: нет
Всего: нет



А ведь автор темы прав, вы не один не ответили, как создать индекс в таблице БЕЗ использования SQL... Меня, кстати, тоже интересует этот вопрос....

Добавлено @ 04:53 
2 Bursa:
А вы, уважаемый, вообще чушь пишите...

На такую запись:
Table1.IndexFieldNames:='MyField';

Вы получите следующее:
No index for fields 'MyField'... 

Не засоряли бы лучше топик...
 
PM MAIL   Вверх
Palladin
Дата 1.7.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 1
Всего: 17



2TYRARGO

Не силён в SQL, но помойму чуш пишите ВЫ, 'MYFIELDS' это название поля, а ошибку что вы указали это потому что у вас нет такого поля smile  

Допустим в БД есть поле 'Автор'
тогда сортировка будет такой

Код

adotable1.indexfieldnames:='Автор';


И ещё если имя поля состоит более чем из одного слова, допустим 'Данные переработки' , то запрос нужно писать в квадратных скобках

помойму так

Код

adotable1.indexdieldnames:='[Данные переработки]';


P.S. Поправьте меня если я не прав smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
superVad
Дата 3.7.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



мне кажеться что для сортировки грида необязательно создавать индекс - может можно это сделать средствами датасета

например в фибовском датасете есть метод DoSort
и еще надо активировать кнопку в заголовке столбца в гриде (ehgrid) - например DBGridEh1.Columns.Items[0].Title.TitleButton:=True; 
PM MAIL   Вверх
Fazil6
Дата 4.7.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 1
Всего: 60



Код

{Автор: OAmiry (Borland) }

{Ниже приведен код обработчика кнопки OnClick, с помощью которого строится индекс: }

procedure TForm1.Button1Click(Sender: TObject); 
var 
  bActive, bExclusive: Boolean; 
begin 
  bActive := Table1.Active; 
  bExclusive := Table1.Exclusive; 
  Table1.IndexDefs.Update; 
  with Table1 do 
  begin 
    Close; 
    {таблица dBASE должна быть открыта в монопольном (exclusive) режиме} 
    Exclusive := TRUE; 
    Open; 
    if Table1.IndexDefs.IndexOf('FNAME') <> 0 then 
      Table1.AddIndex('FNAME', 'FNAME', []); 
    Close; 
    Exclusive := bExclusive; 
    Active := bActive; 
  end; 
end; 

{Если вы собираетесь запускать проект из Delphi, пожалуйста убедитесь в том, что свойство таблицы Active в режиме проектирования установлено в False. }



Добавлено @ 09:38 
RooR
Цитата

Не силён в SQL, но помойму чуш пишите ВЫ, 'MYFIELDS' это название поля, а ошибку что вы указали это потому что у вас нет такого поля

P.S. Поправьте меня если я не прав

ты не прав
 
PM MAIL   Вверх
Palladin
Дата 4.7.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 1
Всего: 17



Не прав по данной теме или по коду, просто если по коду, то такой код работает,у меня было задание сделать БД и т.д. дак там у меня сортировка именно так была сделана smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
DimW
Дата 6.7.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



Уважаемые о чем вы спорите!!! речь не о том как правельно создать индекс, а как сделать сортировку!!! Истенное предназначение индексов - обеспечивать быстрый боступ к данным таблице! Если создание индекса это один из способов сортировки данных то лично я против таких методов, решив одну проблему вы создаете другую, а именно - модификация данных будет осуществляться медленнее т.к. нужно не только добавить или изменить запись, а еще и переписать индекс! Используйте sql это хорошая привычка, а если у вас не получается модифицировать данные полученные из Query, то следует попыхтеть и научиться (хотя пыхтеть особо не над чем). Я старонник того что не нужно привыкать к возможнастям визуальной среды разработки, язык sql на столько развит что при помощи него можно получить данные практически в любом виде который вам нужен (хотя к БД парадокс это мало относится). 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.