
你这个问题应该是数据类型的问题,数据类型不一致导致的。
SQLStr = "select QTY,OPN_DD,FIN_DD from MF_MO where OPN_DD> cdate(dat) and FIN_DD< cdate(dat2)"
Private Sub Command1_Click()
Dim rst As New ADODBRecordset
name=trim(text1text)
sql="select from 表名 where 字段名='"& name &"' "
set rst=execute(sql)
if not rsteof then
text2text=rstfields("员工号")
text3text=rstfields("姓名")
text4text=rstfields("性别")
text5text=rstfields("年龄")
else
msgbox"查五此人"
end if
rsclose
end sub
定义变量
设置连接(具体看系统)
写sql语句(具体要提取那些数据如果全部就是(select from 表格名)
用open打开连接
然后用数据集来更新表
在EXCEL 的 代码编辑窗口,使用菜单 工具-引用,勾选
Microsoft ActiveX Data Object 26 Library 或其他版本
这样引用了VB的ADODB对象模型,其他使用办法与VB环境完全一样。
sql一般用在多条件查询,对数据库读写等。
1 VBA如何建立sql连接
A.在VBA Project 窗口中,“工具—引用—Microsoft ActiveX Data Objects 20 Library”,如下图所示
B. VBA语句
Private Sub CommandButton1_Click()
Dim cnn As ADODBConnection’定义变量
Dim sql$, Stext$, i As Integer
Worksheets(3)CellsClear
Stext = IIf(TextBox1Value = "", "", TextBox1Value)
Set cnn = CreateObject("adodbconnection")’生成对象
cnnOpen "Provider=MicrosoftJetOLEDB40;Extended Properties=Excel 80;Data Source=" & ThisWorkbookFullName’打开数据库
If TextBox1 = "" Then
sql = "select from [sheet2$]"’sql语句
Else
sql = "select from [sheet2$] where 姓名 like '" & TextBox1Value & "'"
End If
Worksheets(3)[a1]CopyFromRecordset cnnExecute(sql)’执行sql语句
cnnClose
Set cnn = Nothing
End Sub
2 sub text()
Dim cnn As ADODBConnection’定义变量
Dim rs as adodbrecordset
Set cnn = CreateObject("adodbconnection")’生成对象,若定义变量时为Dim cnn As New ADODBConnection,此句可省略
cnnOpen "Provider=MicrosoftJetOLEDB40;Extended Properties=Excel 80;Data Source=" & ThisWorkbookFullName’打开数据库
sql = "select from [sheet2$] where 姓名 like '" & TextBox1Value & "'"
rsopen sql,cnn,adOpenKeysetadLockOptimistic’生成查询记录,为后面出书数据准备
Worksheets(3)[a1]CopyFromRecordset rs
end sub
________________________________________________________________________
以下根据网络整理
2 Select SQL语句
SELECT FROM table_name WHERE column1 = xxx [AND column2 > yyy] [OR column3 <> zzz]
''表示全部的栏位都列出来,如果不全部列出,则可以写字段名称如 学号,姓名……;WHERE 之后是接条件式,把符合条件的资料列出来,table_name如果为工作表名称,书写格式[工作表名$],下同。
SELECT column1,AVG(column2) FROM table_name GROUP BY column1 HAVING AVG(column2) > xxx
说明: 1GROUP BY: 以column1 为一组计算 column2 的平均值必须和 AVG、SUM等整合性查询的关键字一起使用。2HAVING : 必须和 GROUP BY 一起使用作为整合性的限制。
复合性的查询:SELECT FROM table_name1 WHERE EXISTS (SELECT FROM table_name2 WHERE conditions )
说明:1WHERE 的 conditions 可以是另外一个的 query。2 在此是指存在与否。
SELECT column1,columns2,FROM table_name
说明:把table_name 的特定栏位资料全部列出来
SELECT COUNT () FROM table_name WHERE column_name = xxx
说明:查询符合条件的资料共有几笔。
1计算出总和,所选的栏位必须是可数的数字形态。2除此以外还有 AVG() 是计算
SELECT SUM(column1) FROM table_name
说明:平均、MAX()、MIN()计算最大最小值的整合
SELECT FROM table_name1 WHERE column1 BETWEEN xx AND yy
说明:BETWEEN 表示 column1 的值介於 xx 和 yy 之间。
3 update SQL语句
UPDATE table_name SET column1='xxx' WHERE conditoins
说明:1更改某个栏位设定其值为'xxx'。
2conditions 是所要符合的条件、若没有 WHERE 则整个 table 的那个栏位都会全部被更改。
4 deletesql语句
删除资料: DELETE FROM table_name WHERE conditions
说明:删除符合条件的资料。
说明:关于WHERE条件后面如果包含有日期的比较,不同数据库有不同的表达式
5.SQL中通配符用
• "%" 表示零个或多个,
• "_"表示任何单一字符
• [charlist] 字符列中的任何单一字符
• [^charlist] [!charlist] 不在字符列中的任何单一字符
• select from databasename where fieldname like '%XX%'
• SELECT FROM Persons WHERE City LIKE '[AOF]%'
• 从上面的 "Persons" 表中选取居住的城市以 "A" 或 "O" 或 "F" 开头的人
• SELECT FROM Persons WHERE City LIKE '[!AOF]%'
• 从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "O" 或 "F" 开头的人
以上就是关于用vba 从EXCEL单元格里读取一个日期同sql 2005 数据库中的日期型记录作比较写sql语句的时候出问题了全部的内容,包括:用vba 从EXCEL单元格里读取一个日期同sql 2005 数据库中的日期型记录作比较写sql语句的时候出问题了、vb查找 sql数据读取、请问在access中如何用VBA代码查询SQL服务器上的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)