Текущий архив: 2003.04.24;
Скачать: CL | DM;
Внизпомогите разобраться с индексами Найти похожие ветки
← →
Вася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;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.006 c