Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Создание dbf-таблицы. Поля с запятой.


Автор: Bladerender 11.4.2012, 17:31
У меня непонятки по созданию таблицы dbf, а точнее полей с знаками после запятой.
Код

System.Data.OleDb.OleDbConnection oConn;
            System.Data.OleDb.OleDbCommand oCmd;

            oConn = new System.Data.OleDb.OleDbConnection();
            oCmd = oConn.CreateCommand();
            oConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                                     Directory.GetCurrentDirectory() +
                                     path+"; Extended Properties=dBASE IV;User ID=Admin;Password=";
            oConn.Open();
            oCmd.CommandText = @"create table " + fileName + " (TARIF_S numeric(13,2), [SUM] numeric(13,2),  DEBT numeric(13,2)";
            oCmd.ExecuteNonQuery();
            oConn.Close();


Как видим, я хочу, что бы создалось поле к примеру Tarif_S размером 13 и  2 после запятй. Но оно упорно создает файл, в котором это поле размером 20 и  5 после запятой.  С полями [SUM] и DEBT такая же беда. ТАкое ощущение, что оно не умеет создавать других размеров  smile  В чем подвох?

Автор: Данкинг 12.4.2012, 00:25
http://www.interface.ru/iservices/messages.asp?forumId=589&topicId=146 что это глюк ODBC. На самом фоксе у меня, разумеется, всё нормально создаётся. Как вариант - создать таблицу-шаблон) нужной структуры на фоксе (ну или через Excel) и копировать его в соответствующие папки по мере необходимости.

Автор: Kolovorot 18.4.2012, 09:59
Если есть возможность используйте другой провайдер для подключения Provider=VFPOLEDB:
Код

OleDbConnection theConnection = new OleDbConnection("Provider=VFPOLEDB; Data Source=pathToFolder");

Автор: Данкинг 18.4.2012, 10:10
Цитата(Kolovorot @  18.4.2012,  10:59 Найти цитируемый пост)
Если есть возможность используйте другой провайдер для подключения Provider=VFPOLEDB:

Так это же сам фокс должен быть установлен на компе, как я понимаю.

Автор: Kolovorot 18.4.2012, 11:04
Цитата(Данкинг @ 18.4.2012,  10:10)
Так это же сам фокс должен быть установлен на компе, как я понимаю.

Да. Я же написал если есть возможность. Правда для него я сейчас обнаружил другой косяк - для того чтобы установить 13 знаков и 2 после запятой, нужно указывать numeric(11,2).

Автор: Данкинг 18.4.2012, 11:38
Не знаю, на самом фоксе нормально создаётся.
Код

CREATE TABLE test1 (pole1 n(13,2))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)