'遍历源表中的字段
For j = 0 To MyTableS.Fields.Count - 1 'Db_Acs.Fields.Count - 1
'选择源表字段的类型,并按字段类型在目标表中建立相同字段与类型
Select Case MyTableS.Fields(j).Type 'Db_Acs.Fields(j).Type
Case adBigInt ' 20
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adBinary ' 128
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbByte)
Case adBoolean ' 11
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbBoolean)
Case adChar ' 129
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adDate ' 7
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDBDate ' 133
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDBTime ' 134
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDBTimeStamp ' 135
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDecimal ' 14
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adDouble ' 5
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDouble)
Case adInteger ' 3
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adLongVarBinary ' 205
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbLong)
Case adLongVarChar ' 201
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbMemo)
Case adLongVarWChar ' 203
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adNumeric ' 131
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adSingle ' 4
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbSingle)
Case adSmallInt ' 2
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adTinyInt ' 16
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adUnsignedBigInt ' 21
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adUnsignedInt ' 19
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adUnsignedSmallInt ' 18
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adVarBinary ' 204
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbByte)
Case adUnsignedTinyInt ' 17
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adVarChar ' 200
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adVarWChar ' 202
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adWChar ' 130
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
End Select
'在目标表中建立新字段
On Error Resume Next
MyTableD.Fields.Append MyFieldD
Next j
'在目标库中建立新表
On Error Resume Next
MyDatabaseD.TableDefs.Append MyTableD
F备份恢复.Label2.Caption = F备份恢复.Combo1.List(i) & "数据表建立成功!"
'关闭源库
' MyDatabaseS.Close 'Db_Acs.Close
Next i
'关闭源库
MyDatabaseS.Close
'关闭目标库
MyDatabaseD.Close
For i = 0 To F备份恢复.Combo1.ListCount - 1
Debug.Print F备份恢复.Combo1.List(i)
Next
For i = 0 To F备份恢复.Combo1.ListCount - 1
F备份恢复.PB1.Value = i + 1
F备份恢复.Label2.Caption = "正在导出" & F备份恢复.Combo1.List(i) & "的数据"
If F备份恢复.Combo1.List(i) = "MSysACEs" Or F备份恢复.Combo1.List(i) = "MSysObjects" Or F备份恢复.Combo1.List(i) = "MSysModules" Or F备份恢复.Combo1.List(i) = "MSysQueries" Or F备份恢复.Combo1.List(i) = "MSysRelationships" Then
GoTo 2000:
End If
Db_Acs.Open F备份恢复.Combo1.List(i), MDIFZJ.con
Db_mdb.Open F备份恢复.Combo1.List(i), "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source= " & dbname, adOpenStatic, adLockOptimistic
If Not Db_Acs.BOF Then Db_Acs.MoveFirst
j = 0
On Error Resume Next
Do While Not Db_Acs.EOF
j = j + 1
Db_mdb.AddNew
For k = 0 To Db_Acs.Fields.Count - 1
If Db_Acs.Fields(k) = "" Then
Db_mdb.Fields(k) = " "
Else
Db_mdb.Fields(k) = Db_Acs.Fields(k)
End If
Next k
Db_mdb.Update
Db_Acs.MoveNext
If mynum > 0 Then If j > mynum - 1 Then Exit Do
Loop
Db_mdb.Close
Db_Acs.Close
2000:
Next i
shujusanxia = True
Exit Function
End Function
我用以上程序将一个ACCESS的库文件导出另一个同结构的文件
用ACCESS打开时,数据库提示"
'Index1'不是该表中的索引,请查看TableDef对象的索引集合
来决定有效的索引名"
请问高手这是怎么回事,如果是程序错了请帮忙修改.
For j = 0 To MyTableS.Fields.Count - 1 'Db_Acs.Fields.Count - 1
'选择源表字段的类型,并按字段类型在目标表中建立相同字段与类型
Select Case MyTableS.Fields(j).Type 'Db_Acs.Fields(j).Type
Case adBigInt ' 20
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adBinary ' 128
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbByte)
Case adBoolean ' 11
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbBoolean)
Case adChar ' 129
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adDate ' 7
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDBDate ' 133
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDBTime ' 134
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDBTimeStamp ' 135
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDate)
Case adDecimal ' 14
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adDouble ' 5
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbDouble)
Case adInteger ' 3
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adLongVarBinary ' 205
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbLong)
Case adLongVarChar ' 201
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbMemo)
Case adLongVarWChar ' 203
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adNumeric ' 131
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adSingle ' 4
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbSingle)
Case adSmallInt ' 2
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adTinyInt ' 16
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adUnsignedBigInt ' 21
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adUnsignedInt ' 19
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adUnsignedSmallInt ' 18
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adVarBinary ' 204
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbByte)
Case adUnsignedTinyInt ' 17
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbInteger)
Case adVarChar ' 200
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adVarWChar ' 202
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
Case adWChar ' 130
Set MyFieldD = MyTableD.CreateField(MyTableS.Fields(j).Name, dbText, MyTableS.Fields(j).FieldSize)
End Select
'在目标表中建立新字段
On Error Resume Next
MyTableD.Fields.Append MyFieldD
Next j
'在目标库中建立新表
On Error Resume Next
MyDatabaseD.TableDefs.Append MyTableD
F备份恢复.Label2.Caption = F备份恢复.Combo1.List(i) & "数据表建立成功!"
'关闭源库
' MyDatabaseS.Close 'Db_Acs.Close
Next i
'关闭源库
MyDatabaseS.Close
'关闭目标库
MyDatabaseD.Close
For i = 0 To F备份恢复.Combo1.ListCount - 1
Debug.Print F备份恢复.Combo1.List(i)
Next
For i = 0 To F备份恢复.Combo1.ListCount - 1
F备份恢复.PB1.Value = i + 1
F备份恢复.Label2.Caption = "正在导出" & F备份恢复.Combo1.List(i) & "的数据"
If F备份恢复.Combo1.List(i) = "MSysACEs" Or F备份恢复.Combo1.List(i) = "MSysObjects" Or F备份恢复.Combo1.List(i) = "MSysModules" Or F备份恢复.Combo1.List(i) = "MSysQueries" Or F备份恢复.Combo1.List(i) = "MSysRelationships" Then
GoTo 2000:
End If
Db_Acs.Open F备份恢复.Combo1.List(i), MDIFZJ.con
Db_mdb.Open F备份恢复.Combo1.List(i), "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source= " & dbname, adOpenStatic, adLockOptimistic
If Not Db_Acs.BOF Then Db_Acs.MoveFirst
j = 0
On Error Resume Next
Do While Not Db_Acs.EOF
j = j + 1
Db_mdb.AddNew
For k = 0 To Db_Acs.Fields.Count - 1
If Db_Acs.Fields(k) = "" Then
Db_mdb.Fields(k) = " "
Else
Db_mdb.Fields(k) = Db_Acs.Fields(k)
End If
Next k
Db_mdb.Update
Db_Acs.MoveNext
If mynum > 0 Then If j > mynum - 1 Then Exit Do
Loop
Db_mdb.Close
Db_Acs.Close
2000:
Next i
shujusanxia = True
Exit Function
End Function
我用以上程序将一个ACCESS的库文件导出另一个同结构的文件
用ACCESS打开时,数据库提示"
'Index1'不是该表中的索引,请查看TableDef对象的索引集合
来决定有效的索引名"
请问高手这是怎么回事,如果是程序错了请帮忙修改.
Db_Acs.Open F备份恢复.Combo1.List(i), MDIFZJ.con
中的MDIFZJ.con是什么东东
先在数据库中,把指针指向要修改的记录,然后
XXX.edit
XXX.field("YYY")=XYXY
XXX.updata