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

Вниз

Работа с структурой БД в формате 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
14-69573
Карелин Артем
2002-11-04 17:30
2002.11.21
Собираю комп.


1-69408
Barmaglot
2002-11-11 00:46
2002.11.21
Преобразование величины ...


4-69649
kex86
2002-09-26 02:19
2002.11.21
Почему моя программа не кладется в кладовку?


3-69188
Keksss
2002-11-01 09:42
2002.11.21
Фильтрация данных


1-69399
Faustov
2002-11-10 17:54
2002.11.21
Как передать в функцию как параметр двумерный динамический массив





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