Форум: "Базы";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
ВнизПроблема с открытием таблици Найти похожие ветки
← →
SZap (2003-02-26 19:14) [0]Есть некая dbf таблица, при открытии ее Delphi ругается "не могу найти индекс"...
На сколько я понимаю, гдето в нутрях dbf прописано, что для этой таблици сужествует индекс...
У меня этого индекса нет, да и ненужен он мне...
Подскажите пожалуйста:
- как мне открыть эту таблицу? (програмно)
- можно ли из этого dbf удалить информацию о индексах?
← →
sniknik (2003-02-26 20:09) [1]28 байт заголовка считай с нуля (заголовой идет с начала таблици), обнули его. (самый простой хотя и немного хакерский способ)
← →
SZap (2003-02-26 20:28) [2]>sniknik
а по другому, более корректно, никак?
← →
sniknik (2003-02-26 21:36) [3]Открой в Фоксе (или через ODBC фоксовый драйвер) сам снимет, и еще можно через функцию какуюто dbi**** не помню (BDE).
но в итоге любой способ лезет в заголовок и обнуляет этот байт. что тебе проще? выбирай.
← →
DarkGreen (2003-02-27 05:34) [4]А через Database Desktop не получится?
← →
SZap (2003-02-27 09:33) [5]>DarkGreen
Получается, но меня интересует как это програмно сделать???
← →
SZap (2003-02-27 12:06) [6]Есть какието еще варианты???
← →
sniknik (2003-02-27 12:10) [7]Тебе трех недостаточно? хотябы одним сделай. Или компонент нужен который будет признак снимать? ;(
← →
gek (2003-02-27 12:10) [8]Есть на сайте Борланд"a специальная утилита для восстановления порушенных таблиц. Вот ее и надо искать
← →
SZap (2003-02-27 12:23) [9]sniknik> нет, все предложенное меня неустраивает...
gek> это тоже, что и с помощью Database Desktop...
у меня программа использует чужую таблицу, обновляется она примерно раз в час, каждый раз использовать какието утилиты устать можно, хочу, чтобы программа сама все делала (копировала в нужное место, удаляла информацию о индексе, ну и все остальное, что от нее требуется)
← →
gek (2003-02-27 12:29) [10]
> (копировала в нужное место, удаляла информацию о индексе,
> ну и все остальное, что от нее требуется)
Ну а зачем индексы то удалять?
если каждый час рушатся индексы, тут что-то не так.
← →
SZap (2003-02-27 12:33) [11]gek> индексы не рушатся, их просто у меня нет, файл dbf лежит на сервере, а индексы у юзеров на компах...
← →
sniknik (2003-02-27 12:34) [12]SZap (27.02.03 12:23)
ну тоды я тебя разочарую, других способов нет, может только замаскированные, а на самом деле способ единственный открываеш таблицу исправляеш байт, все. Кто это будет делать неважно.
← →
Anatoly Podgoretsky (2003-02-27 13:41) [13]SZap (27.02.03 09:33)
dbiRegisterCallback
остальные методы хакерские и опасные
← →
SZap (2003-03-03 16:28) [14]Хорошо, убедили...
а может кто нибудь показать пример кода, как работать с dbiRegisterCallback ???
← →
Anatoly Podgoretsky (2003-03-03 16:32) [15]А ты ленивый Парамоша
← →
SZap (2003-03-03 16:39) [16]>>Anatoly Podgoretsky
может ты и прав...
а может я не такой умный как ты :(
← →
Anatoly Podgoretsky (2003-03-03 16:45) [17]Рассказываю, в хелпе нажимаешь левую кнопку и тянешь мышко до конца текста (не отпуская), затем Ctrl+C, открываешь редактор и в нем Ctrl+V (в нужном месте конечно).
Потренируйся и если не получится, то придешь и подробно опишесь свои шаги.
Но мне кажется, тебе еще рано с компьютером работать.
← →
Ditrix (2003-03-03 18:05) [18]функция прописывает нули в заголовок dbf файла и он свободен для открытия
function OpenDBF(aFName: string): byte;
var ccode, cnt, smb: byte;
f: file of byte;
begin
ccode:= 1;
smb:= 0;
Assign(f, aFName);
{$I-}
Reset(f);
for cnt:= 15 to 31 do begin
seek(f,cnt); write(f,smb);
end;
Close(f);
if IOResult <> 0 then ccode:= 0;
{$I+}
OpenDBF:= ccode;
end; // OpenDBF
← →
SZap (2003-03-05 16:36) [19]>>Ditrix
Спасибо...
← →
sniknik (2003-03-05 16:46) [20]???????? в итоге оказывается нужно было не правильное решение, а готовый код? ???????
кстати данный код чреват глюками (перекрываются зарезервированные байты, 29 точно знаю в фоксе используется)
← →
SZap (2003-03-06 09:25) [21]>sniknik
ты немного неправ, нужно правильное решение, выраженное готовым кодом...
Если кто нибыдь поделится примером работы с dbiRegisterCallback, буду премного благодарен...
← →
sniknik (2003-03-06 10:54) [22]правильное решение (2 варианта) и неправильное тебе давно подсказали, но до сих пор ждеш. вот я решил код нужен. и вот этот пост SZap (05.03.03 16:36) добавил уверенности (Анатолий который для тебя функцию вспомнил спасиба не удостоился).
ладно это я так. продолжим. (хотя сейчас повторять буду см. Anatoly Podgoretsky © (03.03.03 16:45) но другими словами).
береш текст -> dbiRegisterCallback переносиш в редактор дельфей, ставиш курсор на этот текст, нажимаеш Ctrl (держиш) и нажимаеш F1 - открывается хелп по нему, видиш ->
Example 1: Create a callback that handles the condition of a missing .MDX file for a dBASE file or a missing .CDX file for a FoxPro file: { - Код вызова, пример - }
чего еще? или тебе сюда и код скопировать? Пара копирований и пара проб и все у тебя заработает (уверен, хотя сам этим никогда не пользовался, можеш считать это предубеждением)
← →
SZap (2003-03-06 11:15) [23]>sniknik
Спасибо большое, извените идиота, в рот положили а не разжевали...
Спасибо всем кто отвечал...
← →
Anatoly Podgoretsky (2003-03-06 12:20) [24]SZap (06.03.03 09:25)
Если воспользуешься хакерскими советами то жди неприятностей в порчей, надежный путь тебе указан, этим же путем пользуется и Database Desktop. Код примера не жди, это наглость просить скопировать код из хелпа, это твое домашнее задание научиться работать с Виндоус, копировать и вставлять тексты, копировать и удалять файлы, звапускать и закрывать программы и т.д.
← →
SZap (2003-03-06 13:31) [25]>Anatoly Podgoretsky
:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
по поводу: "копировать и удалять файлы" это тоже вопрос, как скопировать файл из под Delphi (хотя это уже другой вопрос)...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c