15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
1
.NET 2.x

Как удалить столбцы из таблицы (DBF)

01.01.2014, 21:11. Показов 3377. Ответов 31
Метки нет (Все метки)

Доброго времени суток уважаемые форумчане. Сразу приношу вам извинение за возможно глупый вопрос, я не профи, а всего лишь самоучка-любитель. Поиском пользовался, скоро уже мозоли на глазах будут.
Озвучу в крацие суть задачи (проблемы): не могу ни как удалить столбцы из таблицы (DBF)

Пробовал через OleDb:
VB.NET
1
2
3
4
5
6
7
8
Dim cnn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=dBASE IV;User ID=Admin;Password=;")
        Dim cmd As OleDbCommand = New OleDbCommand
        cmd.Connection = cnn
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "ALTER TABLE pdl DROP COLUMN dtr"
        cnn.Open()
        cmd.ExecuteNonQuery()
        cnn.Close()
Пробовал через Odbc:
VB.NET
1
2
3
4
5
6
7
8
Dim cnn As OdbcConnection = New OdbcConnection("Dsn=Файлы dBASE;dbq=C:\;defaultdir=C:\;driverid=533;maxbuffersize=2048;pagetimeout=5;Exclusive=true;Deleted=Yes")
        Dim cmd As OdbcCommand = New OdbcCommand
        cmd.Connection = cnn
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "ALTER TABLE pdl DROP COLUMN dtr"
        cnn.Open()
        cmd.ExecuteNonQuery()
        cnn.Close()
В обоих случаях ошибка: "Невозможно изменение структуры таблицы 'pdl'. База данных доступна только для чтение".
Дайте пожалуйста дельный совет, что я делаю не так?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2014, 21:11
Ответы с готовыми решениями:

КАК ПРОЧИТАТЬ с нолевого столбца таблицы DBF
Среда Visual Basic STUDIO’2010 Professional Dim dBaseDataReader As...

Как совсем удалить записи из таблицы DBF?
DELETE * From table1 where... - только помечает записи как удаленные. А как физически удалить...

Копирование данных из одной таблицы dbf в шаблон dbf
Есть источник файл med.dbf с данными, необходимо перенести часть данных в файл-шаблон med.dbf....

Как удалить записи с БД в формате .dbf
Всем доброго времени суток у меня такой вопрос: как программно удалить записи с БД в формате .dbf,...

31
Эксперт .NET
5341 / 4133 / 1187
Регистрация: 12.10.2013
Сообщений: 11,986
Записей в блоге: 2
01.01.2014, 23:29 2
А что это за команда? Я такой что-то не встречал при работа с БД...
VB.NET
1
cmd.CommandText = "ALTER TABLE pdl DROP COLUMN dtr"
0
6242 / 3543 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
01.01.2014, 23:34 3
insite2012, это запрос на изменения структуры таблицы
2
insite2012
01.01.2014, 23:40
  #4

Не по теме:

О как... Хорошая ссылочка, спасибо, мне тоже пригодиться...

0
3171 / 1930 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
01.01.2014, 23:56 5
Цитата Сообщение от Razvedka2020 Посмотреть сообщение
База данных доступна только для чтения
А она, случаем, не как ReadOnly открыта?

Если это разовая задача, то многие программы позволяют менять структуру таблицы.
Если требуется именно в коде, то, в любом случае, можно создать новую таблицу и скопировать туда нужное. ALTER TABLE - физически - делает то же самое с перезаписью исходного файла.
0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 00:07  [ТС] 6
Спасибо за ссылку, очень полезная, но вопрос остался открытым.

Добавлено через 8 минут
Цитата Сообщение от gazlan Посмотреть сообщение
А она, случаем, не как ReadOnly открыта?
В примере с Odbc она открыта как "Exclusive=true".
Возможно вы и правы, проще это реализовать путем создания новой базы и ее заполнения, но раз проблема возникла, нужно все же в ней разобраться и понять в чем проблема.

Добавлено через 2 минуты
Пойти по легкому пути мы всегда успеем, а во "врага" должны знать в лицо
0
insite2012
02.01.2014, 00:23
  #7

Не по теме:

Razvedka2020, если не сложно, можно файл такой базы... Поэкспериментировать, мне такие еще не попадались...

0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 08:42  [ТС] 8
Цитата Сообщение от insite2012 Посмотреть сообщение
можно файл такой базы...
К сожалению нет. Таблица содержит персональную информацию и ее распространение для меня подсудное дело.
0
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,125
02.01.2014, 12:09 9
Цитата Сообщение от Razvedka2020 Посмотреть сообщение
База данных доступна только для чтение
Быть может, глупый вопрос, но какие атрибуты имеют директория БД и сам файл БД?
0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 15:52  [ТС] 10
Таблица находится в корне (С:\), а сам файл без атрибутов.

Добавлено через 5 минут
Цитата Сообщение от Nachrichter Посмотреть сообщение
какие атрибуты имеют директория БД и сам файл БД?
Ваше замечание оказалось весьма кстати...
Переместил таблицу на другой диск (не системный), ошибка изменилась:
- для OleDB
"Операция не поддерживается для таблицы, содержащей данные."
- для Odbc
"ERROR [HY000] [Microsoft][Драйвер ODBC dBase] Операция не поддерживается для таблицы, содержащей данные."
Оба подключения ругаются на строку
VB.NET
1
cmd.ExecuteNonQuery()
0
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,125
02.01.2014, 18:50 11
Цитата Сообщение от Razvedka2020 Посмотреть сообщение
Операция не поддерживается для таблицы, содержащей данные.
Razvedka2020, а прочие запросы корректно выполняются?
0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 20:15  [ТС] 12
Выборка нормально проходит, другие операции не пробовал, не было необходимости. Сейчас проверю...

Добавлено через 1 час 5 минут
Проверил INSERT, DELETE и UPDATE, все работает. Правда проверял через "Обозреватель серверов".
Здесь он источник ошибки определяет как odbcjt32.dll
Если я правильно понял, это "общий" (дефалтовый) драйвер для Win7/8 и он кастрированый, возможно в этом то и вся проблема....
0
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,125
02.01.2014, 20:20 13
Цитата Сообщение от Razvedka2020 Посмотреть сообщение
драйвер для Win7/8 и он кастрированый, возможно в этом то и вся проблема....
Не рассуждая о высоких материях, хотелось бы в этом убедиться.
А есть возможность создать пустую копию файла? Интересно было бы поковырять.
0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 20:41  [ТС] 14
PDL.7z
Это пустая таблица, просто удалены данные
0
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,125
02.01.2014, 20:45 15
Цитата Сообщение от Razvedka2020 Посмотреть сообщение
удалены данные
Дело явно не в них. Есть проблема - у меня архив не отурывается, можете в zip сделать?
0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 21:05  [ТС] 16
PDL.zip
Я не знаю в чем дело, но в пустой таблице ALTER TABLE работает на УРА! И с добавление и с удалением...
0
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,125
02.01.2014, 21:18 17
Цитата Сообщение от Razvedka2020 Посмотреть сообщение
в пустой таблице ALTER TABLE работает на УРА!
Да, действительно. В чём же может быть дело?
0
15 / 14 / 5
Регистрация: 01.01.2014
Сообщений: 97
02.01.2014, 21:27  [ТС] 18
Если б я только знал... Я уже третий месяц бьюсь над этой проблемой и ни кто ничего дельного не может сказать...
0
3801 / 2740 / 632
Регистрация: 08.06.2007
Сообщений: 9,370
Записей в блоге: 4
02.01.2014, 21:36 19
Если работа разовая, то откройте в каком-нибудь специализированном продукте, вроде FoxPro. Если ее надо проделывать регулярно, то напишите обработку двоичного файла. Структура файла DBF простая и общеизвестная. Небольшое упражнение для студента-программиста.
2
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,125
02.01.2014, 21:38 20
Razvedka2020, появилась немного дурацкая мысль: попробуйте выполнить запрос "unlock tables", а затем alter. Чудес не бывает, конечно, но русский "авось" напрашивается.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2014, 21:38

Как узнать структуру dbf-таблицы?
подключаюсь к dbf-таблице с помощью АДО и ODBC драйвера, могу ли я узнать структуру нужной мне...

Как удалить запись из dbf файла в ADO?
Использую АДО... таблица Dbase III... Записи добавляются без проблем, но удалять не хочет никак......

DBF - поменять местами столбцы
Как можно поменять столбцы местами TTable, DBF

Как удалить столбцы
Нужна программа , которая удаляет столбцы из двумерного массива , запрашивая номер столбца по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.