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

Вниз

Индексы для 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.016 c
14-74391
mfender
2003-10-02 16:05
2003.10.23
Любят ли программисты Формулу-1?


7-74484
Gepard
2003-08-08 11:56
2003.10.23
Serial port & nine-bit @NT


4-74523
Raki
2003-08-17 23:18
2003.10.23
WM_USER посылаемый из DLL в неактивное окно


1-74313
SergP
2003-10-12 06:21
2003.10.23
Вопрос по динамическим массивам.


3-74045
Bezpal
2003-10-02 08:59
2003.10.23
Как связать delphi с SQL Server 2000?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский