Sub 备份数据()Dim Cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim myData As String '数据库名称变量
Dim myTable As String '新数据表名称变量
Dim myOldTable As String '现存的数据表名称变量
Dim SQL As String
'设置数据库名称(包括完整路径)
myData = App.Path & "\数据库.mdb"
myTable = "数据表" '要创建的数据表名称
myOldTable = "备用数据表" '现存的数据表名称
'建立与数据库的连接
With Cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open myData
End With
'删除原有的数据表
SQL = "drop table " & myTable
Set rs = Cnn.Execute(SQL)
'创建新的数据表
SQL = "Select * into " & myTable & " From " & myOldTable
Set rs = Cnn.Execute(SQL)
MsgBox "数据表备份成功!", vbInformation, "备份数据表!"
Cnn.Close
Set rs = Nothing
Set Cnn = Nothing
End Sub  我根据"数据库.mdb"中的"备用数据表"来备份"数据表".在执行上面过程后备份成功的"数据表"中的数据结构却变动了... ...
备份前:(备用数据表)
  职工编号:文本型,长度5,不允许为空,主键.
  职员姓名:文本型,长度6,不允许为空.
备份后:(数据表)
  职工编号:文本型,长度5,允许为空,主键无
  职员姓名:文本型,长度6,允许为空.
SQL语句怎么写?????
才能约束使备份前后的数据结构不变动呢,麻烦老师朋友们帮我看看,谢谢!
抱歉!!!!!!!!!!没有更多的分了.

解决方案 »

  1.   

    select * into 语句只复制数据....这样备份当然不行
    建议用引用jro对象,备份修复压缩全有了:Public Function RepairMdb(Sou As String, Des As String) As Long
    On Error GoTo Err_RepairMdb
        'Sou: 源mdb文件路径和名称;Des: 目标mdb文件路径和名称
        Dim miJRO As JRO.JetEngine
        Set miJRO = New JRO.JetEngine
        miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
            & "Data Source=" & Sou & ";" _
            & "Jet OLEDB:Database Password=zxcvbnm", _
        "Provider=Microsoft.Jet.OLEDB.4.0; " _
            & "Data Source=" & Des & ";" _
            & "Jet OLEDB:Database Password=zxcvbnm"
        RepairMdb = 1
    Exit_RepairMdb:
        Set miJRO = Nothing
        Exit Function
    Err_RepairMdb:
        Msg = Err.Description
        RepairMdb = -1
        Resume Exit_RepairMdb
    End Function
      

  2.   

    以上代码在工程中引用Microsoft Jet Repairction Object 2.6
      

  3.   

    以上代码在工程中引用Microsoft Jet And Replication Object 2.6