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

news2024/9/28 15:30:08

目录

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

背景

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

遇到的问题及解决步骤

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文件是什么,再下次知道了为什么如此配置,最后,懂得了原理,再不用看步骤,报错很容易定位,也很快的解决了,这就是成长性学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1235745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

股票统计信息(七)

7-统计信息 文章目录 7-统计信息一. 股票周级别统计信息二. 查询可支持的所有的股票资金类型三. 股票图形统计信息四. 查询当前用户自选表里面最近十天的交易信息五. 查看天/星期范围统计的历史记录六. 查看最近多少天某个属性的涨跌幅度值 一. 股票周级别统计信息 接口描述: …

【Spring】使用xml配置AOP

文章目录 1.前言2.xml配置AOP3. 总结 1.前言 在之前的学习中,都是使用注解的方式进行AOP的配置.其实使用xml配置文件也可以配置AOP. 2.xml配置AOP xml配置AOP方法如下: 添加相关依赖 <dependencies><dependency><groupId>org.springframework</groupId…

数学建模之插值法及代码

发现更多知识&#xff0c;欢迎访问Cr不是铬的个人网站 引言 数模比赛中&#xff0c;常常需要根据已知的函数点进行数据、模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模…

www.testfire.nets渗透测试报告

www.testfire.nets渗透测试报告 一、测试综述 1.1.测试⽬的 通过实施针对性的渗透测试&#xff0c;发现testfire.net⽹站的安全漏洞&#xff0c;锻炼自己的渗透水平 1.2.测试范围 域名&#xff1a;www.testfire.net IP:65.61.137.117 测试时间&#xff1a; 2023年11月…

Go 语言中 For 循环:语法、使用方法和实例教程

for循环用于多次执行特定的代码块&#xff0c;每次都可以使用不同的值。每次循环执行都称为一次迭代。for循环可以包含最多三个语句&#xff1a; 语法 for 语句1; 语句2; 语句3 {// 每次迭代要执行的代码 }语句1&#xff1a;初始化循环计数器的值。语句2&#xff1a;对每次循环…

第十九章Java绘图

9.1.1——Graphics类 Graphics类是所有图形上下文的抽象基类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制&#xff0c;Graphics类封装了Java支持的基本绘图操作所需要的状态信息&#xff0c;主要包括颜色&#xff0c;字体&#xff0c;画笔&#xff0c;文本&#xf…

composer切换全局镜像源的方法

composer 默认配置中的镜像地址为国外的&#xff0c;在下载一些依赖包的时候会感觉很慢。当然国内也有很多composer镜像地址的&#xff0c;比如阿里云&#xff0c;腾讯云等。下面的博文73so博客就和大家说说&#xff0c;如何将composer的默认镜像改为国内镜像源的方法。 compo…

Java-认识String类

本章重点&#xff1a; 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组…

Selenium自动化测试详解

最近也有很多人私下问我&#xff0c;selenium学习难吗&#xff0c;基础入门的学习内容很多是3以前的版本资料&#xff0c;对于有基础的人来说&#xff0c;3到4的差别虽然有&#xff0c;但是不足以影响自己&#xff0c;但是对于没有学过的人来说&#xff0c;通过资料再到自己写的…

C++初阶--类型模板

文章目录 泛型编程函数模板使用通用加法函数多模板参数必须用实例化 函数模板的原理类模板使用 注意事项 泛型编程 先看一个例子&#xff1a; 这是一些对于Swap重载的函数&#xff0c;区别是类型不同&#xff1b; 虽然能够重载使用&#xff0c;但代码复用率比较低&#xff0c…

技术分享| anyRTC之RTN网络

RTN(Real-time Network)中文名&#xff1a;实时音视频传输网络。 RTN是最近几年由各大RTC的云厂商提出的一个全新架构的音视频实时传输网络概念。类似于直播的CDN网络&#xff0c;RTN是对音视频的实时性又强烈要求的场景而设计的&#xff0c;原理上全球端到端的时延通过RTN网络…

vue2【相关介绍】

目录 1&#xff1a;什么是单页面应用程序 2&#xff1a;什么是vue-cli 3&#xff1a;安装使用 4&#xff1a;vue项目的目录结构&#xff1a;​编辑 5&#xff1a;了解src目录的构成&#xff1a; 6&#xff1a;vue项目的运行流程 7&#xff1a;el&#xff1a;容器名称&…

01-了解微服务架构的演变过程和微服务技术栈

微服务 微服务架构演变 单体架构:将业务的所有功能集中在一个项目中开发最后打成一个包部署 优点: 架构简单, 部署成本低,适合小型项目缺点: 耦合度高, 升级维护困难 分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发称为一个服务 优点: 降低服务耦合…

电脑显示msvcp140_1.dll丢失的5个常用解决方法,亲测可修复

常见于计算机操作中的"msvcp140_1.dll丢失"错误警示&#xff0c;往往令部分应用程序无法正常启动。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的文件。本文将介绍6个解决msvcp140_1.dll丢失的方法&#xff0c;帮助大家快速恢复计算机的正常运行。 …

SpatialFeaturePlot画图是空的

stmeta.datadplyr::left_join(stmeta.data,coor[,c(3,7:8)],by"barcodes") SpatialFeaturePlot(st,features "test",images "P02") 做了上述操作之后画出的图是空的 原因&#xff0c;left_join之后自动把stmeta.data的行名变成了1&#xff0…

算法---腐烂的橘子

题目 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格…

电机应用开发-编码器的使用

目录 编码器 增量式编码器倍频技术 常用编码器测速方法&#xff1a;M法、T法和M/T法 STM32的编码器接口 编码器接口结构体 减速电机编码器测速实验 硬件设计 TIM3配置编码器 测速环节 步进电机编码器测速实验 编码器 增量式编码器倍频技术 增量式编码器输出的常见脉…

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用 1.概述 在学习51单片机过程中&#xff0c;选择了STC的12C2052AD型号单片机作为入门芯片。前几个课题实验使用默认的内部晶振烧录程序&#xff0c;运行都没有问题。 选择一个LED亮度渐变的课题做实验&…

【C++】构造函数详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …