powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли редактировать столбцы программно для файлов DBF?
5 сообщений из 5, страница 1 из 1
Можно ли редактировать столбцы программно для файлов DBF?
    #38558952
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уверен, что в тот форум пишу, но где про DBase не нашел.
Подскажите, можно ли использовать команду ALTER COLUMN для файлов DBF.
Создавать программно получается таблицу DBF, удалять|добавлять столбец - тоже.
А вот изменять столбец - нифига.
На C#:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
static void Main(string[] args)
        {
            using (var dBaseConnection = new OleDbConnection(
            //@"Provider=Microsoft.Jet.OLEDB.4.0; " +
            @"Provider=Microsoft.ACE.OLEDB.12.0; " +
            @" Data Source=f:\LearningIT\dBase; " +
            @"Extended Properties=dBase IV"))
            {
                dBaseConnection.Open();
                string createTableSyntax =
                "Create Table Person3 " +
                "(Name char(50), City char(50), Phone char(20), Zip decimal(15,5))";//ок - создана таблица
                string altTable = "ALTER TABLE Person3 Drop COLUMN Phone"; //ок -удален столбец
                 string altTable = "ALTER TABLE Person3 add column KOD_T_ST5 integer "; //ок -добавлен столбец
                //string altTable = "ALTER TABLE Person3 ALTER COLUMN KOD_T_ST5 Char(20)"; выдает ошибку
               //"Операция не поддерживается для объектов этого типа."
                var cmd = new OleDbCommand(altTable, dBaseConnection);
                cmd.ExecuteNonQuery();
            }
        }


Так и должно быть?
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Можно ли редактировать столбцы программно для файлов DBF?
    #38558964
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В фоксе правильный синтаксис такой
Код: sql
1.
ALTER TABLE Person3 ALTER COLUMN KOD_T_ST5 C(20)


и попробуй VFPOLEDBprovider использовать.
...
Рейтинг: 0 / 0
Можно ли редактировать столбцы программно для файлов DBF?
    #38756994
Mdel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мой вопрос похож на вопрос автора, напишу сюда:

Код: sql
1.
2.
3.
4.
5.
6.
7.
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\temp_folder;Extended Properties=dBase IV;Locale Identifier=866;");

                OleDbCommand oledbcomm = conn.CreateCommand();
                oledbcomm.CommandText = " Alter table  MyTable drop column file_name";
                conn.Open();
                oledbcomm.ExecuteNonQuery();
                conn.Close();



Проблема в том, что при попытке удалить столбец в DBF файле, содержащем данные, выдается исключение OleDBException- "Операция не поддерживается для таблицы, содержащей данные.". А столбец необходимо таки удалить.
Каким образом можно это осуществить через выбранного провайдера?
...
Рейтинг: 0 / 0
Можно ли редактировать столбцы программно для файлов DBF?
    #38757019
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз такое ограничение - то тогда только одним из двух путей:
1) Слить селектом данные в таблицу с новой структурой, закрыть подключение, удалить исходную таблицу и переименовать новую в исходную. Вариант подходит для свободных таблиц.
2) Слить селектом данные в курсор или временную таблицу, очистить исходник от данных, откорректировать структуру таблицы, залить инсертом данные обратно.

Как вариант - можно соединить оба подхода. Особенно, когда не знаешь точной структуры таблицы, а знаешь только имена полей для удаления. Проблема только с индексами...
- делаем новую таблицу селектом, отбирая из исходной одну запись; удаляем эту запись и удаляем необходимые поля
- инсертим все данные из исходника в новую таблицу
- удаляем исходник
...
Рейтинг: 0 / 0
Можно ли редактировать столбцы программно для файлов DBF?
    #38757189
Ffffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, проще отказаться от Jet?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли редактировать столбцы программно для файлов DBF?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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