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

目录

  • 背景
  • 遇到的问题及解决步骤
    • 1、找不到工程和库
      • 问题分析
      • 问题解决
    • 2、 实时错误91,对象变量或with块变量未设置
      • 问题分析
      • 问题解决
    • 3、文件dsn配置问题
      • 什么是dsn文件,内容是什么,作用是什么
      • ODBC配置dsn文件
      • 配置文件dsn默认路径
      • ODBC 32位和64位
  • 总结

背景

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

遇到的问题及解决步骤

1、找不到工程和库

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

问题分析

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

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

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

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

问题解决

按照分析结果进行问题解决,“项目”菜单下的“引用”,可以看到“丢失:Microsoft Data Environment Instance 1.0”
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第2张图片
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、注册
搜索命令提示符–>更多–>以管理员身份运行
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第3张图片

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

regsvr32 C:\Windows\SysWOW64\msderun.dll

点击Enter键后弹出如下提示:
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第4张图片
关掉cmd窗口,再次运行项目,问题解决。

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

这个问题非常经典,表示正在引用一个未设置或为空的对象变量。
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第5张图片

问题分析

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

首先要确保在使用对象变量之前对其进行实例化。例如,如果使用了一个类的实例,确保使用 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配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第6张图片

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

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

ODBC配置dsn文件

创建DSN 文件
1、打开ODBC数据源——>选择文件DSN——>单击添加
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第7张图片
2、选择sql sever,单机下一步(选择连接数据库驱动)
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第8张图片
3、创建新的数据源,输入student
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第9张图片
student是直接输入的,输入之后会放到dsn文件默认文件夹之下(这里是个坑,后面会详细讲解)
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第10张图片

4、点击下一步,点击完成
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第11张图片
5、单击完成,连接服务器,可以选择本地,也可以复制自己的服务器名称
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第12张图片

6、单击下一步,选择使用用户输入登录ID和密码的SQL Server验证。配置用户名密码
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第13张图片

7、单击下一步,这里选择你要连接的是哪个数据库
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第14张图片

8、最后直接单击完成,单击测试数据源。
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第15张图片
测试成功

配置文件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配置页面
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第16张图片
这里默认显示文档,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文件的目录修改一下,上图中“设置目录”就是设置默认路径的
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第17张图片
先选好要设置的位置,这里选择的是c盘的文档,然后点击设置目录,点击确定,就会弹出上图所示弹窗,默认路径设置好之后,再次运行程序,所有问题解决了。登录成功。
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第18张图片

ODBC 32位和64位

ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第19张图片
我的电脑中有ODBC 32位和64位,配置的时候也是让我疑惑了半天,该配置哪个
其实,试了一下,在32里创建会同步到64里,在64里创建会同步到32里面。
ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)_第20张图片
在 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文件是什么,再下次知道了为什么如此配置,最后,懂得了原理,再不用看步骤,报错很容易定位,也很快的解决了,这就是成长性学习。

你可能感兴趣的:(----,VB,数据库)