ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)

简介: ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)

背景

再次回看学生信息管理系统,发现程序运行不了。

遇到的问题及解决步骤

1、找不到工程和库

问题分析

“找不到工程和库”,这种通常意味以下问题:

缺少引用的库文件

可以通过“项目”菜单下的“引用”选项来添加对外部库文件的引用。如果某个库文件被添加到了工程中,但是该文件已被删除、移动或者更改了名称,那么在编译工程时就会出现“找不到工程和库”的错误。此时,需要检查工程的引用列表,并确保所有引用的库文件都存在于其指定的位置。

操作系统缺少必要的支持文件。

VB6.0 工程的编译和运行需要依赖一些操作系统提供的支持文件,比如 DLL 文件、ActiveX 控件、运行库等。如果操作系统缺少了这些文件,或者某些文件版本不兼容,那么也会导致“找不到工程和库”的错误。需要安装或更新相应的支持文件。

工程文件已被损坏。

如果工程文件本身已经损坏或者出现了错误,那么也可能会导致 VB6.0 在打开或编译工程时出现“找不到工程和库”的错误。此时,可以尝试从备份文件中恢复工程,或者重新创建一个新的工程文件。

问题解决

按照分析结果进行问题解决,“项目”菜单下的“引用”,可以看到“丢失:Microsoft Data Environment Instance 1.0”

Microsoft Data Environment(简称“DataEnv”)是一种 Visual Basic 6.0 中非常方便的数据访问方式。它允许你在 Visual Basic 6.0 中通过可视化设计界面来创建和管理数据连接、命令和记录集等,而不需要编写大量的代码。

出现“丢失:Microsoft Data Environment Instance 1.0”的错误,可能是因为程序无法正确加载或初始化 DataEnv 实例。可能得原因是

DataEnv 功能没有正确安装后注册:可以尝试重新安装 DataEnv 组件,或者通过检查注册表来确保这些组件已经正确注册。

DataEnv 实例没有正确初始化:在创建 DataEnv 实例之前,需要先设置一些必要的属性和连接信息,例如数据库连接字符串、SQL 查询语句等。如果这些信息没有正确设置,那么程序就会无法正确初始化 DataEnv 实例,从而导致这个错误。

检查之后发现缺失了MSDERUN.DLL文件

1、首先下载文件

我是X64系统,下载地址:

地址: https://cn.dll-files.com/msderun.dll.html

2、放到默认路径下

将DLL放入系统盘:\Program Files\Common Files\Designer下。

X64系统,还需要将DLL放入 系统盘:\Windows\SysWOW64 (X86的话,一般是放入系统盘:\Windows\System32)

3、注册

搜索命令提示符–>更多–>以管理员身份运行

在管理员命令符窗口输入:regsvr32 +msderun.dll注册的位置

例如

regsvr32 C:\Windows\SysWOW64\msderun.dll

点击Enter键后弹出如下提示:

关掉cmd窗口,再次运行项目,问题解决。

2、 实时错误91,对象变量或with块变量未设置

这个问题非常经典,表示正在引用一个未设置或为空的对象变量。

问题分析

直译,正在使用一个对象变量之前没有进行实例化。

首先要确保在使用对象变量之前对其进行实例化。例如,如果使用了一个类的实例,确保使用 Set 关键字为该对象变量赋值,如:Set obj = New MyClass。

对象变量可能已经被释放或设置为 Nothing。

在某些情况下,会手动将对象变量设置为 Nothing 或者对象已经被释放。在使用对象之前,确保对象变量的有效性。可以通过检查对象变量是否为 Nothing 来验证对象是否已正确设置。

对象变量的作用域存在问题。

如果对象变量的作用域不正确,例如在子程序内定义的对象变量在其他地方引用,可能会导致该错误。确保对象变量在需要引用它的范围内正确声明和初始化。

问题解决

定位到错误位置

无效的文件 dsn,dsn文件错误,要不然是配置错误,要不然是文件本身有错误,先来看看引用dsn的地方

模块中写了这部分代码

Public Function ConnectString() As String
'returns a DB ConnectString
   ConnectString = "FileDSN=student.dsn;UID=sa;PWD=123456"
End Function

写的貌似没问题,那就看看配置dsn文件有没有问题吧,这就引出了下一个问题,dsn文件是什么,怎么来的,有什么用

3、文件dsn配置问题

什么是dsn文件,内容是什么,作用是什么

DSN (Data Source Name) 文件是一种文件格式,通常用于存储数据库连接信息的配置文件。DSN 文件包含了访问数据库所需的驱动程序和连接信息,可以用于简化应用程序对数据库的连接过程。

下面就是dsn文件的内容,指明了访问数据库所需的驱动,用户名,数据库,服务器等

可以通过 ODBC (Open Database Connectivity) 来创建 DSN 文件。ODBC 是一种标准的数据库接口,它允许应用程序使用 SQL 语言来访问不同类型的数据库。通过 ODBC 驱动程序,应用程序可以与数据库建立连接,执行查询、更新、删除等操作。

创建 DSN 文件的主要作用是简化数据库连接的过程。在应用程序中,通过指定 DSN 文件路径和名称,即可访问相应的数据库。同时,DSN 文件也可以提高数据库连接的灵活性,如果需要更换数据库或者修改连接信息,只需要修改 DSN 文件即可,而不需要修改应用程序代码。

ODBC配置dsn文件

创建DSN 文件

1、打开ODBC数据源——>选择文件DSN——>单击添加

2、选择sql sever,单机下一步(选择连接数据库驱动)

3、创建新的数据源,输入student

student是直接输入的,输入之后会放到dsn文件默认文件夹之下(这里是个坑,后面会详细讲解)

4、点击下一步,点击完成

5、单击完成,连接服务器,可以选择本地,也可以复制自己的服务器名称

6、单击下一步,选择使用用户输入登录ID和密码的SQL Server验证。配置用户名密码

7、单击下一步,这里选择你要连接的是哪个数据库

8、最后直接单击完成,单击测试数据源。

测试成功

配置文件dsn默认路径

错误依然存在,问题出在dsn文件所放的位置,以及在模块中指定的位置,是否还记得上面那段连接数据库的代码

Public Function ConnectString() As String
'returns a DB ConnectString
   ConnectString = "FileDSN=student.dsn;UID=sa;PWD=123456"
End Function

这里FileDSN=student.dsn,直接指定了文件,那么程序怎么就能找到这个文件的,总得有指定路径的地方

回看odbc配置页面

这里默认显示文档,dsn文件必须放到文档目录下,否则代码中不能直接写FileDSN=student.dsn,而是要加上绝对路径,比如,不放到文档下面,而是放到E:\training program目录下,那这里就要写成

Public Function ConnectString() As String
'returns a DB ConnectString
   ConnectString = "FileDSN=E:\training program\student.dsn;UID=sa;PWD=123456"
End Function

程序才能找到dsn文件

或者把dsn文件的目录修改一下,上图中“设置目录”就是设置默认路径的

先选好要设置的位置,这里选择的是c盘的文档,然后点击设置目录,点击确定,就会弹出上图所示弹窗,默认路径设置好之后,再次运行程序,所有问题解决了。登录成功。

ODBC 32位和64位

我的电脑中有ODBC 32位和64位,配置的时候也是让我疑惑了半天,该配置哪个

其实,试了一下,在32里创建会同步到64里,在64里创建会同步到32里面。

在 Windows 操作系统中,32位和64位的应用程序使用的是不同的 ODBC 驱动程序。因此,在32位的 ODBC 管理器中创建的数据源只能在32位的应用程序中使用,在64位的 ODBC 管理器中创建的数据源只能在64位的应用程序中使用。

在其中一个 ODBC 管理器中创建一个数据源时,该数据源会自动在另一个 ODBC 管理器中创建一个相同的数据源。这是因为 Windows 会根据我的操作自动将数据源信息写入注册表中,不论是在32位还是64位的 ODBC 管理器中对其进行修改。

但是需要注意的是,不是所有的 ODBC 驱动程序都同时支持32位和64位的系统。有些驱动程序只支持一种架构,这时候就需要在相应的 ODBC 管理器中创建数据源了。

总之,系统会自动在32位和64位的 ODBC 管理器中同步创建数据源,但具体使用哪个数据源还取决于应用程序所在的运行环境。

总结

学习是个反复的过程,记是永远记不住的,忘是很正常的,但一定是成长性的学习,知识忘记了,或者操作忘记了,捡起来,再次学习的时间会越来越短,每次也都会有新的理解和收获,就像第一次学odbc,只是按照别人的步骤操作,鼓捣一天,配置成功了,却不知道为什么,后来再配置知道了dsn文件是什么,再下次知道了为什么如此配置,最后,懂得了原理,再不用看步骤,报错很容易定位,也很快的解决了,这就是成长性学习。

相关文章
|
算法 数据安全/隐私保护
对称密钥加密算法和公开密钥加密算法有什么区别
【4月更文挑战第19天】对称密钥和公开密钥加密算法各有特点:对称密钥加密速度快,适用于大量数据,但密钥管理困难;公开密钥加密安全性高,密钥管理方便,但速度慢,常用于数字签名和身份验证。两者在不同场景下有不同优势。
1166 6
|
存储 分布式计算 算法
分布式存储单主、多主和无中心架构的特征与趋势
分布式存储单主、多主和无中心架构的特征与趋势
分布式存储单主、多主和无中心架构的特征与趋势
|
SQL 数据库
传递给数据库 'model' 中的日志扫描操作的日志扫描号无效
原文:传递给数据库 'model' 中的日志扫描操作的日志扫描号无效 状况描述:在服务器的管理中重新启动MSSQLSERVER启动后马上又停止   通过"事件查看器" 发现 错误: 9003,严重度: 20,状态: 1 LSN(5:324:1)无效。
3852 0
|
弹性计算 关系型数据库 数据库
快速体验Cloudberry和APCC
通过Docker快速体验Cloudberry和APCC
751 6
|
云安全 人工智能 安全
阿里云网络安全体系解析:如何构建数字时代的"安全盾牌"
在数字经济时代,阿里云作为亚太地区最大的云服务提供商,构建了行业领先的网络安全体系。本文解析其网络安全架构的三大核心维度:基础架构安全、核心技术防护和安全管理体系。通过技术创新与体系化防御,阿里云为企业数字化转型提供坚实的安全屏障,确保数据安全与业务连续性。案例显示,某金融客户借助阿里云成功拦截3200万次攻击,降低运维成本40%,响应时间缩短至8分钟。未来,阿里云将继续推进自适应安全架构,助力企业提升核心竞争力。
|
JavaScript
基于Vue2.X/Vue3.X对Monaco Editor在线代码编辑器进行封装与使用
这篇文章介绍了如何在Vue 2.X和Vue 3.X项目中封装和使用Monaco Editor在线代码编辑器,包括安装所需依赖、创建封装组件、在父组件中调用以及处理Vue 3中可能遇到的问题。
3895 1
基于Vue2.X/Vue3.X对Monaco Editor在线代码编辑器进行封装与使用
|
安全 Linux Windows
小试跨平台局域网文件传输工具NitroShare,几点感想
小试跨平台局域网文件传输工具NitroShare,几点感想
|
存储 Ubuntu Linux
Windows与Linux的和谐共处时代!🏠
梦想在一台电脑上同时拥有Windows的便捷与Linux的强大开源功能吗?通过虚拟机技术,这已成为现实!虚拟机让你在同一硬件上构建多个独立系统环境,仿佛拥有多台电脑。无需重启,即可无缝切换操作系统,无论是开发、测试还是学习,都能轻松应对。本指南将带领你从下载VMware Workstation开始,一步步创建属于自己的Linux虚拟机,开启多系统并行的新篇章。🚀🏠🌈
347 0
电力系统潮流计算及不对称短路分析【程序+报告】
电力系统潮流计算及不对称短路分析【程序+报告】