库发过来,我看看。
[email protected]
[email protected]
解决方案 »
- 如何实现用VBA调去SQL SERVER数据放入Excel-100分
- 如果在DLL中处理程序运行时的错误
- 我写个播放器,发到右键菜单,当用右键菜单打开一个视频文件时,怎么得到该视频路径+文件名?
- 如何用vb实现模拟鼠标中键滚动
- 怎样通过ADODC实现模糊查询~~~谢了!
- 我的MSHFlexGrid中魔了吗?
- 怪现象:VB操作Excel后,再也打不开Excel了
- 如何通过代码实现 对access表的名称的改变
- 一些简单的问题.
- 从MDI子窗口弹出一个非MDI窗体,不用模式的,让后者始终处于前者前面,但不是所有窗口前面?
- 如何在窗体加载时检测注册表的信息并反馈回来?
- 哪里有可以作不规则表格的控件!不想用Excel!
并且试一试是否可以用VB+ODBC(MS Access Database)打开,
如果VB做个程序打开没有问题应该就是你的Access的问题,
而不是库本身的损坏。
'------------------------------------------------------------
'------------------------------------------------------------
Sub OpenLocalDB(bSilent As Boolean)
On Error GoTo OpenError Dim sConnect As String
Dim sDatabaseName As String
Dim dbTemp As Database
Dim sTmp As String sDatabaseName = gsDBName
If Not bSilent Then
Select Case gsDataType
Case gsMSACCESS
frmMDI.dlgCMD1.Filter = MSG49 & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG36
Case gsDBASEIII, gsDBASEIV, gsDBASE5
frmMDI.dlgCMD1.Filter = "Dbase DBs (*.dbf)|*.dbf" & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG37
Case gsFOXPRO20, gsFOXPRO25, gsFOXPRO26, gsFOXPRO30
frmMDI.dlgCMD1.Filter = "FoxPro DBs (*.dbf)|*.dbf" & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG38
Case gsPARADOX3X, gsPARADOX4X, gsPARADOX5X
frmMDI.dlgCMD1.Filter = "Paradox DBs (*.db)|*.db" & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG39
Case gsEXCEL50
frmMDI.dlgCMD1.Filter = "Excel Files (*.xls)|*.xls" & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG40
Case gsBTRIEVE
frmMDI.dlgCMD1.Filter = "Btrieve DBs (FILE.DDF)|FILE.DDF" & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG41
Case gsTEXTFILES
frmMDI.dlgCMD1.Filter = "Text Files (*.txt)|*.txt" & MSG50
frmMDI.dlgCMD1.DialogTitle = MSG42
End Select frmMDI.dlgCMD1.FilterIndex = 1
frmMDI.dlgCMD1.FileName = gsDBName '""
frmMDI.dlgCMD1.CancelError = True
frmMDI.dlgCMD1.Flags = FileOpenConstants.cdlOFNFileMustExist
frmMDI.dlgCMD1.ShowOpen If Len(frmMDI.dlgCMD1.FileName) > 0 Then
gsDBName = frmMDI.dlgCMD1.FileName
Else
Exit Sub
End If
Else
gsDBName = sDatabaseName
End If
If Len(gsDBName) = 0 Then
MsgBar vbNullString, False
Exit Sub
End If MsgBar MSG43, True
Screen.MousePointer = vbHourglass 'set the connect string
If gsDataType = gsMSACCESS Then
sConnect = vbNullString
Else
sConnect = gsDataType
End If
'set the database name for non Microsoft Access and Btrieve dbs that
'came from the Common Dialog
If gsDataType <> gsMSACCESS And gsDataType <> gsBTRIEVE And _
gsDataType <> gsEXCEL50 And (Not bSilent) Then
'need to strip off filename for these dbs
sDatabaseName = StripFileName(gsDBName)
gsDBName = sDatabaseName
Else
sDatabaseName = gsDBName
End If gsODBCDatasource = vbNullString 'reset it GoTo OneMoreTry
GetPWD:
Dim frmPWD As New frmDBPWD
frmPWD.Show vbModal
If Len(frmPWD.PWD) > 0 Then
sConnect = ";pwd=" & frmPWD.PWD
Unload frmPWD
Set frmPWD = Nothing
MsgBar MSG43, True
Screen.MousePointer = vbHourglass
Else
'they cancelled the pwd dialog so we need to exit
Unload frmPWD
Set frmPWD = Nothing
Exit Sub
End IfOneMoreTry:
If (frmMDI.dlgCMD1.Flags And FileOpenConstants.cdlOFNReadOnly) = FileOpenConstants.cdlOFNReadOnly Then
gnReadOnly = True
Else
gnReadOnly = False
End If
Set dbTemp = gwsMainWS.OpenDatabase(sDatabaseName, False, gnReadOnly, sConnect)
If gbDBOpenFlag Then
'save the db name
sTmp = gsDBName
'restore it
CloseCurrentDB
gsDBName = sTmp
If gbDBOpenFlag Then
Beep
MsgBox MSG35, 48
Exit Sub
End If
End If 'success
frmMDI.Caption = "VisData:" & sDatabaseName
Set gdbCurrentDB = dbTemp
gbDBOpenFlag = True
ShowDBTools
RefreshTables Nothing
gdbCurrentDB.QueryTimeout = glQueryTimeout AddMRU
If gsDataType <> gsMSACCESS Then
MsgBar MSG44, False
End If
Screen.MousePointer = vbDefault Exit SubAttemptRepair:
Screen.MousePointer = vbHourglass
MsgBar MSG45 & gsDBName, True
DBEngine.RepairDatabase gsDBName
Screen.MousePointer = vbDefault
GoTo OneMoreTryOpenError:
Screen.MousePointer = vbDefault
If Err = 3049 Then
If MsgBox(Err.Description & vbCrLf & vbCrLf & MSG46, 4 + 48) = vbYes Then
Resume AttemptRepair
End If
ElseIf Err = 3031 Then
'password protected database
Resume GetPWD
End If
gbDBOpenFlag = False
gsDBName = vbNullString
gsDataType = vbNullString
gsODBCDatabase = vbNullString
gsODBCUserName = vbNullString
gsODBCPassword = vbNullString
gsODBCDriver = vbNullString
gsODBCServer = vbNullString
If Err <> 32755 And Err <> 3049 Then 'check for common dialog cancelled
ShowError
End If
End Sub'使用DAO是可以打开FoxPro的对于本地数据库好像比ADO要简单
可我这两天并没有破坏ACCESS2000这个程序啊?怎会无
然后在看看是不是ACCESS坏了。