Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка поля таблицы на NULL (Allow nulls) - Help!!! / 10 сообщений из 10, страница 1 из 1
17.11.2005, 04:44:25
    #33382867
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Добрый день! Помогите решить проблему!
Подключился к базе MS SQL 2000 из Excel (2003) (VBA, через ADO) для экспорта данных
Необходимо получить свойство поля таблицы - может ли значения этого поля (Field) принимать Null (Allow Null)???? (НЕ проверка на NULL значения поля таблицы)
Тип и длинну поля получил, а вот эту проблему не могу решить, может кто знает.
...
Рейтинг: 0 / 0
17.11.2005, 09:31:07
    #33383132
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Перед экспортом предварительно проводите проверку в syscolumns (поле IsNullable)
...
Рейтинг: 0 / 0
17.11.2005, 10:02:36
    #33383258
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Извиняюсь, а примерчик можно ..... я у уже как только не пробовал
найти это свойства 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
17.11.2005, 10:28:25
    #33383324
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Код: plaintext
1.
2.
select name, isnullable from syscolumns where id = object_id('YourTable') 
order by colorder
...
Рейтинг: 0 / 0
17.11.2005, 10:37:15
    #33383349
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Сиквела нет под рукой, но для 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
17.11.2005, 11:42:47
    #33383572
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
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
17.11.2005, 11:46:29
    #33383583
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
michael23Я смотрел эти примеры, но не понял, какую библиотеку надо подключить и возможно ли вообще использовать ADOX в VBA (Excel 2003).... может не прав, но примеры приводились либо в C# либо VB.NET.
Можно.
...
Рейтинг: 0 / 0
17.11.2005, 12:06:34
    #33383663
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
To Пользователь2
Спасибо огромное, я просмотрел .... 3 раза по этому списку лазил ..... ненашел.
Буду пробовать ....как через сист. таблицу так и перепишу подключение через ADOX
...
Рейтинг: 0 / 0
17.11.2005, 12:06:39
    #33383664
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
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
17.11.2005, 12:44:39
    #33383831
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка поля таблицы на NULL (Allow nulls) - Help!!!
Пользователь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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка поля таблицы на NULL (Allow nulls) - Help!!! / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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