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

Вниз

Работа с структурой БД в формате dbf   Найти похожие ветки 

 
Sergant ©   (2002-10-31 14:55) [0]

Не подскажет кто линк на статью по работе со стртруктурой dbf-файла или пример. Под работой я понимаю просмотр(это просто), добавление, удаление и переименовавание полей БД (это уже посложне).
Заранее спасибо.


 
Kuusiniemi ©   (2002-10-31 16:19) [1]

http://www.delphikingdom.com/helloworld/dbheader.htm

Данный статья поможет гиганту мысли?


 
MsGuns ©   (2002-10-31 19:59) [2]

А чем плох DBD (DeskTop) ? Он есть в дельфях.


 
Sergant ©   (2002-11-02 08:02) [3]

Kuusiniemi>
Гиганту мысли статья очень помогла. Спасибо за ссылку. Есть одно "но" - указанный способ не подходит для Clipper"овских dbf-файлов, так как их структура отличается от стандартной. А вот чем - я не знаю. Может супергигант супермысли подскажет что-либо и по этому поводу?
MsGuns>
DBD не подходит по тому же поводу - он некорректно работает с Clipper"овскими dbf-файлами. А так как на работе используются в основном они и dbf - файлы FoxPro, я пишу свой простенький редактор dbf - файлов на компоненте Halcyon. И именно на работе со структурой застопорился.


 
Anatoly Podgoretsky ©   (2002-11-02 11:03) [4]

Клиппер таблицы стандартнымисредствами не поддержаны, требуется отдельный драйвер, обычно ODBC и от него зависит можно или нет сделать это. Нехорошо с твоей стороны, справишвать про dBase, FoxPro а думать про Клиппер, вводишь в заблуждение и заставляешь давать неверные и не нужные ответы.
Поищи в Сети, кто и как поддерживает Клиппер


 
Sergant ©   (2002-11-02 14:22) [5]

Извиняюсь за некорректно поставленный вопрос. Постараюсь уточнить - что именно меня интересует.
В принципе, методика изменения структуры dbf-файла мне понятна:
1. Определяем текущую структуру файла и заносим ее, например в StringGrid (Имя поля, тип поля, размер и кол-во десятичных знаков.
2. Изменяем структуру (добавляем, удаляем или изменяем список полей БД).
3. Создаем временный файл с новой структурой.
4. Копируем в этот файл данные.
5. Удаляем файл со старой структурой и на его место копируем файл с измененной структурой.
У меня возникли проблемы с 4 пунктом - никак не могу сообразить - как отследить, что вот это поле, напимер, добавили, вот это - удалили, а вот это - изменили имя, а вот у этого - тип и т.д.
Хотя, удаление и добавление поля отследить просто, а вот с изменением у меня никак не получается. Поэтому и спрашивал пример.


 
Anatoly Podgoretsky ©   (2002-11-02 14:31) [6]

Изменения определяются через оператор <>
if Old <> New then ....
Заведи таблицу соответствий


 
Shulc   (2002-11-02 14:34) [7]

Мой совет ADS. Но, попытайся перейти на более высокий уровень.
Можно перекачать БД в Oracle. Работка предстоит трудоёмкая, но рано или поздно,(если это не однодневка), тебе придется перейти на более высокий уровень. Так лучше сразу.(А то будешь писать, а потом переписывать, "это мы уже проходили" )


 
MsGuns ©   (2002-11-02 18:13) [8]

>Shulc (02.11.02 14:34)

Согласен по большому счету. Но не всегда применимо, увы :((


 
blackman ©   (2002-11-02 20:11) [9]

1.Если переходить от DBF, то самое простое кинуть его в Access, поскольку импорт есть. И работать через ADO, а не связываться с ORACLE
2. Структура DBase 3, Foxpro 2.5 и Clipper 5 одинаковы за исключением Memo полей.
3. Работа с DBF см.
http://blackman.hoha.ru/primer/my/nstruct.zip - исходник, правда без изменения структуры (что сделать несложно (мыль пришлю пример)) через BDE без задания Alias и т.п.


 
blackman ©   (2002-11-02 20:37) [10]

Забыл подчеркнуть, что Вам нужно именно Dbase3
4. Структура Dbase3, Clipper5
http://articlesd.h1.ru/docum/dbf.php


 
Anatoly Podgoretsky ©   (2002-11-02 20:44) [11]

blackman © (02.11.02 20:11)
Это не так, отличаются также текстовые поля и может быть еще что то.


 
blackman ©   (2002-11-02 23:26) [12]

Зачем спорить ? Я все свои базы из Clipper перевел.
Отличается DBase 5 - это да, а DB 3 - то, что надо кроме Memo полей - они разные для всех и конечно разные индексные файлы,
поэтому надо убить признак индексного файла в заголовке DBF
procedure CorrectDBF(DBFFileName : String);
var
FileHandler : Integer;
Buf : Byte;
begin
buf:=0;
FileHandler:=FileOpen(DBFFileName,fmOpenWrite);
try
FileSeek(FileHandler,28,0);
FileWrite(FileHandler,Buf,1); //


 
Sergant ©   (2002-11-03 04:34) [13]

К сожалению, перебросить в другой формат данные не могу, так как программы, работающие с dbf написаны не мной, а написать, скажем, операционный день банка одному человеку очень сложно :(.


 
blackman ©   (2002-11-03 11:50) [14]

А зачем тогда все эти разговоры ?
Возьмите какую-то готовую прогу например dbfdesk
http://rachitel.narod.ru/util.htm
или
http://members.fortunecity.com/drozdov_mur/downloa1/DBFDesk.zip
и меняйте поля.
Непонятно только, что Вы поменяете, если проги на Clipper остануться старыми ?


 
Ditrix ©   (2002-11-04 08:02) [15]

Что бы работать с Clipper файлами, не меняя их структуру используй библиотеку Apollo, она поддерживает и все и вся, и BDE ей не нужен.
А вообще если ты поправишь заголовок CorrectDBF ничего страшного не произойдет, такого же еффекта можно добиться от тарой доброй утилиты BDBF.EXE, она тоже правит заголовки. И ничего страшного Clipper прграмма при открытии файла вернет все на место без боли и вылетов.


 
Akella ©   (2002-11-04 08:38) [16]

Я работаю с клиперовскими базами стандартно через настройку алиаса в BDE, и стандартные делфийские компоненты - не вижу ни одного повода жаловаться


 
Ditrix ©   (2002-11-04 11:26) [17]

Зачастую Clipper базы построены с учетом криптования, тогда ни Delphi программа ни DatabaseDesktop не в состоянии открыть ее.
DatabaseDesktop например пишет "Encrypted database not supported", именно в этом случае нужно либо править заголовок либо использовать что то отличное от BDE


 
Kudatsky   (2002-11-04 11:29) [18]

Я тоже постоянно работаю с Clipper-файлами и всё в порядке.
В том числе работает ALTER TABLE.



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

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

Наверх




Память: 0.51 MB
Время: 0.016 c
1-69294
Брат
2002-11-12 12:34
2002.11.21
Как сделать обратный отсчет времени?


1-69379
Explorer
2002-11-10 13:03
2002.11.21
Игра


1-69302
kex86
2002-11-12 14:12
2002.11.21
срочно


1-69359
Ciber SLasH
2002-11-13 03:30
2002.11.21
Heeeeeeeeeeeeeeeeeelp!!!!!!!


14-69512
AZ
2002-11-02 14:01
2002.11.21
RXLib почил в бозе?