Размер SQL-сервера Varchar - PullRequest
       3

Размер SQL-сервера Varchar

0 голосов
/ 06 декабря 2018

Это моя функция, чтобы получить размер поля varchar таблицы SQL-сервера, используемой при доступе через ODBC:

Function fn_field_size(par_tab, par_field As Variant) As Variant

    Dim db_tab As DAO.Database
    Dim tab_tab As DAO.TableDef
    Dim tab_field As DAO.field

    fn_field_size = 0

    Set db_tab = CurrentDb()
    Set tab_tab = db_tab.TableDefs(par_tab)
    Set tab_field = tab_tab.Fields(par_field)
    fn_field_size = tab_field.Size

    Set tab_tab = Nothing
    Set db_tab = Nothing

End Function

Казалось, что все работало нормально, пока я не использовал функцию для varchar (1000) поле.В этом случае tab_field.Size равно 0. С меньшими полями, такими как Varchar (100), функция работает нормально и возвращает 100.

Почему это так?

1 Ответ

0 голосов
/ 07 декабря 2018

Как отмечают другие, ODBC видит столбец типа vечар, nvchar, char более 255 символов в качестве столбца типа «памятки», и поэтому вы не можете получить максимальное количество символов.

Предполагая, что у вас естьпроходной запрос, определенный в Access.(Я всегда делаю один, и снова и снова использую его для всего кода), тогда вы можете получить длину любого поля с этим кодом:

Public Function GetFLength(strTable As String, strField As String) As Long

   Dim strSQL     As String

   strSQL = "select col_LENGTH('" & strTable & "','" & strField & "')"

   With CurrentDb.QueryDefs("qryPassR")
      .SQL = strSQL
      GetFLength = .OpenRecordset()(0)
   End With

End Function

Для varchar (max), вышевернет -1, но для всего остального вернет длину столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...