powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
8 сообщений из 8, страница 1 из 1
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
    #39168599
Фотография Андрей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.
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
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
    #39168611
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?
Debug.Print Rec.RecordCount
...
Рейтинг: 0 / 0
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
    #39168618
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,
Rec это другая таблица из MySQL на отдаленном сервере. Проверяю какие там поля и создаю таблицу tdfNew
В tdfNew (б/д ACCESS) никаких изменений.
...
Рейтинг: 0 / 0
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
    #39168639
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты сделал то, что я просил?
...
Рейтинг: 0 / 0
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
    #39168640
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей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
VBA Как добавить программно таблицу и создать в ней поля в б/д Access ?
    #39168881
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RecordCount Показывает будто все работает, но в Access таблице ничего не происходит после любых рефрешов.

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


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