Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.04;
Скачать: CL | DM;

Вниз

DBISortTable: сортировка по нескольким полям.   Найти похожие ветки 

 
Nest ©   (2002-03-12 11:10) [0]

Нужно отсортировать таблицу по двум полям.
Есть:
T1
TYPE LEN DEC NULL_VALUE PK
--------------------------
int 0 0 NOT NULL PK
char 10 0 NOT NULL
char 4 0 NOT NULL PK
int 0 0 NULL
int 0 0
int 0 0 NOT NULL

Надо отсортировать так, чтоб сначала шли записи с PK, потом остальные с NOT NULL потом все остальные, т.е.

TYPE LEN DEC NULL_VALUE PK
--------------------------
char 4 0 NOT NULL PK
int 0 0 NOT NULL PK
char 10 0 NOT NULL
int 0 0 NOT NULL
int 0 0 NULL
int 0 0

Помогите пожалуйста.


 
deleon   (2002-03-12 11:24) [1]

Чего-то я не понял, поля нужно упорядочить или записи ?


 
Nest ©   (2002-03-12 11:26) [2]

2deleon (12.03.02 11:24)
Что значит упорядочить поля?
Канэчна записи отсортировать.


 
Nest ©   (2002-03-12 11:45) [3]

Срочно нужно...


 
Turalyon ©   (2002-03-12 11:52) [4]

А в чем проблемма?
Составляешь SQL запрос, перечисялешь список полей, в том порядке какой тебе нужен, и далее сортируешь....
Что то типа
Select MyTable.MyPK1, MyTable.MyPK2, ..... from MyTable
Order By MyTable.MyPK1

Или выбираешь все * а потом уже в самом DBGrid-е расперделяешь как у тебя будут поля идти....


 
Nest ©   (2002-03-12 11:57) [5]

Turalyon ©
Да мне нужно физическую таблицу отсортировать, а не вернуть отсортированный НД !!!!!!!!!
Надо штоб тадлица на диске отсортировалась...


 
Johnmen ©   (2002-03-12 11:59) [6]

Сортировать-то можно по возраст., либо по убыв.значения поля/полей...
Другого не дано...
А если хочется чего-то нестандартного - тогда извращаться...


 
Nest ©   (2002-03-12 12:01) [7]

2Johnmen ©
Да мне это и надо, токо отсортировать не по одному полю, а по двум.
Не знаю как жэто сделать одной функцией DbiSortTable.
Подскажи.


 
deleon   (2002-03-12 12:10) [8]

Почитай здесь - я уже писал пример:

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1015401064&n=1


 
Turalyon ©   (2002-03-12 12:13) [9]

>Nest ©
Извини, невнимательно прочитал заголовок


 
Johnmen ©   (2002-03-12 12:13) [10]

С DbiSortTable не работал, не скажу, но похожие вопросы уже были - поройся в конфе...


 
Nest ©   (2002-03-12 12:31) [11]

2deleon
2Johnmen
Да конечно я прежде чем вопрос задать, порылся в факе и в хелпе.
Там всё есть но только для сортировки по одному полю.
А как отсортировать по двум полям?


 
deleon   (2002-03-12 14:08) [12]

Ну это уж слишком...
(пора брать деньги за вопросы по Bde API - буду вторым Билли :))))
(с)deleon

procedure TForm1.Button1Click(Sender: TObject);
const
SortFieldCount = 2;
var
Db: TDatabase;
SaveActive: Boolean;
CurProp: CurProps;
SortFlds: array[0..SortFieldCount-1]of Word;
CaseIns: array[0..SortFieldCount-1]of Bool;
SortOrd: array[0..SortFieldCount-1]of SORTOrder;
RecSort: Integer;
begin
try
SaveActive := Tbl.Active;
Tbl.DisableControls;
Tbl.Active := True;
SortFlds[0] := 1; {номера полей в физ. структуре (1..n)}
SortFlds[1] := 2; {номера полей в физ. структуре (1..n)}
CaseIns[0] := True; {Case insensitive for sort column (True/False)}
CaseIns[1] := True; {Case insensitive for sort column (True/False)}
SortOrd[0] := sortASCEND; { Sort Order (sortASCEND/sortDESCEND)}
SortOrd[1] := sortASCEND; { Sort Order (True/sortDESCEND)}

Check(DbiGetCursorProps(Tbl.Handle, CurProp));
Db := Tbl.Database;
Tbl.Active := False;
Check(DbiSortTable(Db.Handle,
CurProp.szName, CurProp.szTableType,
nil, nil, nil, nil,
SortFieldCount,{ кол-во полей в массиве }
@SortFlds, { массив сортируемых полей }
@CaseIns, { массив CaseIns }
@SortOrd, { массив ордеров }
nil, False, nil, RecSort));
finally
Tbl.Active := SaveActive;
Tbl.EnableControls;
end;
end;


 
Nest ©   (2002-03-12 14:19) [13]

2deleon
Спасибо. Это и было нужно.
Снят вопрос.


 
deleon   (2002-03-12 14:35) [14]

Советую чаще читать bde.hlp - очень полезная штука :-)))


 
Anatoly Podgoretsky ©   (2002-03-12 22:15) [15]

Nest © (12.03.02 14:19)
Кстати вероятно ты просто неправильно дал исходные данные, но DbaseIII не поддерживает не первичных ключей, ни ограничений типа NOT NULL



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

Текущий архив: 2002.04.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
1-9450
sad
2002-03-25 09:41
2002.04.04
Создание собственного Help файла


1-9444
Serd_hhc
2002-03-25 10:41
2002.04.04
MP3 и Как?


14-9642
fliz
2002-02-21 14:53
2002.04.04
у кого в каком возрасте зуб мудрости вылез?


3-9405
Shaman_Naydak
2002-03-12 22:27
2002.04.04
Глюкавый MSSQL 2000 + проблема с ARITHABORT


1-9533
новенький в Делфи
2002-03-23 17:25
2002.04.04
Работа с фалами