powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка поля таблицы на NULL (Allow nulls) - Help!!!
10 сообщений из 10, страница 1 из 1
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33382867
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Помогите решить проблему!
Подключился к базе MS SQL 2000 из Excel (2003) (VBA, через ADO) для экспорта данных
Необходимо получить свойство поля таблицы - может ли значения этого поля (Field) принимать Null (Allow Null)???? (НЕ проверка на NULL значения поля таблицы)
Тип и длинну поля получил, а вот эту проблему не могу решить, может кто знает.
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383132
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед экспортом предварительно проводите проверку в syscolumns (поле IsNullable)
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383258
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, а примерчик можно ..... я у уже как только не пробовал
найти это свойства Fields не могу .... Уж как только не извращался
размер поля же работает -rs.Fields(rs.Fields(i).Name).DefinedSize, но проверку на null ниасилил
Уже все пособрал (симбиоз всех языков :-))
rs.Fields(rs.Fields(i).Name).IsNullable
rs.Fields(rs.Fields(i).Name).Properties("adFldIsNullable").Value
If rs.Fields(rs.Fields(i).Name).Properties("Nullable")
If rs.Fields("SP75").Properties("Allow Null")
Ничиго не работает ..... сочинять устал .....
может где есть почитать про св-ва Fields в ADO (VB синтаксис)

Заранее благодарен
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383324
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select name, isnullable from syscolumns where id = object_id('YourTable') 
order by colorder
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383349
Сиквела нет под рукой, но для Access вот так, может тоже прокатит.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub CheckNull()
    Dim cat As New ADOX.Catalog
    Dim tbl As New ADOX.Table
    Dim col As New ADOX.Column
    
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=D:\My Databases\dbTest.mdb"
    
    Set tbl = cat.Tables("Table1")
    Set col = tbl.Columns("FirstName")
    
    For Each col In tbl.Columns
        Debug.Print col.Name
        Debug.Print col.Properties("Nullable")
        'Debug.Print col.Properties("Jet OLEDB:Allow Zero Length")
        'Debug.Print col.Attributes
    Next
    
    Set cat.ActiveConnection = Nothing
    Set col = Nothing
    Set tbl = Nothing
    Set cat = Nothing
End Sub
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383572
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Пользователь2
rs.Fields(rs.Fields(i).Name).Properties("Nullable") - пробовал, выдает ошибку
т.к. я использую ADO (как я понял там нет константы "Nullable")
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
А в Вашем примере ADOX
Dim cat As New ADOX.Catalog
Я смотрел эти примеры, но не понял, какую библиотеку надо подключить и возможно ли вообще использовать ADOX в VBA (Excel 2003).... может не прав, но примеры приводились либо в C# либо VB.NET

Сейчас буду пробовать забрать св-во поля по совету Melkiades
Melkiades
Код: plaintext
1.
2.
select name, isnullable from syscolumns where id = object_id('YourTable') 
order by colorder


Может все-таки существует возможность получить эту информацию без использования системных таблиц, а через св-во Fields????
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383583
michael23Я смотрел эти примеры, но не понял, какую библиотеку надо подключить и возможно ли вообще использовать ADOX в VBA (Excel 2003).... может не прав, но примеры приводились либо в C# либо VB.NET.
Можно.
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383663
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Пользователь2
Спасибо огромное, я просмотрел .... 3 раза по этому списку лазил ..... ненашел.
Буду пробовать ....как через сист. таблицу так и перепишу подключение через ADOX
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383664
Wtf, в хелпе ADO пример есть.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Public Sub Main()
    Dim cnn As ADODB.Connection
    Dim strCnn As String
    Dim rst As ADODB.Recordset
    Dim strTable As String
    Dim adoField As ADODB.Field
    Dim adoProp As ADODB.Property
    
    strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=D:\My Databases\dbTest.mdb"
    Set cnn = New ADODB.Connection
    cnn.Open strCnn
   
    Set rst = New ADODB.Recordset
    strTable = "Table1"
    rst.Open strTable, cnn, adOpenForwardOnly, adLockReadOnly, adCmdTable
    
    ' Display the attributes of the connection
    Debug.Print "Connection attributes = " & cnn.Attributes
    
    ' Display the property attributes of the Employee Table
    Debug.Print "Property attributes:"
    For Each adoProp In rst.Properties
        Debug.Print "   " & adoProp.Name & " = " & adoProp.Attributes
    Next adoProp
    
    ' Display the field attributes of the Employee Table
    Debug.Print "Field attributes:"
    For Each adoField In rst.Fields
       Debug.Print "   " & adoField.Name & " = " & adoField.Attributes
    Next adoField

    ' Display fields of the Employee Table which are NULLABLE
    ' Это то, что тебе нужно.
    Debug.Print "NULLABLE Fields:"
    For Each adoField In rst.Fields
        If CBool(adoField.Attributes And adFldIsNullable) Then
            Debug.Print "   " & adoField.Name
        End If
    Next adoField

    rst.Close
    cnn.Close

    Set rst = Nothing
    Set cnn = Nothing
End Sub
...
Рейтинг: 0 / 0
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
    #33383831
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь2 ..... СПАСИБО ОГРОМНОЕ
Работает!!!! ...... неделя мучений закончилась

If CBool(rs.Fields(rs.Fields(i).Name).Attributes And adFldIsNullable) Then
Range("XX").Value = "Allow Null"
Else
Range("XX").Value = "Not Allow Null"
End If

В VBA справка никакая ..... где можно посмотреть "хелп ADO" ... в msdn заблудился
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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