|
|
|
Можно ли изменять БД через АДО, если код расположен в самой БД?
|
|||
|---|---|---|---|
|
#18+
Вот, стащил с форума utteraccess пример по созданию таблицы в базе через АДО. Там таблица создавалась в отдельной, временной БД. Изменил ее так, чтобы таблица создавалась в самой БД. Вроде все работает, но если хоть букву изменить в коде функции, даже если поставить комментарий, и после этого запустить, то выдается ощибка: "База данных была приведена пользователем ".." на компьютере ".." в состояние, препятствующее ее открытию или блокировке. Что я тут сделал не так и где прочитать, как сделать это правильно? MSDN уже обчитался. Дайте пожалуйста, ссылку, что еще почитать. Заранее благодарю :0) Sub AddTable() Dim conn As ADODB.Connection Dim objCat As ADOX.Catalog Dim objTbl As ADOX.Table Dim tbl As ADOX.Table Dim objCol As ADOX.Column Dim DBPath As String Dim strTblName As String Set conn = New ADODB.Connection Set objCat = New ADOX.Catalog Set objTbl = New ADOX.Table 'The location of the TempDB gets assigned to a variable: DBPath = Application.CurrentProject.Path & "\temp.mdb" ' strTblName = "temptable" conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & DBPath objCat.ActiveConnection = conn Set objTbl.ParentCatalog = objCat 'Create a new table in the tempDB' With objTbl For Each tbl In objCat.Tables 'first check if the table already exists: If tbl.Name = strTblName Then 'clean up and exit if the table already exists Set objCat = Nothing Set objTbl = Nothing Set conn = Nothing Exit Sub End If Next .Name = "Table" 'give the table a name 'This next few lines add fields to the table, this is method ONE .Columns.Append "INT", adInteger 'add the FK .Columns.Append "DATE", adDate 'date field .Columns.Append "TXT", adLongVarWChar 'memo .Columns.Append "FullName", adVarWChar, 150 'add the field FullName, NOTE: This value is required! Set objCol = New ADOX.Column 'This next few lines add a text field to the table, this is method TWO With objCol 'Add a field which can hold text .Name = "TestField" .DefinedSize = 50 '50 characters wide .Type = adVarWChar 'Text .Attributes = adColNullable 'This field is not required!! End With objTbl.Columns.Append objCol Set objCol = Nothing 'Set objCol = New ADOX.Column 'This next few lines add a text field to the table, this is method TWO 'With objCol 'Add an autonumberfield ' .Name = "PrimaryKey" ' .Type = adInteger 'End With 'objTbl.Columns.Append objCol Set objCol = Nothing 'After appending the column, set the autonumber property 'With !PrimaryKey ' Set .ParentCatalog = objCat ' .Properties("Autoincrement") = True ' .Properties("seed") = 1 ' .Properties("increment") = 1 'End With objCat.Tables.Append objTbl 'append the table to the tempDB objCat.Tables.Refresh Set objCat = Nothing conn.Close Set conn = Nothing End With End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2003, 10:45 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1809&tid=1681760]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 387ms |

| 0 / 0 |
