Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

помогите разобраться с индексами   Найти похожие ветки 

 
Вася666   (2003-04-04 09:00) [0]

в Paradox создаю индекс состоящий из полей например Name, Surname, Address как в Table отсортировать таблицу по полю например Surname??? по сути я присваиваю индекс, а сортировка производится автоматически по индексу но у меня он сортирует по Name :-(


 
Stas   (2003-04-04 09:27) [1]

У тебя 3 индекса или индекс состоит из 3-х полей ?


 
Lord Warlock   (2003-04-04 09:49) [2]

Для этого в дополнение нужно создать индексы отдельно каждому полю и для конкретной сортировки использовать их.

В Access все куда проще, там можно в качестве индексных полей указывать любые(почти) и в любом порядке.


 
Max79   (2003-04-04 10:03) [3]

Сортировка по индексу идет сначала по первому полю в индексе, затем по второму и т.д.
создай другой индекс, где на первое место поставиш то поле, по которому нужна первичная сортировка.


 
Remis   (2003-04-04 10:18) [4]

А как сделать сортировку в обратном порядке?


 
Stas   (2003-04-04 10:21) [5]

>Remis (04.04.03 10:18)

При создании индекса в опциях установить [ixDescending]


 
MsGuns   (2003-04-04 10:49) [6]

>Lord Warlock © (04.04.03 09:49)
>В Access все куда проще, там можно в качестве индексных полей указывать любые(почти) и в любом порядке.

Будет также просто и в парадоксе, если отказаться от TTable и перейти на TQuery и TUpdateSQL


 
Lord Warlock   (2003-04-04 11:19) [7]


> MsGuns © (04.04.03 10:49)


Будет, только это путь аддиктов


 
Remis   (2003-04-04 15:55) [8]

Тогда еще вопрос: как создать базу програмно при помощи TTable? Скажем есть поля: a1, a2, a3, data. Возможны записи со всеми одинаковыми полями. Нужна сортировка по любому полю, т.е. индексы (ixDescending тоже).


 
MsGuns   (2003-04-04 16:46) [9]

>Lord Warlock © (04.04.03 11:19)
> MsGuns © (04.04.03 10:49)
>Будет, только это путь аддиктов

Это будет нормальный путь, совершенно естественный для клиент-серверного подхода. Даже для локалок он - лучший ! Вот только ручками и головкой придется поработать ;)))

>Remis (04.04.03 15:55)
>как создать базу програмно при помощи TTable

1. При помощи TTable нельзя создать БАЗУ. Можно только таблицу.
Для этого есть метод CreateTable и методы инкапсулированных в TTable классов FieldDefs и IndexDefs

>Нужна сортировка по любому полю, т.е. индексы (ixDescending тоже).
Сортировка и индексы - это совсем не одно и то же !

Резюме: решительно требуется теоретическое подковка ! Используй хэлпы хоть для тех же компонент BDE - там можно ой как много почерпнуть !


 
Remis   (2003-04-04 22:44) [10]


> 1. При помощи TTable нельзя создать БАЗУ. Можно только таблицу.

Конечно таблицу. Русский - не мой родной язык. :))

> Для этого есть метод CreateTable и методы инкапсулированных
> в TTable классов FieldDefs и IndexDefs


Вот пример:

with Table1 do
begin
Active := False;
DatabaseName := "";
TableName := "lentele2";
TableType := ttParadox;
with FieldDefs do
begin
Clear;
Add("ID", ftAutoInc, 0, False);
Add("Label", ftString, 1, False);
Add("Pavadinimas", ftString, 50, False);
Add("Suma", ftCurrency, 0, False);
Add("Data", ftDate, 0, False);
end;
with IndexDefs do
begin
Clear;
Add("", "ID", [ixPrimary, ixUnique]);
Add("byLabel", "Label;Pavadinimas", []);
Add("byPavadinimas", "Pavadinimas;Suma", []);
Add("bySuma", "Suma;Data", []);
Add("byData", "Data;Label", []);
Add("byPavadinimasD", "Pavadinimas;Suma", [ixDescending]);
Add("bySumaD", "Suma;Data", [ixDescending]);
Add("byDataD", "Data;Label", [ixDescending]);
end;
CreateTable;
Free;
end;

Таблица создается, не непонятно, почему нельзя создавать индекс по одному полю, пришлось дописывать второй лишь для того чтобы был...



 
Remis   (2003-04-04 22:48) [11]


> Сортировка и индексы - это совсем не одно и то же !


Возможно. Тогда вопрос - как сортировать без индексов?


 
MsGuns   (2003-04-04 22:49) [12]

Создавай (добавляй/удаляй индексы) с помощью Local SQL (DDL)


 
Anatoly Podgoretsky   (2003-04-04 23:26) [13]

Remis (04.04.03 22:48)
Тебе не кажется, что ты залез в чужую тему и нечадно ее эксплуатируешь. Никому не запрещено задавать свои вопросы, желательно один вопрос одна ветка, другой вопрос другая ветка.


 
Remis   (2003-04-05 00:10) [14]

SQL медленно...
Да я залез в чужую тему... Но тема таже... Извините если что не так...


 
ЮЮ   (2003-04-05 02:38) [15]

SQL медленно...
Не тащи на клиента по 100 000 записей и всё будет работать быстро


 
Remis   (2003-04-05 13:59) [16]

Не надо 100 000... Достаточно 1000 и уже заметно...


 
sniknik   (2003-04-05 15:23) [17]

Remis (05.04.03 13:59)
и тысячи не надо, достаточно столько сколько показывается в гриде, или еще где. а если обработки данных то их теми же SQL командами можно на сервере делать, на клиента только результат тащить.
а с таблицами все на клиента, всегда, и обрабатывать в "ручном" режиме. ограничения фильтрами, т.е. сначала все перекачать после фильтрации показать пару записей. смысл?


 
Remis   (2003-04-05 17:25) [18]

Речь ведь о Local SQL.
Например такой запрос:
select * from lentele2.db WHERE Label="1" and Pavadinimas = "Kazkas" ORDER BY Data ASC
Надо пощитать сумму всех полученных записей поля Suma. Как сделать быстро?


 
sniknik   (2003-04-05 20:02) [19]

ну примерно так
select SUM(Suma) AS Summa from lentele2.db WHERE Label="1" and Pavadinimas = "Kazkas"

попробуй посчитать быстрее перебирая таблицу (даже в локальном SQL о клиент сервере тут и говорить не приходится).

> Речь ведь о Local SQL.
кто сказал? в вопросе (не твоем) не указано. MsGuns только советовал его использовать. Твои мысли для меня загадка ... и т.д.


 
Troy   (2003-04-05 20:24) [20]

Загружаем Delphi6 и в главном меню выбираем опцию Tools\Database Desktop. Создаём алеас. В загруженном окне, в главном меню выбираем опцию Tools/Alias Manager и нажимаем на кнопку New и очищается поле Database Alias в котором мы указываем имя алеаса. В графе Path указываем путь, где будет располагаться алеас. Далее нажимаем на Save as… и OK.

В загруженном окне, в главном меню выбираем File\New\Table появится выбор Б.Д. в котором нас интересует тип базы Paradox7. Щелкаем на кнопку OK и в появившемся окне в графе Field Name указываем название столбцов.
В графе Type указываем следующие значения для полей
Namber-------S (числовой)
Family--------A
Name---------A (короткое целое)
Otchestvo----A
Company-----A (рис.1)

рис.1

В верхнем правом углу из раскрывающегося списка выбираем Secondary Indexes. Нажимаем на кнопку Define и у нас появляется диалоговое окно (рис.2). Заносим в правую область поля Family;Name;Otchestvo и жмём на кнопку Ok. В появившемся окне вводим имя объединющее все эти поля
пусть будет FIO.
Сохраняем файл туда, где находится наш алеас.


Осталось только загрузить Б.Д. и связать таблицы.

Для это Щелкаем по DataSourse и в DataSet указываем Table1
Выделяем Table1 и в свойстве :
1) DatabaseName указываем наш алеас.
2) TableName указываем имя нашей Б.Д.
3) a) IndexFieldName выбираем поле Family;Name;Otchestvo
b) или IndexName



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
7-77190
OlegM
2003-03-06 12:26
2003.04.24
Как проверить какого типа значение в реестре


6-77066
succer
2003-03-02 06:39
2003.04.24
Перехват ссылок


14-77102
botton
2003-04-07 17:42
2003.04.24
ощибка


7-77197
SeNtiMeL
2003-03-06 22:10
2003.04.24
Как определить имя компьютера и описание компьютера ?


1-77006
Лана Розанова
2003-04-14 07:35
2003.04.24
MSOffice





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский