Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ругается на св-ва OLE DB
 
 автор: П.Полиграфович   (27.03.2010 в 16:56)   личное сообщение
 
 

В общем вот такой код сваял, для программного копирования полей:

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")

И + ВОПРОС ещё один немаловажный:
Как сделать, чтобы атрибуты таблицы при таком подходе
оставались в том же порядке, что и в исходной таблицы??

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList