|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
До сегодняшнего дня приходилось программировать работу с 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 так не хочется возвращаться ... Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 19:59 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
SQL поизучай. ALTER TABLE ... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 20:03 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Dima T SQL поизучай. ALTER TABLE ... Через OLEDB ? Для DBF-файла в команде ALTER TABLE наверно есть какие-то нюансы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 20:22 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Vakho Dima T SQL поизучай. ALTER TABLE ... Через OLEDB ? Для DBF-файла в команде ALTER TABLE наверно есть какие-то нюансы ? Да. В Unsupported Visual FoxPro Commands and Functions in OLE DB Provider нет Alter table. Синтаксис почти MS SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 21:34 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
PaulWist Vakho пропущено... Через OLEDB ? Для DBF-файла в команде ALTER TABLE наверно есть какие-то нюансы ? Да. В Unsupported Visual FoxPro Commands and Functions in OLE DB Provider нет Alter table. Синтаксис почти MS SQL Я не понял "Да" к чему относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 22:16 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
VakhoЯ не понял "Да" к чему относится. Vakho Через OLEDB ? Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 23:59 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Vakho Dima T SQL поизучай. ALTER TABLE ... Через OLEDB ? Для с-файла в команде ALTER TABLE наверно есть какие-то нюансы ? Откуда инфа что DBF это FoxPro? Это не так ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2021, 20:55 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Тип файла определяется по значению нулевого (физически самого первого) байта файла 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, а его для изменения структуры таблиц использовать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 10:41 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
ВладимирМ, У меня DBF-файлы, сделанные при помощи CLIPPER в 1995г. С данными в них работаю через OLEDB ( System.Data.OleDb , Visual Studio 2010 Ultimate ) при помощи SQL-запросов типа SELECT, INSERT, UPDATE, DELETE. Теперь вот понадобился ALTER TABLE ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:18 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Пока что с ALTER TABLE ничего не выходит. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Система сообщает: "Operation is not supported for this type of object." ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:39 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Строка соединения: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:12 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
1. Ну, так Вы и получили сообщение, что этот драйвер не может использовать ALTER TABLE. Не поддерживает такие команды 2. Надо искать специализированный драйвер для Clipper, если такой вообще есть. В 1995 году с OLE DB мало кто связывался, а со старшими версиями возможны другие проблемы На всякий случай, структура DBF для Clipper отличается от структуры для FoxPro. Совпадение тоже есть, но для "базовых" структур. Т.е. когда количество полей, количество символов в поле меньше определенного значения. С индексами будет беда, если они есть по изменяемым полям. В общем, использовать не "родные" драйверы для модификации структур таблиц или прямое изменение на низком уровне крайне не рекомендуется. Возможно, Вам проще будет сделать какое-то приложение на Clipper для изменения структуры и запускать это приложение из Visual Studio ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:52 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
ВладимирМ, Я посмотрел в нулевой байт файла. Там, в соответствии с вашей таблицей: 0x03 FoxBASE+/Dbase III plus, нет memo Вобщем, грустно, конечно. Мне нужно пробежаться по сотне DBF-файлов, найти в них определённые числовые поля и увеличить из разрядность. Вручную при помощи имеющихся приложений сделать это нереально. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:08 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Попробуй CREATE TABLE с новой структурой и перелить туда данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:15 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Или скачай фокс, немного поизучай и напиши на нем. Строк 10 кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:17 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Или спросить в форуме по C# , раз уж на нем пишешь, может там что подскажут. Тема к фокспро не имеет никакого отношения. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:29 |
|
DBF-файл: программное изменение его структуры.
|
|||
---|---|---|---|
#18+
Vakho ВладимирМ, Я посмотрел в нулевой байт файла. Там, в соответствии с вашей таблицей: 0x03 FoxBASE+/Dbase III plus, нет memo Вобщем, грустно, конечно. Мне нужно пробежаться по сотне DBF-файлов, найти в них определённые числовые поля и увеличить из разрядность. Вручную при помощи имеющихся приложений сделать это нереально. Если речь идет только об увеличении размерности поля типа NUMERIC, то FoxPro, теоретически, не должен изменить значение нулевого байта, поскольку остается корректная структура с точки зрения этой версии DBF. Но могут быть проблемы с индексами, поскольку в FoxPro индексы строились по другому чем в Clipper Т.е. можно попробовать использовать драйвер OLE DB для VFP9, если поля не использовались в индексах Хотя, конечно, сама по себе задача странная. Менять структуру таблиц некоего приложения из-вне этого самого приложения. Даже если все будет сделано корректно, то не факт, что само приложение не сломается. Мало ли, может в нем какие-то ограничения по длине поля "зашиты" напрямую в коде ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 14:15 |
|
|
start [/forum/topic.php?fid=41&fpage=2&tid=1581469]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 395ms |
0 / 0 |