|
|
|
| В общем вот такой код сваял, для программного копирования полей:
Public Sub CopyTable()
Dim Cat As ADOX.Catalog
Dim TblInit As ADOX.Table
Dim TblRepl As ADOX.Table
Dim Col As ADOX.Column
Dim ColRepl As ADOX.Column
Dim CPC As ADODB.Connection
Dim cntr As Integer
Dim prp As ADOX.Property
Set CPC = CurrentProject.Connection
Set Cat = New ADOX.Catalog
Set Cat.ActiveConnection = CPC
Set TblInit = Cat.Tables("calls")
Set TblRepl = New ADOX.Table
TblRepl.Name = "CallsReplica"
TblRepl.ParentCatalog = Cat
For Each Col In TblInit.Columns
Set ColRepl = New ADOX.Column
With ColRepl
.ParentCatalog = Cat
.Name = Col.Name
.Type = Col.Type
.DefinedSize = Col.DefinedSize
.Properties("Autoincrement") = Col.Properties("Autoincrement")
.Properties("Default") = Col.Properties("Default")
.Properties("Nullable") = Col.Properties("Nullable")
.Properties("Fixed Length") = Col.Properties("Fixed Length")
.Properties("Seed") = Col.Properties("Seed")
.Properties("Increment") = Col.Properties("Increment")
.Properties("Jet OLEDB:Column Validation Text") = Col.Properties("Jet OLEDB:Column Validation Text")
.Properties("Jet OLEDB:Column Validation Rule") = Col.Properties("Jet OLEDB:Column Validation Rule")
.Properties("Jet OLEDB:IISAM Not Last Column") = Col.Properties("Jet OLEDB:IISAM Not Last Column")
.Properties("Jet OLEDB:AutoGenerate") = Col.Properties("Jet OLEDB:AutoGenerate")
.Properties("Jet OLEDB:One BLOB per Page") = Col.Properties("Jet OLEDB:One BLOB per Page")
.Properties("Jet OLEDB:Compressed UNICODE Strings") = Col.Properties("Jet OLEDB:Compressed UNICODE Strings")
.Properties("Jet OLEDB:Allow Zero Length") = Col.Properties("Jet OLEDB:Allow Zero Length")
.Properties("Jet OLEDB:Hyperlink") = Col.Properties("Jet OLEDB:Hyperlink")
If Col.Properties("Autoincrement") = True Then
Set Indx = New ADOX.Index
Indx.Name = "PrimaryKey"
Indx.PrimaryKey = True
Indx.Unique = True
Indx.Columns.Append .Name
TblRepl.Indexes.Append Indx
End If
End With
End With
TblRepl.Columns.Append ColRepl
Next Col
Cat.Tables.Append TblRepl
|
Вижу Run-time Error -2147217887: Произошли ошибки во время выполнения многошаговой
операции OLE DB. По возможности проверьте значения всех состояний OLE DB.
Работа не выполнена |
Можно было бы конечно через SELECT INTO, но не интересно.
Вот сейчас проверил, что ошибка появляется только когда убираю коммент с этих строк
.Properties("Nullable") = Col.Properties("Nullable")
.Properties("Seed") = Col.Properties("Seed")
.Properties("Increment") = Col.Properties("Increment")
|
И + ВОПРОС ещё один немаловажный:
Как сделать, чтобы атрибуты таблицы при таком подходе
оставались в том же порядке, что и в исходной таблицы?? | |
|
|