Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: MS ACCESS... Очень нужно Добавлено: 19.05.05 20:26  

Автор вопроса:  psinetron | ICQ: 218945948 
У меня такой вопрос:
Я создаю таблицы в msaccess и сразу же записываю в нее данные, выглядит это так:
 Dim dbsNorthwind As Database
   Dim tdfNew As TableDef
   Dim prpLoop As Property
   Set dbsNorthwind = OpenDatabase(App.Path & "\DataBaseName.mdb")
   Set tdfNew = dbsNorthwind.CreateTableDef("TAbName")
   With tdfNew
    .Fields.Append .CreateField("TypeData", dbText)
     For i = 0 To List1.ListCount - 1
      .Fields.Append .CreateField("id" & i, dbText)
    Next i
   dbsNorthwind.Close
   DoEvents
 Set rs = cn.Execute("insert into " & "Tabel" & a + 1 & " ([TypeData]) values ('" & Text1.Text & "')")

 А он пишет :"Run time error:'-2147217865(80040e37)' Неудается найти выходную таблицу 'TAbName'"
Короче, он записывает в таблицу, которая еще не успела создаться (я так понимаю). Как же проверять создалась ли таблица или нет?
Пробовал вставлять sleep - тут работает через раз. Вставлял кучу DoEvents, тоже не помогает, а On

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 19.05.05 21:25
Project>References "Microsoft DAO 3.6 Object Library"

Public Sub CreateDB(ByVal pDatabaseUNC As String, Table As String, Stolbec) '+
'Создаём базу с нуля
    ;Dim ws As Workspace
    ;Dim db As Database

    On Error GoTo Routine_Error

    ' Создать базу данных с указанным именем
    Set ws = DBEngine.Workspaces(0) 'Default Workspace
    Set db = ws.CreateDatabase(pDatabaseUNC, dbLangGeneral)

    ' Добавить новую таблицу во вновь созданную базу
    
    
    Call CreateTable(db, Table, Stolbec)
          

Routine_Error:
    Set db = Nothing
    Set ws = Nothing
    If Err.Number <> 0 Then Err.Raise Err.Number, Err.Source, Err.Description
End Sub

Public Sub CreateTable(ByRef pDB As Database, ByVal pTableName As String, Stolbec) '+
    ;Dim tbl As TableDef
    ;Dim fld As Field

    On Error GoTo Routine_Error

    ' Создаём таблицу с указанным именем в базе
    Set tbl = pDB.CreateTableDef(pTableName)

    With tbl
        ' Добавляем поля
        For i% = LBound(Stolbec) To UBound(Stolbec)
                
        Set fld = .CreateField(Stolbec(i%), dbText, 10)
        .Fields.Append fld
        Next i%
    End With
    
    

    ' Добавляем таблицу к базе данных
    pDB.TableDefs.Append tbl

Routine_Error:
    Set fld = Nothing
    Set tbl = Nothing
    If Err.Number <> 0 Then Err.Raise Err.Number, Err.Source, Err.Description
End Sub
'--------------------------------------------------------------------------------

Вызывать вроде так

Private Sub CreateNewDB_() '+
'создаёт новую базу

Dim Stolbec(2)
Stolbec(0) = "Stolb1"
Stolbec(1) = "Stolb2"
Stolbec(2) = "Stolb3"

Call CreateDB("C:\Base1.mdb", "new", Stolbec())
End Sub

И нормально создаёт вроде... Посмотри код внимательно, мой и свой, может ты что-то пропустил

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам