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

Вниз

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

 
Patrick ©   (2003-09-29 08:28) [0]

Посоветуйте, пожалуйста, какие компоненты лучше применять для доступа к DBF, причем необходима поддержка индексов Clipper"а (*.NTX), ибо создавать свои как-то затруднительно (Exclusive) в положении false. Таблица постоянно кем-то открыта.


 
sniknik ©   (2003-09-29 08:39) [1]

Halcyon, сам пользуюсь именно изза Clipper и (*.NTX)
http://www.vodonosov.newmail.ru/develop/develop.htm
(есть и другие, этот мне больше нравится, есть исходники полностью на дельфях можно исправлять, хотя он немного тормознее других именно изза этого)


 
Patrick ©   (2003-09-29 08:52) [2]

Премного благодарен.


 
Ильш ©   (2003-09-30 09:28) [3]

А есть еще Merant !!! И тоже неплох !!!


 
Patrick ©   (2003-09-30 16:08) [4]

Попробовал Halcyon, один вопрос как искать по составному индексу
например
HalcyonDataset1.IndexOn(...,"FirstName+SecondName+LasName",...)
то каким образом
HalcyonDataSet1.FindKey(?),
пробовал и HalcyonDataSet1.FindKey([Value1+Value2+Value3]) и
HalcyonDataSet1.FindKey([Value1,Value2,Value3]) (хотя так неправильно), всё равно не получается.


 
sniknik ©   (2003-09-30 16:27) [5]

есть свой метод Find, скачай help по нему (Halcyon, там же, либо по ссылке, очень поможет).


 
Patrick ©   (2003-09-30 17:55) [6]

Find также пробовал, я почти уверен в том, что
IndexOn(...,"Firstname+SecondName+Lastname",...) не делает ALLTRIM каждого поля, но почему-то
IndexOn(...,"ALLTRIM(Firstname)+ALLTRIM(SecondName)+ALLTRIM(Lastname)",...) что-то ругается относительно длины строки выражения, странно.


 
sniknik ©   (2003-09-30 18:07) [7]

создание составного индекса

if not FileExists(BaseDir+"\DiscCrd.Ntx") then
try
AddLog("Переиндексация таблици DiscCli.Dbf", FileIndexShow);
TDest.Active:= False;
TDest.TableName:= "DiscCli.Dbf";
TDest.Active:= True;
TDest.IndexOn(BaseDir+"\DiscCrd.Ntx", "", "PADR(STR(Type,3,0),3) + PADR(CODE,25) + STR(GR1,6,0) + STR(GR2,6,0) + STR(GR3,6,0) + STR(GR4,6,0) + STR(GR5,6,0)", "", Duplicates, Ascending);
TDest.Active:= False;
except
on E: EDataBaseError do DoIfError(E.Message);
else DoIfError("Неизвестная ошибка!");
end;


использование

TDest.IndexFileInclude(PDest+"\DiscCrd.Ntx");
TDest.IndexName:= "DISCCRD";
TDest.First;
UpEdit:= 0;
UpAdd:= 0;
while not TSour.Eof do begin
st:= TSour.Fields[MasT2[1]].AsString;
if st[1] = "!" then while length(st) < 25 do st:= st+"Z"
else st:= Copy(St, 1, CutDiscontLength)+StringOfChar(" ", 25-CutDiscontLength);

if TDest.Find(" 4"+st+" 0 0 0 0 0" , True, False) then begin
TDest.Edit;
UpEdit:= UpEdit+ 1;
end else begin
TDest.Append;
UpAdd:= UpAdd+ 1;
end;
....


p.s. скачай хелп.


 
Patrick ©   (2003-09-30 18:14) [8]

Спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
3-73965
Дмитрий К.
2003-10-05 01:29
2003.10.23
Коректное обновление данных базы в сети.


1-74283
KSergey
2003-10-10 18:10
2003.10.23
Default Button


3-74057
Filat
2003-10-02 17:53
2003.10.23
Программно добавить Items?


1-74115
Qwe
2003-10-11 20:01
2003.10.23
Label в несколько строк


14-74429
MYSTERYO
2003-10-02 23:33
2003.10.23
Бывает у вас такое? На любимом форуме побывал, почту проверил,