powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DBF-файл: программное изменение его структуры.
18 сообщений из 18, страница 1 из 1
DBF-файл: программное изменение его структуры.
    #40049106
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До сегодняшнего дня приходилось программировать
работу с DBF-файлами при помощи Visual Studio 2010 Ultimate
(из-под Windows XP SP3):
- через присоединение (Linked Table) - чтение данных при помощи ADOX/ADODB
(MS ACCESS 2003) или Linked Server (MS SQL SERVER);
- через OLEDB - чтение / INSERT / UPDATE / DELETE.

И тут вдруг понадобилось программно менять структуру DBF-файла:
- добавлять поля;
- менять параметры поля. Например, изменить разрадность поля типа Numeric.
и т.д. и т.п.

Вопросы:
- Какие библиотеки нужно оспользовать в Visual Studio 2010 Ultimate,
чтобы добиться нужного результата ?
- Если этого нельзя сделать при помощи Visual Studio 2010 Ultimate,
то с помощью каких сред программирования это можно сделать.
В INTERNET-е много готовых десктоп Windows-приложений для работы с
DBF-файлами, но они меня не устраивают. А к старине CLIPPER-у и к
старушке FoxPro так не хочется возвращаться ...

Спасибо.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049107
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL поизучай. ALTER TABLE ...
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049110
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
SQL поизучай. ALTER TABLE ...


Через OLEDB ?
Для DBF-файла в команде ALTER TABLE наверно есть какие-то нюансы ?
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049120
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vakho
Dima T
SQL поизучай. ALTER TABLE ...


Через OLEDB ?
Для DBF-файла в команде ALTER TABLE наверно есть какие-то нюансы ?


Да.

В Unsupported Visual FoxPro Commands and Functions in OLE DB Provider нет Alter table.

Синтаксис почти MS SQL
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049123
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
Vakho
пропущено...


Через OLEDB ?
Для DBF-файла в команде ALTER TABLE наверно есть какие-то нюансы ?


Да.

В Unsupported Visual FoxPro Commands and Functions in OLE DB Provider нет Alter table.

Синтаксис почти MS SQL


Я не понял "Да" к чему относится.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049135
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VakhoЯ не понял "Да" к чему относится.

Vakho

Через OLEDB ?


Да.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049255
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vakho
Dima T
SQL поизучай. ALTER TABLE ...


Через OLEDB ?
Для с-файла в команде ALTER TABLE наверно есть какие-то нюансы ?

Откуда инфа что DBF это FoxPro? Это не так
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049476
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип файла определяется по значению нулевого (физически самого первого) байта файла DBF. FoxPro использовал следующие значения

0x02 FoxBASE
0x03 FoxBASE+/Dbase III plus, нет memo
0x30 Visual FoxPro
0x31 Visual FoxPro, поддержка свойства autoincrement
0x32 Visual FoxPro, поддержка полей типа Varchar, Varbinary, или Blob
0x43 dBASE IV SQL табличный файл, нет memo
0x63 dBASE IV SQL системный файл, нет memo
0x83 FoxBASE+/dBASE III PLUS, с memo
0x8B dBASE IV с memo
0xCB dBASE IV SQL табличный файл, с memo
0xF5 FoxPro 2.x (или младше) с memo
0xFB FoxBASE

Посмотрите, какое значение в нулевом байте у Ваших таблиц DBF. Если значение не из этого списка, то это не таблица FoxPro

Следует еще иметь в виду, что если Вы будете изменять структуру DBF, то может автоматически произойти изменение 0 байта заголовка DBF в соответствии с новой структурой или из-за использованного драйвера. Как следствие, либо из Visual Studio перестанет открываться таблица, либо из приложения, где используется этот DBF станет невозможна работа с ним

Для Visual FoxPro 9 был выпущен драйвер OLE DB (VfpOleDB.dll). Его можно использовать для изменения структуры таблиц. Но с учетом выше сказанного. Для младших версий FoxPro был только драйвер ODBC, а его для изменения структуры таблиц использовать нельзя.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049484
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
У меня DBF-файлы, сделанные при помощи CLIPPER в 1995г.

С данными в них работаю через OLEDB ( System.Data.OleDb ,
Visual Studio 2010 Ultimate ) при помощи SQL-запросов типа
SELECT, INSERT, UPDATE, DELETE.
Теперь вот понадобился ALTER TABLE ...
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049492
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока что с ALTER TABLE ничего не выходит.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
   ' Создаем объект "соединение" с базой данных.
    Conn = New OleDbConnection(ConnectionString)
   
   ' Создаем объект команду.
    cmd = Conn.CreateCommand
    cmd.CommandText = "ALTER TABLE MATER ALTER COLUMN COD_MAT Numeric(6,0)"

    Try
      Conn.Open() ' Подключение к базе данных.
      Try ' Исполнение команды.
        cmd.ExecuteNonQuery()
      Catch e As OleDbException
         .....



Система сообщает: "Operation is not supported for this type of object."
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049503
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка соединения:
Код: vbnet
1.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\G_APTEKA\;Extended Properties=dBASE IV
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049520
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Ну, так Вы и получили сообщение, что этот драйвер не может использовать ALTER TABLE. Не поддерживает такие команды
2. Надо искать специализированный драйвер для Clipper, если такой вообще есть. В 1995 году с OLE DB мало кто связывался, а со старшими версиями возможны другие проблемы

На всякий случай, структура DBF для Clipper отличается от структуры для FoxPro. Совпадение тоже есть, но для "базовых" структур. Т.е. когда количество полей, количество символов в поле меньше определенного значения. С индексами будет беда, если они есть по изменяемым полям. В общем, использовать не "родные" драйверы для модификации структур таблиц или прямое изменение на низком уровне крайне не рекомендуется.

Возможно, Вам проще будет сделать какое-то приложение на Clipper для изменения структуры и запускать это приложение из Visual Studio
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049521
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
Я посмотрел в нулевой байт файла.
Там, в соответствии с вашей таблицей:
0x03 FoxBASE+/Dbase III plus, нет memo

Вобщем, грустно, конечно.
Мне нужно пробежаться по сотне DBF-файлов, найти
в них определённые числовые поля и увеличить из разрядность.
Вручную при помощи имеющихся приложений сделать это нереально.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049523
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй CREATE TABLE с новой структурой и перелить туда данные.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049524
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или скачай фокс, немного поизучай и напиши на нем. Строк 10 кода.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049528
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или спросить в форуме по C# , раз уж на нем пишешь, может там что подскажут.
Тема к фокспро не имеет никакого отношения.
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049543
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vakho
ВладимирМ,
Я посмотрел в нулевой байт файла.
Там, в соответствии с вашей таблицей:
0x03 FoxBASE+/Dbase III plus, нет memo

Вобщем, грустно, конечно.
Мне нужно пробежаться по сотне DBF-файлов, найти
в них определённые числовые поля и увеличить из разрядность.
Вручную при помощи имеющихся приложений сделать это нереально.


Если речь идет только об увеличении размерности поля типа NUMERIC, то FoxPro, теоретически, не должен изменить значение нулевого байта, поскольку остается корректная структура с точки зрения этой версии DBF. Но могут быть проблемы с индексами, поскольку в FoxPro индексы строились по другому чем в Clipper

Т.е. можно попробовать использовать драйвер OLE DB для VFP9, если поля не использовались в индексах

Хотя, конечно, сама по себе задача странная. Менять структуру таблиц некоего приложения из-вне этого самого приложения. Даже если все будет сделано корректно, то не факт, что само приложение не сломается. Мало ли, может в нем какие-то ограничения по длине поля "зашиты" напрямую в коде
...
Рейтинг: 0 / 0
DBF-файл: программное изменение его структуры.
    #40049557
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
Попробуем на копии. "Попытка - не пытка" ©
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DBF-файл: программное изменение его структуры.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]