在vba中怎样判断是否从数据库中查出记录

在vba中怎样判断是否从数据库中查出记录,第1张

1.在对数据表记录进行 *** 作时,有一个记录指针,指向当前的记录。

图1中假设rs返回若干条记录,通常正确执行rsOpen后,记录指针指向首记录。此时,rs的Bof属性和Eof属性都为False。

可以使用rs的MovNext方法把记录指针向记录集的前(上)部移动,也可以使用rs的MovePrevious方法把记录指针向记录集的后(下)部移动。在记录指针的移动过程中,只要记录指针指向一条存在的记录,rs的Bof属性和Eof属性都将保持为False。

2.当记录指针向前(上)部移动到数据表外时,rs的Bof属性变成True,而Eof属性仍然是False,见图2;

而当记录指针向后(下)部移动到数据表外时,rs的Bof属性仍然是False,而Eof属性变成True,见图3。

3.当rs返回的记录为零时,rs的Bof属性和Eof属性都为True。见图4。

详细请见下面。

给你个链接算起来2005的,测试通过

只说链接部分

Set cnn = CreateObject("adodbconnection")

strcn = "Provider=SQLOLEDB1;User ID=sa;Password=sa1234;Initial Catalog=paracheck;DataSource=ZN" 'ZN为数据库名称

cnnOpen strcn '链接数据库,这里已经成功连接数据库了

st = "SELECT INTO [" & s & "] FROM OPENROWSET('MicrosoftACEOLEDB120','Excel 120;HDR=yes;DATABASE=" & [Sheet7]Range("b" & i) & "','select from [sheet1$]')" '导入excel到sql2005数据库并新建数据库表名为([Sheet7]Range("a" & i))去掉xls才可以导入,sheet1为表的取名名称,不是表的编码名称

cnnExecute st

cnnClose

Set cnn = Nothing

首先在工具 引用 中引入ADO组件(全名叫Microsoft ActiveX Data什么的,很好好找),然后声明一个百连接变量度 conn as ADODBConnetion用来连接数据库,这里需要连接字符串,不知道你是什么类型数据库,所以连接字符串无法给出,再声明一个数据集内变量ds as ADODB DATASET用于执行SQL语句并返回结果集,得到结果集之后就可以访问里面的内容了容

VBA

连接

SQL

SERVER

数据库

实例:

Dim

strConn

As

String,

strSQL

As

String

Dim

conn

As

ADODBConnection

Dim

ds

As

ADODBRecordset

Dim

col

As

Integer

'连接数据库的字符串

strConn

=

"Provider=SQLOLEDB1;Persist

Security

Info=True;User

ID=[user];Password=[password];Initial

Catalog=[database];Data

Source=[数据库IP地址或数据库服务器名称];Connect

Timeout=720;

"

'查询语句,如果sql语句很长可以用strSQL=strSQL+来连接分成多段的语句,如果语句很短可以只写在一行上。

strSQL

=

"select

from

Hy_KPI_Shop_Dept_WeekRpt

"

strSQL

=

strSQL+"where

sdate='2014-01-01'

order

by

sdate,shopid

"

Set

conn

=

New

ADODBConnection

Set

ds

=

New

ADODBRecordset

'打开数据库连接

connOpen

strConn

'该句和数据库连接字符串处的Connect

Timeout=720,表示说如果语句运行时间很长,这两句可以延长vba的等待时间,没有这两句,vba往往会报查询超时。

connCommandTimeout

=

720

With

ds

'根据查询语句获得数据

Open

strSQL,

conn

'自动控制加入所有列标题

For

col

=

0

To

dsFieldsCount

-

1

'请注意Offset(0,

col)中的参数一定要正确,该句表示标题将会写在第一行,从A1单元格开始,如果不想写入标题行,可将下面这句注释掉。

Worksheets("门店各课KPI周报")Range("A1")Offset(0,

col)Value

=

dsFields(col)Name

Next

'加入所有行数据,该句表示查询结果将会写在第一行,从A1单元格开始,但是由于标题行写在第一行了,所以实际这一行从标题下的一行写入。

Worksheets("sheet1")Range("A1")Offset(1,

0)CopyFromRecordset

ds

End

With

'关闭数据库连接和清空资源

Set

ds

=

Nothing

connClose

Set

conn

=

Nothing

首先把你的页面设置成这个字符集

Window--Preferences--输入jsp,搜索--点击jsp--在相应的字符集设置上设置成自己想要的编码集。

如果这样还是不行的话,说明你数据库字符集设置有问题,这样设置:

首先把MySQL的服务停掉 在运行窗口输入:net stop mysql

把服务器和客户端的字符集改成自己想用的字符集:GB2312

具体 *** 作为:打开mysql安装目录下的myinitet;

找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在文件最前面输入defaul就会找到,都要改过来;

重启MySQL服务器,在运行窗口输入:net start mysql

最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被创建的时候用的是默认的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了

百度经验有详细的图文文章(网页链接)介绍编程语句,注意一点,不同的数据库连接代码是不同的。

另外,例子代码是把表中的数据全部读到一个表里面,你可以然后在VLOOKUP填写表的BC列。

以上就是关于在vba中怎样判断是否从数据库中查出记录全部的内容,包括:在vba中怎样判断是否从数据库中查出记录、VBA连接数据库,数据库配置不正确,导致连接失败,要求给出提示,并且退出程序、为什么vba数据库里面的引用不行啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9502268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存