用户定义数据库位置

时间:2012-05-17 00:30:04

标签: windows-7 vb6

我的应用程序最初是在使用vb6的win XP中创建的,它将程序特定的值存储在注册表中。其中一个值是程序使用的数据库所在的位置。用户可以将它放在任何他们喜欢的地方,并且程序启动它使用从注册表中最后保存的值填充数据库位置屏幕。此表单使用DriveListBox,DirListBox和FileListBox组件。在Win 7上运行此应用程序时,我尝试将目录列表设置为存储在注册表(网络驱动器)中的值时出错。如果存储db的驱动器是本地的,那么这一切都可以正常工作。

代码是:

 On Error GoTo HandleError
  dbLocation = GetSetting(App.Title, "Settings", "DBLocation", dbserver)
  If dbLocation = dbserver Then
    Dir1.Path = GetSetting(App.Title, "Database", "ServerDBPath", "C:\")  <----- fails
  Else
    Dir1.Path = GetSetting(App.Title, "Database", "LocalDBPath", "C:\")
  End If
  Drive1.Drive = Dir1.Path
  Exit Sub
HandleError:
   MsgBox "Error connecting to the network.  Check network connections and try again.", vbOKOnly, "Connection error"
   Drive1.Drive = "C:\"

我怀疑问题在于目录列表框。如果我删除我的错误处理,抛出的错误是“设备不可用”

关于发生了什么的任何想法?我使用的组件对win 7无效吗?对于此应用程序,数据库必须位于网络驱动器上,因此可以从运行该程序的多台PC访问。所有的PC都在Windows 7上运行。

2 个答案:

答案 0 :(得分:1)

VB6附带的驱动器,目录和文件控件无可救药地过时了。自VB3以来,它们没有发生重大变化 - 那是在九十年代中期。这些设计用于Windows 3.1!最好使用Common Dialogues库附带的Open File和Save File对话框。

答案 1 :(得分:0)

至于Windows 7中提供的vb6的dll,请参阅http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx

GetSetting是对注册表的VB6调用。 64位计算机上的Windows 7将32位应用程序的注册表位置移动到类似WOW3264的位置。