![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с структурой БД в формате dbf [D5, D6, dBase, FoxPro]
Sergant © (2002-10-31 14:55:00)Не подскажет кто линк на статью по работе со стртруктурой dbf-файла или пример. Под работой я понимаю просмотр(это просто), добавление, удаление и переименовавание полей БД (это уже посложне).
Заранее спасибо.
Kudatsky (2002-11-04 11:29:00) [1]Я тоже постоянно работаю с Clipper-файлами и всё в порядке.
В том числе работает ALTER TABLE.
Ditrix (2002-11-04 11:26:00) [2]Зачастую Clipper базы построены с учетом криптования, тогда ни Delphi программа ни DatabaseDesktop не в состоянии открыть ее.
DatabaseDesktop например пишет "Encrypted database not supported", именно в этом случае нужно либо править заголовок либо использовать что то отличное от BDE
Akella (2002-11-04 08:38:00) [3]Я работаю с клиперовскими базами стандартно через настройку алиаса в BDE, и стандартные делфийские компоненты - не вижу ни одного повода жаловаться
Ditrix (2002-11-04 08:02:00) [4]Что бы работать с Clipper файлами, не меняя их структуру используй библиотеку Apollo, она поддерживает и все и вся, и BDE ей не нужен.
А вообще если ты поправишь заголовок CorrectDBF ничего страшного не произойдет, такого же еффекта можно добиться от тарой доброй утилиты BDBF.EXE, она тоже правит заголовки. И ничего страшного Clipper прграмма при открытии файла вернет все на место без боли и вылетов.
blackman (2002-11-03 11:50:00) [5]А зачем тогда все эти разговоры ?
Возьмите какую-то готовую прогу например dbfdesk
http://rachitel.narod.ru/util.htm
или
http://members.fortunecity.com/drozdov_mur/downloa1/DBFDesk.zip
и меняйте поля.
Непонятно только, что Вы поменяете, если проги на Clipper остануться старыми ?
Sergant (2002-11-03 04:34:00) [6]К сожалению, перебросить в другой формат данные не могу, так как программы, работающие с dbf написаны не мной, а написать, скажем, операционный день банка одному человеку очень сложно :(.
blackman (2002-11-02 23:26:00) [7]Зачем спорить ? Я все свои базы из 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); //
Anatoly Podgoretsky (2002-11-02 20:44:00) [8]blackman © (02.11.02 20:11)
Это не так, отличаются также текстовые поля и может быть еще что то.
blackman (2002-11-02 20:37:00) [9]Забыл подчеркнуть, что Вам нужно именно Dbase3
4. Структура Dbase3, Clipper5
http://articlesd.h1.ru/docum/dbf.php
blackman (2002-11-02 20:11:00) [10]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 и т.п.
MsGuns (2002-11-02 18:13:00) [11]>Shulc (02.11.02 14:34)
Согласен по большому счету. Но не всегда применимо, увы :((
Shulc (2002-11-02 14:34:00) [12]Мой совет ADS. Но, попытайся перейти на более высокий уровень.
Можно перекачать БД в Oracle. Работка предстоит трудоёмкая, но рано или поздно,(если это не однодневка), тебе придется перейти на более высокий уровень. Так лучше сразу.(А то будешь писать, а потом переписывать, "это мы уже проходили" )
Anatoly Podgoretsky (2002-11-02 14:31:00) [13]Изменения определяются через оператор <>
if Old <> New then ....
Заведи таблицу соответствий
Sergant (2002-11-02 14:22:00) [14]Извиняюсь за некорректно поставленный вопрос. Постараюсь уточнить - что именно меня интересует.
В принципе, методика изменения структуры dbf-файла мне понятна:
1. Определяем текущую структуру файла и заносим ее, например в StringGrid (Имя поля, тип поля, размер и кол-во десятичных знаков.
2. Изменяем структуру (добавляем, удаляем или изменяем список полей БД).
3. Создаем временный файл с новой структурой.
4. Копируем в этот файл данные.
5. Удаляем файл со старой структурой и на его место копируем файл с измененной структурой.
У меня возникли проблемы с 4 пунктом - никак не могу сообразить - как отследить, что вот это поле, напимер, добавили, вот это - удалили, а вот это - изменили имя, а вот у этого - тип и т.д.
Хотя, удаление и добавление поля отследить просто, а вот с изменением у меня никак не получается. Поэтому и спрашивал пример.
Anatoly Podgoretsky (2002-11-02 11:03:00) [15]Клиппер таблицы стандартнымисредствами не поддержаны, требуется отдельный драйвер, обычно ODBC и от него зависит можно или нет сделать это. Нехорошо с твоей стороны, справишвать про dBase, FoxPro а думать про Клиппер, вводишь в заблуждение и заставляешь давать неверные и не нужные ответы.
Поищи в Сети, кто и как поддерживает Клиппер
Sergant (2002-11-02 08:02:00) [16]Kuusiniemi>
Гиганту мысли статья очень помогла. Спасибо за ссылку. Есть одно "но" - указанный способ не подходит для Clipper"овских dbf-файлов, так как их структура отличается от стандартной. А вот чем - я не знаю. Может супергигант супермысли подскажет что-либо и по этому поводу?
MsGuns>
DBD не подходит по тому же поводу - он некорректно работает с Clipper"овскими dbf-файлами. А так как на работе используются в основном они и dbf - файлы FoxPro, я пишу свой простенький редактор dbf - файлов на компоненте Halcyon. И именно на работе со структурой застопорился.
MsGuns (2002-10-31 19:59:00) [17]А чем плох DBD (DeskTop) ? Он есть в дельфях.
Kuusiniemi (2002-10-31 16:19:00) [18]http://www.delphikingdom.com/helloworld/dbheader.htm
Данный статья поможет гиганту мысли?