Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Добавление столбца в БД / 7 сообщений из 7, страница 1 из 1
23.05.2006, 11:27
    #33744627
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Есть база Access 2000, таблица Report, столбцы date, 1, ...
Необходимо проверить наличие столбца N. Если его нет, то создать.
Добавить строку получилось (DAO 3.6).

Set Rst = OpenDatabase(Pth & "internet.mdb").OpenRecordset("Report")
Rst.AddNew
Rst("date") = "01" & Right(Date, 8)
Rst.Update 1, False
Rst.Close


Как проверить и создать столбец?
...
Рейтинг: 0 / 0
23.05.2006, 12:06
    #33744828
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Код: 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.
Public Sub CreateField()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Dim blnFieldExists As Boolean
    
    Set db = OpenDatabase("D:\1\internet.mdb")
    Set tdf = db.TableDefs("Report")
    
    For Each fld In tdf.Fields
        If fld.Name = "N" Then
            Exit For
            blnFieldExists = True
        End If
    Next fld
    
    If Not blnFieldExists Then
        With tdf
            .Fields.Append .CreateField("N", dbText)
        End With
    End If
    
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
End Sub
...
Рейтинг: 0 / 0
23.05.2006, 16:59
    #33746303
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Спасибо, а как создать не текстовый столбей, а числовой; что вместо dbText?
...
Рейтинг: 0 / 0
23.05.2006, 17:22
    #33746403
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Код: plaintext
1.
2.
3.
        With tdf
            .Fields.Append .CreateField("N", dbInteger)
            '.Fields.Append .CreateField("N", dbLong)
        End With
...
Рейтинг: 0 / 0
23.05.2006, 17:26
    #33746427
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Тип данных = числовой.
Размер поля = Действительное.
...
Рейтинг: 0 / 0
24.05.2006, 09:30
    #33747349
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Чтобы я посоветовал.

1. Воспользоваться DDL запросом. Ограничение в том, что работает только через ADO.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub CreateFieldADO()
    Dim cnn As ADODB.Connection
    
    Set cnn = New ADODB.Connection
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=D:\1\internet.mdb;Persist Security Info=False"
      
    cnn.Execute "ALTER TABLE Report " _
      & "ADD COLUMN N NUMERIC(18,3)"
    
    cnn.Close
    
    Set cnn = Nothing
End Sub

2. Через DAO. Обнаружено, что если создать поле типа dbBigInt, то оно сохранится как действительное. Также DAO, не понимает свойств Precision и Scale, их нужно сохдавать самостоятельно.

Код: 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.
Public Sub CreateFieldDAO()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Dim prp As DAO.Property
    Dim blnFieldExists As Boolean
    
    Set db = OpenDatabase("D:\1\internet.mdb")
    Set tdf = db.TableDefs("Report")
    
    For Each fld In tdf.Fields
        If fld.Name = "N" Then
            Exit For
            blnFieldExists = True
        End If
    Next fld
    
    If Not blnFieldExists Then
        Set fld = tdf.CreateField("N", dbBigInt)
        tdf.Fields.Append fld
        
        db.TableDefs.Refresh

        Set prp = fld.CreateProperty("Precision",  2 ,  18 )
        fld.Properties.Append prp

        Set prp = fld.CreateProperty("Scale",  2 ,  3 )
        fld.Properties.Append prp
    End If
    
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
End Sub
...
Рейтинг: 0 / 0
25.05.2006, 17:10
    #33752211
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление столбца в БД
Спасибо, проверю.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Добавление столбца в БД / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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