powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как скопировать данные из одного dbf в другой с помощью C# ADO.NET OLE DB?
1 сообщений из 1, страница 1 из 1
Как скопировать данные из одного dbf в другой с помощью C# ADO.NET OLE DB?
    #39598282
someoneNicko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, нужно открыть dbf файл, изменить его через SQL запросы и сохранить в другой файл. Уже много чего перепробовал, все время натыкаюсь на разные проблемы. Сейчас дошел до того, что создаю таблицу с помощью OLE DB. С этим вроде проблем нет.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Conn = @"Provider=VFPOLEDB.1;Data Source=D:\Work;Password=;Mode=ReadWrite;Collating Sequence=MACHINE;Extended Properties=dBASE III";
...
string strCmd1 = @"create table D:\Work\nfpo.dbf (RM char(1), KVK numeric(3,0), " +
                "KOBL numeric(2,0), KRAJ numeric(2,0), KSEL numeric(2,0), KPOL numeric (5,0), " +
                "UDK numeric(2,0), VDK numeric(2,0), SRK numeric(1,0), KRK numeric (5,0), " +
                "NPO char(38), KOKPO char(14), NPOP char(150), DOK numeric(8,0), KS char(4)," +
                "IPS numeric(1,0));";
OleDbConnection cn = new OleDbConnection(Conn);
cn.Open();
OleDbCommand cmd = new OleDbCommand(strCmd1, cn);
cmd.ExecuteNonQuery();



Но инсертнуть данные в нее не получается. Пишет, что ошибка в SQL запросе: "Command contains unrecognized phrase/keyword."

Код: c#
1.
2.
3.
string strCmd2 = @"insert into D:\Work\nfpo.dbf(NPO) select KNAZ from D:\Work\rrk.dbf);";
OleDbCommand cmd2 = new OleDbCommand(strCmd2, cn);
cmd2.ExecuteNonQuery(); //тут выдает ошибку



Нашел инфу, что OLE DB fox pro не всегда дружит с коммандой "insert into ... select ...". Так что думал сделать прослойку через Data Set, а не работать напрямую с файлами. Думал сделать DBF файл -> DataAdapter -> DataSet -> другой DBF файл. Но тоже не все гладко:
Код: c#
1.
2.
3.
4.
5.
string strCmd2 = @"select RM from D:\Work\rrk.dbf);";
OleDbDataAdapter adapter = new OleDbDataAdapter(strCmd2, Conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];



Выводит в dataGridView только сами столбцы таблицы, строк с данными нет, как будто таблица пустая. Думаю, может проблема в том, что нужно как-то поднять права доступа, ведь если открыть файл в DbfNavigator, то программа запрашивает "монопольный доступ" к файлу. Уже заколебался искать подход к этому dbf-нику, помогите плиз.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как скопировать данные из одного dbf в другой с помощью C# ADO.NET OLE DB?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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