Создать базу данных доступа в Visual C ++ - PullRequest
1 голос
/ 23 мая 2019

В настоящее время мне нужно найти метод для создания базы данных Access в Visual C ++ 2008, чтобы:

  1. Я мог создать базу данных Access в различных форматах, включая формат Access 95/97, 2000format и 2007 accdb format.
  2. Я могу создавать не только таблицы, но и другие объекты, включая запросы, отчеты, формы и макросы в базе данных Access.
  3. При добавлении большого объемазаписи в таблицы, метод имеет лучшую производительность.

Я искал в Интернете, и нашел ресурсы, такие как this , который перечисляет некоторые методы, однако, насколько язнаете, DAO кажется устаревшим.

Как насчет других методов?

Спасибо

1 Ответ

1 голос
/ 28 мая 2019

Как я понял, вы хотите создать базу данных, объекты в ней, вызывая некоторые функции и процедуры.На мой взгляд, лучше всего использовать библиотеку DAO.Вот пример VBScript:

Sub CreateDatabaseFile(ByVal strDbPath) 
    Dim wspDefault 'As Workspace
    Dim dbs      ' As Database
    Dim dbEngine ' DAO DB Engine    
    Dim dbLangGeneral
    dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0"
    Set dbEngine = CreateObject("DAO.DBEngine.120")
    Set wspDefault = DBEngine.Workspaces(0)
    Set dbs = wspDefault.CreateDatabase(strDbPath, dbLangGeneral)
    Dim s
    s="CREATE TABLE tblCustomers (CustomerID INTEGER CONSTRAINT PK_tblCustomers PRIMARY KEY, " _
    & " [Last Name] TEXT(50) NOT NULL, [First Name] TEXT(50) NOT NULL, Phone TEXT(10), Email TEXT(50), " _
    & " Address TEXT(40)) "
    dbs.execute s
    dbs.Close

    Dim AccessApp
    Set AccessApp = CreateObject("Access.Application")
    AccessApp.OpenCurrentDatabase strDbPath
    Dim frm 'As Form
    Dim ctlLabel 'As Control
    Dim  ctlText 'As Control
    Dim intDataX 'As Integer, intDataY As Integer
    Dim intDataY
    Dim intLabelX 'As Integer, intLabelY As Integer
    Dim intLabelY

    ' Create new form with tblCustomers table as its record source.
    Set frm = AccessApp.CreateForm
    'frm.Name = "MyForm"
    frm.RecordSource = "tblCustomers"

    ' Set positioning values for new controls.
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100

    ' Create unbound default-size text box in detail section.
    Dim acTextBox
    acTextBox = 109
    Set ctlText = AccessApp.CreateControl(frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ctlText.ControlSource = "Last Name"
    Dim acLabel
    acLabel = 100
    ' Create child label control for text box.
    Set ctlLabel = AccessApp.CreateControl(frm.Name, acLabel, , _
         ctlText.Name, "NewLabel", intLabelX, intLabelY)
    Dim acButton

    AccessApp.DoCmd.Save, frm.Name
    ' Restore form.
    AccessApp.DoCmd.Restore
    AccessApp.DoCmd.Quit
End Sub
Call CreateDatabaseFile("c:\test\a test database file.mdb")
...