该应用程序使用.MDB数据库文件作为存储在networking驱动器上的数据库。
configuration文件使用字母驱动器指定服务器上.MDB文件的path:例如, f:datadb.mdb
应用程序需要在启动时访问这个数据库文件。 如何确保networking驱动器在应用程序启动时连接并可访问?
在Microsoft Media Foundation中获取相机支持的所有FPS值
IMFSinkWriter无法导出mp4的大尺寸video
在Ruby中,如何将string从windows-1252转换为utf-8?
Microsoft Windows Office Suite之间的Java连接?
错误:“在需要”:不能加载这样的文件 – win32ole(LoadError)“,而试图从ruby程序连接到MS访问数据库
有时Windows不重新连接networking驱动器,连接它们的唯一方法是在“我的电脑”中双击它们,即使在映射驱动器时勾选了“login时重新连接”。
解决scheme是使用\machine_nameshare而不是驱动器号?
窗体(frmName)不工作
生成正确的excel xls格式
从MS Access移植
在PHP中使用PHP或ruby操作word文档(doc,docx等)
您问:“解决方案是使用 machine_name share而不是驱动器号?
我想,是的,可以。 UNC路径避免了两个问题:
共享未连接到驱动器号
共享连接,但映射到比您预期的不同的驱动器号
未知的是,在你的应用程序中是否有任何东西使得MDB的UNC路径成为一个复杂的事情,或者是一个平坦的交易断路器。
您应该使用UNC路径,因为不是每个人都将您的驱动器映射到同一个字母。
确定UNC路径
首先,我将使用这里找到的技术之一来确定您的文件的UNC路径,它位于本地计算机上的F:datadb.mdb :
从映射的驱动器创建UNC路径
基本上,您可以查看Windows资源管理器列出网络映射驱动器的方式,然后使用它来推断UNC路径。
使用WMI检查可用性
假定驱动器实际上映射到计划使用该应用程序的每台本地计算机上,请使用Win32_MappedLogicaldisk类来确定映射网络驱动器的可用性。
我在这里有一些示例代码,可以调整以确定给定的网络驱动器是否可用(向下滚动到“ 映射的驱动器信息”部分)。 您检查.ProviderName以匹配UNC路径,以便您知道哪个是正确的驱动器,然后检查.Availability的值以确定是否可以访问映射的网络驱动器。
你绝对应该放弃网络驱动器映射的可能性:
使用这种技术迫使你使用你的数据库在物理上操纵每台计算机,在这里你必须给网络驱动器分配一个字母。
每个电脑用户都可以轻松地改变它
从网络上断开连接可能会强制用户“手动”重新连接到磁盘驱动器
虽然你在一个域名上,但我不建议你使用一个名字,因为出于多种原因,电脑可能并不总是在网络上很容易找到,特别是当它的IP被定期更改时。
您一定应该找到一种方法来为您的磁盘分配一个固定的IP:这是您可以考虑的最稳定和最持久的解决方案。 请求您的域名管理员为您安排。
测试网络磁盘的存在可以很容易地完成。 有多种解决方案,包括试图直接打开mdb文件。 你也可以测试文件的存在(通过我认为的文件对象),甚至可以使用任何外部程序或Windows API,你可以从你的代码启动。 请谷歌'VB测试IP'或类似的东西,找到一个解决方案,在您方便的。
编辑:Windows甚至有一个建议,模拟与一些VB代码的ping。 在这里检查
编辑2:我在我的一个应用程序中发现这个VBA代码,它允许快速检查一个文件是否存在(并可以访问)在您的网络上的某个地方。 它基本上设置为测试新版本的用户界面是否可用。
Function fileIsAvailable(x_nom As Variant) As Boolean On Error GoTo ERREUR Application.Screen.MousePointer = 11 Dim fso as object Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FileExists(x_nom) Then fileIsAvailable = False Else fileIsAvailable = True End If Set fso = nothing Application.Screen.MousePointer = 0 On Error GoTo 0 Exit Function ERREUR: Application.Screen.MousePointer = 0 debug.print Err.Number,Err.description End Function
if fileIsAvailable("\192.168.1.110myFileName.mdb") then ...
你没有清楚你的应用程序是怎么写的,但是在第一次尝试连接数据库之前,大概是在启动画面或者其他类似的东西中,检查是否存在f: data db.mdb。
确保该脚本在应用程序启动之前运行:
net use f: \machine_nameshare /user:[username] [password] /persistent:yes
这将在您指定的字母上映射共享驱动器!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。