Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA Как добавить программно таблицу и создать в ней поля в б/д Access ? / 8 сообщений из 8, страница 1 из 1
11.02.2016, 14:18
    #39168599
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
Код: vbnet
1.
2.
Private Sub Form_Load()
  Set BD = DAO.OpenDatabase("D:\Prohect\MySite.mdb")



Код: vbnet
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.
        CmdCommand.CommandText = "SELECT * FROM " & List5.List(f)
        Set Rec = CmdCommand.Execute()
        
        Set tdfNew = BD.CreateTableDef(s)
        
        For f3 = 0 To Rec.Fields.Count - 1
          
          If Rec.Fields(f3).Type = 3 Or Rec.Fields(f3).Type = 19 Or Rec.Fields(f3).Type = 17 Then 'Long (Длинное целое) AUTO_INCREMENT
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbLong)
          ElseIf Rec.Fields(f3).Type = 203 Then 'Текст
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbMemo)
            'fld.size = Tbl.Fields(f3).size
          ElseIf Rec.Fields(f3).Type = 16 Or Rec.Fields(f3).Type = 2 Then
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbInteger)
          ElseIf Rec.Fields(f3).Type = 202 Or Rec.Fields(f3).Type = 130 Then 'CHAR
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbText)
'            fld.size = Tbl.Fields(f3).size
          
          ElseIf Rec.Fields(f3).Type = 11 Then
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbBoolean)
          
          ElseIf Rec.Fields(f3).Type = 4 Then
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbCurrency)
            
          ElseIf Rec.Fields(f3).Type = 5 Then
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbDouble)
          ElseIf Rec.Fields(f3).Type = 135 Or Rec.Fields(f3).Type = 133 Then 'Date
            Set fld = tdfNew.CreateField(Rec.Fields(f3).name, dbDate)
        
          Else
            Stop
            tdfNew.Fields.Append tdfNew.CreateField(Rec.Fields(f3).name, dbText)
          End If
          
          
          
          If Rec.Fields(f3).Properties("ISAUTOINCREMENT").value Then
            fld.Attributes = dbAutoIncrField
          End If
          
          tdfNew.Fields.Append fld
        Next



Вот такой пример повсюду. Каждая строка срабатывает без ошибок, но результата никакого. Как впустую.
Чуть переделал пример под себя для синхронизации. Уже интересуюсь SQL запросом, но еще надеюсь может быть есть объяснение по этому коду.
...
Рейтинг: 0 / 0
11.02.2016, 14:30
    #39168611
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
?
Debug.Print Rec.RecordCount
...
Рейтинг: 0 / 0
11.02.2016, 14:37
    #39168618
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
Predeclared,
Rec это другая таблица из MySQL на отдаленном сервере. Проверяю какие там поля и создаю таблицу tdfNew
В tdfNew (б/д ACCESS) никаких изменений.
...
Рейтинг: 0 / 0
11.02.2016, 14:47
    #39168639
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
Ты сделал то, что я просил?
...
Рейтинг: 0 / 0
11.02.2016, 14:47
    #39168640
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
Андрей159
Код: vbnet
1.
2.
Private Sub Form_Load()
  Set BD = DAO.OpenDatabase("D:\Prohect\MySite.mdb")



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        CmdCommand.CommandText = "SELECT * FROM " & List5.List(f)
        Set Rec = CmdCommand.Execute()
        
        Set tdfNew = BD.CreateTableDef(s)
        
        For f3 = 0 To Rec.Fields.Count - 1
          
       ............................................................
       ............................................................
          
          tdfNew.Fields.Append fld
        Next



Вот такой пример повсюду. Каждая строка срабатывает без ошибок, но результата никакого. Как впустую.
Чуть переделал пример под себя для синхронизации. Уже интересуюсь SQL запросом, но еще надеюсь может быть есть объяснение по этому коду.После добавления поля - Refresh
Код: vbnet
1.
2.
  Tabl.Fields.Append Fld
  Tabl.Fields.Refresh
...
Рейтинг: 0 / 0
11.02.2016, 18:06
    #39168881
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
RecordCount Показывает будто все работает, но в Access таблице ничего не происходит после любых рефрешов.

Примеры реально нерабочие. Просто теория для ознакомления. По сути таблица не создается. Поля создаются виртуально, но никуда не сохраняются. Если в конце сделать вот так: BD.TableDefs.Append tdfNew , то объект с раннее созданными виртуальными полями сохранится в таблицу, но таблице нужно через свойства дать имя. А пример который повсюду распространяется - нерабочий. Рабочий код должен выглядеть следующим образом: создается виртуальная переменная типа таблицы, отдельно переменная типа поля. Поля кладем в таблицу через метод. И таким же образом создаем таблицу. Но честно эти заморочки так подзамахивают, что легче сделать чем по проще и побыстрей:
BD.Execute "CREATE TABLE " & s
...
Рейтинг: 0 / 0
11.02.2016, 18:32
    #39168915
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
мда... еще больше разочарование((:
Оказывается в ACCESS в таблице может быть не больше 256 полей .
ошибка №3190 "Определено слишком много полей". Жесть))
...
Рейтинг: 0 / 0
11.02.2016, 18:47
    #39168930
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
Андрей159...Оказывается ...
Внезапно!
:)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA Как добавить программно таблицу и создать в ней поля в б/д Access ? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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