Вниз
Скачать: CL | DM;

Индексы   Найти похожие ветки 

← →
Sw   (2006-12-27 08:56) [0]

Помогите, пожалуйста, новичку
Таблица FoxPro, создаю индекс по двум полям,и вывожу в DBGrid - все осортировано как мне надо.
 DM.limOut.Exclusive:=TRUE;
 DM.limOut.Open;
 DM.limOut.AddIndex("NewIndex", "Otsv;Date", [ixExpression]);
 DM.limOut.IndexName :="NewIndex";
Можно ли изменить порядок следования записей в этом dbf согласно сортировке по индексу?


← →
Elen ©   (2006-12-27 08:58) [1]


> Можно ли изменить порядок следования записей в этом dbf
> согласно сортировке по индексу?
>

Что прям вот так "физически"? А зачем?


← →
Sw   (2006-12-27 09:00) [2]

этот dbf передается в другую прогу (должен быть отсортирован)
к этой программе доступа не имею


← →
Elen ©   (2006-12-27 09:30) [3]


> Sw

А-а-а. Ну насколько мне известно просто так физически отсортировать нет возможности прям из делфи без выкрутасов. В Visual FoxPro обычный SELECT может выдать выборку в другой файл если указать параметр INTO, а вот в Делфи так сделать можно только имея такой провайдер и работая с ним под ADO. Это то что мне удавалось, но потом оказалось проще перейти на фокс полностью (задача такая была). Самый простой вариант создавать программно аналогичный dbf и в цикле переписывать в него отсортированную выборку. Хотя может другие чего попроще подскажут, но в SQL помоему чтото типа INTO всетаки существует, имхо.


← →
palva ©   (2006-12-27 10:00) [4]

Нужно скопировать выборку в другой dbf, потом старый удалить, а новый переименовать. Можно зайти в FOXPRO, там есть команда SORT. Но она работает точно также.


← →
Anatoly Podgoretsky ©   (2006-12-27 18:32) [5]

> Sw  (27.12.2006 8:56:00)  [0]

dbiSortTable


← →
Sw   (2007-01-12 06:14) [6]

отсортировать и перебросить записи в др.файл получается, но хотелось бы понять как изменить физ.послед-ть записей с помощью BDE API, попытка моя безуспешна, помогите, пож-та
var
Field: word;CaseIns: boolean;Recs,Result: longint;
begin
 DM.limOut.Close; DM.limOut.Open;
 Field := ????
 CaseIns := True;
 Recs := DM.limOut.RecordCount;
 Check(DbiSortTable(DM.limOut.DBHandle, nil, nil, DM.limOut.Handle, nil, nil,
 DM.limOut.Handle, 1, @Field, @CaseIns, nil, nil, true, nil, Recs));
end;

в Field не знаю, предаю число полей - не ругается, а вот что делает, не могу понять, толи перезаписывает этот файл, толи дописывает в него записи (например, в файле было 10 записей, становится 13)
и не знаю как задать параметр для сортировки нужного поля
будьте добры, поможите


← →
Zorro2001 ©   (2007-01-12 06:32) [7]

я делал так
ADOTable1.Sort:="Field  ASC"
это по возрастанию
а DESC -по убыванию.


← →
anton773 ©   (2007-01-20 18:50) [8]

Спасибо работает



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.051 c
15-1168580679
0x07BBh
2007-01-12 08:44
2007.02.04
2006 год: Год, когда Россия учила Запад уму-разуму


15-1169034793
Ega23
2007-01-17 14:53
2007.02.04
Ну вот прошёл тестирование


2-1168862299
Barma
2007-01-15 14:58
2007.02.04
DrawGrid


15-1168682731
Саша-ашаС
2007-01-13 13:05
2007.02.04
Помогите удалить папку


1-1165824158
ZFS
2006-12-11 11:02
2007.02.04
MDI-приложение




   Наверх