Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Поле DBF с размерностью (15,3)


Автор: SlavaSeverin 10.3.2011, 16:50
Добрый день. Есть вот такая проблема. Необходимо создать DBF-таблицу с полем типа numeric и размерностью 20,3 (20-целая часть| 3-дробная) стандартными средствами. Пробую SQl-командой Create Table - создаёт дробную часть, но её размерность всегда 5. Буду очень благодарен за любую помощь. 
P.S. - С#.

Автор: Данкинг 10.3.2011, 19:59
Дык, как создаёшь-то, где запрос?

Автор: SlavaSeverin 11.3.2011, 09:52
Код

 //Making OleDb connection
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Project\\NET\\VS2010\\Test\\Test_CreateDBF\\Test_CreateDBF\\bin\\Debug\\DBF\\;Extended Properties=dBASE III;User ID=Admin;Password=");
            con.Open();
            
            //Creating clients.dbf table
            OleDbCommand create = con.CreateCommand();
            create.CommandText = "CREATE TABLE Test.dbf (Pole1  currency(17,3), Pole2 char(24), Pole3 numeric(1), Pole4 char(24), Pole5 char(24), Pole6 char(24), Pole7 char(6), Pole8 char(6), Pole9 char(6), Pole10 char(25), Pole11 char(25));";
            create.ExecuteNonQuery();


Pole 1 - дробная часть создаётся с размерностью 5...

Автор: Данкинг 11.3.2011, 10:33
Pole1 у тебя вообще типа currency, при чём тут numeric?

Автор: SlavaSeverin 11.3.2011, 10:47
*CREATE TABLE Test.dbf (Pole1  numeric(17,3)
сорри - неправильно показал - просто пробывал... но сути не меняет

Код

//Making OleDb connection
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Project\\NET\\VS2010\\Test\\Test_CreateDBF\\Test_CreateDBF\\bin\\Debug\\DBF\\;Extended Properties=dBASE III;User ID=Admin;Password=");
            con.Open();
            
            //Creating clients.dbf table
            OleDbCommand create = con.CreateCommand();
            create.CommandText = "CREATE TABLE Test.dbf (Pole1  numeric(17,3), Pole2 char(24), Pole3 numeric(1), Pole4 char(24), Pole5 char(24), Pole6 char(24), Pole7 char(6), Pole8 char(6), Pole9 char(6), Pole10 char(25), Pole11 char(25));";
            create.ExecuteNonQuery();

Автор: Данкинг 11.3.2011, 10:56
Не знаю тогда, видимо, глюки Jet какие-то. На самом FoxPro у меня всё отлично работает:
Код

CREATE TABLE test2 (pole1 n(17,3))

Создай на фоксе таблицу и используй её как шаблон, если уж на то пошло.

Добавлено через 2 минуты и 31 секунду
Или формат в "Extended Properties=dBASE III" попробуй поменять (это я как предположение).

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