Исправьте разницу между типами полей Float и Numeric. - PullRequest
1 голос
/ 27 декабря 2011

У меня есть две таблицы dbf, и я должен сравнить их по типам столбцов (полей). Например:

Таблица 1: Id (Numeric) | Name (Character) | Salary (Numeric)
Таблица2: Id (Numeric) | Name (Character) | Salary (Float)

С этими двумя таблицами программа должна отображать сообщение типа (типы не совпадают в поле SALARY [F <> N]), где F - это число с плавающей запятой, а N - это число.

Так что я не могу найти разницу между этими полями, потому что для обеих таблиц

    Using cmd2 As New OleDb.OleDbCommand("select * from Table1", connection)
                    Dim reader As OleDb.OleDbDataReader
                    reader = cmd2.ExecuteReader()

    reader.GetDataTypeName(2) 'returns DBTYPE_NUMERIC
    reader.GetFieldType(2) 'returns System.Decimal
End Using

    Using cmd3 As New OleDb.OleDbCommand("select * from Table2", connection)
                    Dim reader2 As OleDb.OleDbDataReader
                    reader2 = cmd3.ExecuteReader()

    reader2.GetDataTypeName(2) 'returns DBTYPE_NUMERIC
    reader2.GetFieldType(2) 'returns System.Decimal
End Using

Я могу просмотреть символы 'F' и 'N' в заголовке dbf, открыв файл dbf в Блокноте, но не могу прочитать его на VB, и я не думаю, что это тоже хорошая идея.

Что я могу сделать с этой проблемой?

1 Ответ

0 голосов
/ 29 декабря 2011

Типы F и N абсолютно одинаковы, между ними нет никакой разницы.

Более полезным различием будет их настройка, так как вы можете указать, сколько цифр и сколько десятичных знаковместа хранятся в поле.

К сожалению, я не знаю, как это проверить в VB.Net.

...