|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Clipper5 и *.cdx
|
|
Автор |
Гъди () |
Публикувано | 28.06.00 10:14 |
|
клиперджии, знае ли някой защо не мога да индексирам /под win98/ index.cdx за дбф >13000 и нещо записа от програма компилирана с exospace-linker , иначе ако е в 2-редова програма става индексирането. Предполагам че проблема е в някои настройки. clipper=//f:80 //lowmem:16 това използвам.
Някой имали идея ?
| |
Тема
|
Clipper5 и *.cdx
[re: Гъди]
|
|
Автор |
NumLock () |
Публикувано | 28.06.00 11:15 |
|
Не съм използвал никога Exospace защото съм фен на Blinker (ама истинския, не този който върви като демо с Clipper), но мисля че проблема е същия - управлението на паметта и временните файлове. Когато (размер на ключа)*(брой записи) стане достатъчно голямо командата Index се държи непредсказуемо, независимо дали работиш с NDX, CDX, MDX, NTX или каквито и да са xxX-ове. Reindex се държи малко по-добре, но и там избива.
Как си решавам въпроса - използвам в командата Index частта Eval Every.
Пример
Index on Field1+Field5+Str(Field7,5) Tag ZABIVA To NESTAVA Eval {|| Mamati()} Every Interval
където mamati() си е лично твоя функция, която прави каквото си поискаш - например gauge. (нищо лично ;-) ), стойността на Interval си я избираш с налучкване, така че да не забива отново програмата.
Ефекта си го обяснявам така: на всеки Interval записа индексирането спира, резултатите се записват в индексния файл и заетата памет се освобождава.
В момента това върви при мен върху файл с почти 43000 записа и размер на ключа за индексиране 17 байта.
Сигурно проблема може да се реши и с някакви настройки по паметта при свързването, но след като съм си решил проблема какво да се хабя.
А имаш ли някакъв опит с индексиране на DBF файлове във Delphi или CBuilder ?
| |
|
...Аз доста се изненадах, от това, че някой активно използува Clipper "под Win".
Даже самото съчетание ми е малко чудно. За мен Clipper нормално, изчерпва право
на участие извън DOS. Та помислете като пример само, над VMS...
Първата ми мисъл беше свързана с environment-a където може да се посочи
размера на буфера за управление на индексите. Но явно не е свързано с това...
Абе хора, вие с какъв Clipper работите? На времето си поиграх 5.3, но не ми
хареса хич. Дори документацията му беше афиф. Стопирах на класическия
Natucket 5.1. Струва ми се, че после Computer Associated огелпаха работата.
Имам предвид CA Visual Objects. Много странно нещо.
Що се отнася за индексирането, ще видя в CBuilder как са тънкажите. Но в
случай на "аварийни" индексирания, май по добре да пуснете Visual dBase, според
това какъв драйвер ще ви трябва, разбира се.
| |
|
Любо, нали виждаш че отдавна ровя за индексите. Имам няколко клиперски програми които много добре си вървят но искам да ги прехвърля на делфи или c ,което не може да стане с еднократно действие а постепено-по модули което значи че трябва едновременно да работят делфи и clipper въру една база. файловете са от рода на 200-500 хиляди записа. Та понеже cdx indeksite се използват от делфи и от клипер се мъча да конвертирам clipper87.ntx ->clipper53.cdx ->delphi
| |
|
Гъди, в момента и аз правя същото, но през Clipper 5.2, поради технически причини. Не ти ли върши работа номера с Eval/Every?
Преди време виждах, че се интересуваш от Appolo, но явно и ти си се отказал.
Как създаваш индексите към вече съществуващ файл с данни? Може ли директно с някой метод на TTable или задължително трябва да се използват функциите на BDE? Може ли по някакъв начин да се изчисти флага, показващ, че файла е индексиран, като се използва някакво свойство на TTable. Не мога да отлепя по тези въпроси и как да ги реша културно, а не със силови методи. Ще ти бъда много благодарен ако знаеш нещо по въпроса и го споделиш естествено.
| |
|
...по едно време и аз мърморех нещо вьв връзка с индекси и SQL. Ама нищо.
Пак ще се поразприказвам.
Щом положението ти опра на индексите - то ще трябва да се реши. Но все пак
считам че:
1) От Clipper и (някои такива) се създаде "похват/рефлекс" да се работи посто-
янно с DBSeek(). Това създава мислене, силно различаващо се от технологията
на големите Бази от данни, където SQL си обслужва primary/secondary index.
Там няма какво човек да се кахъри за Index/Reindex. Аки имаш намерение след
време да се занимаеш с тези неща, трябва да отиграеш и SQL. Е, лошото е
че при DBF нема Rollback. Но за сега, щом са bags - те това е положението.
2.) Тези NTX са удивително "бързи", но затова са и специфични за Clipper. Не
случайно там няма bags. То може и от там да тръгва проблема. Тъй ли се
скапват работите, ако индекса е само един?
Към този момент не намерих време да видя има ли тактики за тяхното създаване при BDE. Но имам некои съмнения, защото тук говорим за т.нар.
Natural drivers, и много-много не съм ровил да видя как стои въпроса при тях.
Тия дни ще почовъркам, щото и мен ме вълнува този въпрос. Дали пък не се
припокрива с генериране на ключово поле?...
Поздрави: Любо
Любо.
| |
|
същото както при Гъди - имам клиперски приложения които вървят сравнително добре. Целта е да може със вече съществуващата база да може да се работи под уиндоус, но понеже има и доста стари компютри - оттам да се работи през старите програми. И аз като Гъди стигнах до решението CDX. Хората малко се понаплашиха от онези "реклами" с белезниците и няма да искат да дават пари за лицензи и разбира се за нови компютри.
Моят въпрос конкретно е дали може да се създаде (физически) индексен файл към вече съществуващ DBF файл. Със функциите на BDE може, но дали може да стане по-културно със някакъв метод на TTable?
Втория проблем е че при създаването на индекс BDE сетва едно байтче във DBF файла и ако след това индексния файл се погуби, в момента в който кажеш
Table1.Name:='Mydata.dbf';
Table1.Active:=true;
Делфито веднага ти прави изключение и казва "Да, ама къде ти е индексчето?"
Дали има някакво свойство, чрез което това байтче може да се изчисти?
За да съм още по-конкретен - интересуват ме точно така наречените expression index. Доколкото знам, те са нещо уникално за xBase файловете и на друго място не се поддържат, поне не в този явен вид.
Ще съм много благодарен ако някой помогне, та дори и да каже "това не може да стане", поне ще престана да се пънкам.
| |
Тема
|
Сещам се нещо друго за DBF и Delphi ...
[re: NumLock]
|
|
Автор |
GoodMan () |
Публикувано | 29.06.00 10:32 |
|
И аз дълго съм се ровил, ама май не може от TTable .. да направиш индекси...само от BDE функциите...
Сетих се, че Delphi-to (или BDE-то) имаше някакъв проблем с броя на записите (при DBF файловете) Даваше ги с 1 по-малко. Нещо не можеше да обработи последния физически запис ... Тествайте приложенията си за такъв бъг..
Успех!
| |
|
...в разговор с един колега, той ме пита: " Ти работил ли си с Apollo?"
Някой от вас да е пробвал? Каза, че по всяка вероятност, една от алтернативите
на BDE е там. Дали?
| |
Тема
|
Преди час-два...
[re: Гъди]
|
|
Автор |
Гъди () |
Публикувано | 29.06.00 14:23 |
|
Със няколко замени на BDE съм провал/и Аполо/ -идеално си работят с *.ntx -и със кирилица -обаче кирилицата не се чете от клиперска програма. /ако някой го е направил да каже!!!/
****************
за НумЛОцк-
procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.excusive:=true
Table1.AddIndex('sm_debit', 'sm_debit', [ixPrimary]);
end;
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|