设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2702|回复: 11
打印 上一主题 下一主题

[窗体] 求教:sql查询的数据源怎样显示到子窗体?

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-20 21:12:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用下面这句怎么处理不了啊!
Dim rs As New ADODB.Recordset
Dim ssSql As String
ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
Set rs = conn.Execute(ssSql)
Me.进货数据.Form.RecordSource = rs

总提示类型不匹配。哪位大哥指导一下啊!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-8-21 00:15:03 | 只看该作者
数据源是字符串,而不是记录集(这个可以参考窗体设计模式下的数据源)。简化后的代码如下:
  1. Dim ssSql As String
  2. ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
  3. Me.进货数据.Form.RecordSource = ssSql
复制代码

点击这里给我发消息

3#
发表于 2011-8-21 00:22:20 | 只看该作者
Dim rs As New ADODB.Recordset
Dim ssSql As String
ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
Set rs = conn.Execute(ssSql)
Me.进货数据.Form.Recordset = rs

点击这里给我发消息

4#
发表于 2011-8-21 00:23:13 | 只看该作者
Dim rs As New ADODB.Recordset
Dim ssSql As String
ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
Set rs = conn.Execute(ssSql)
Me.进货数据.Form.Recordset = rs

点击这里给我发消息

5#
发表于 2011-8-21 01:38:00 | 只看该作者
我用下面这句怎么处理不了啊!
Dim rs As New ADODB.Recordset
Dim ssSql As String
ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
Set rs = conn.Execute(ssSql)
Me.进货数据.Form.RecordSource = rs

总提示类型不匹配。哪位大哥指导一下啊!

我估计你是用ADO的记录集作为子窗体的数据源,如果是只读,你应该这样写:
  1. Dim rs As ADODB.Recordset
  2. Dim ssSql As String
  3. ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
  4. Set rs = conn.Execute(ssSql)
  5. Set Me.进货数据.Form.Recordset = rs
复制代码
如果是要可以修改和删除,你应该这样写:
  1. Dim rs As New ADODB.Recordset
  2. Dim ssSql As String
  3. ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
  4. rs.Open ssSql, conn, 1, 3
  5. Set Me.进货数据.Form.Recordset = rs
复制代码
6#
 楼主| 发表于 2011-8-21 06:54:50 | 只看该作者
太好了!谢谢版主和管理员!
7#
 楼主| 发表于 2011-8-21 13:47:19 | 只看该作者
帮忙看看怎么没法运行啊!
我想达到的目的是点击主窗体中的录入按钮,在进货数据子窗口显示我查询的ado记录值!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
发表于 2011-8-21 18:22:23 | 只看该作者
你引用了外部链接,不能关闭数据链接。修改后代码如下:
  1. Dim conn As New adodb.Connection  '数据库连接
  2. Dim sSql As String  'sql字符串
  3. conn.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source = " & CurrentProject.Path & "" & "进销货数据库.accdb" & ";Jet OLEDB:Database"
  4. conn.Open
  5. If conn.State = adStateOpen Then
  6. Dim rs As New adodb.Recordset
  7. Dim ssSql As String
  8. ssSql = "Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'"
  9. rs.Open ssSql, conn, adOpenStatic, adLockReadOnly
  10. Set Me.进货数据.Form.Recordset = rs
  11. Me.进货数据.Form.Recalc
  12. Else
  13. MsgBox ("no")
  14. End If
复制代码
不过,个人还是觉得复杂了些,以下较简单的代码,供参考比较:
  1. Dim db As dao.Database
  2. Dim rst As dao.Recordset
  3. Set db = dao.OpenDatabase(CurrentProject.Path & "\进销货数据库.accdb")
  4. Set rst = db.OpenRecordset("Select id,货品名称,货品代号,货品颜色,货品尺码,进货数量,进货价格,进货日期,备注 from 进货明细 where 货品名称='裤子'",dbOpenSnapshot)
  5. '其实这个快照打开参数是可以省去的,不过想做得跟你的原件一样,就加上去了。
  6. Set Me.进货数据.Form.Recordset = rst
  7. Me.进货数据.Form.Recalc
复制代码
9#
 楼主| 发表于 2011-8-21 19:01:42 | 只看该作者
辛苦版主了!!
10#
 楼主| 发表于 2011-8-21 19:12:33 | 只看该作者
经测试完美可用!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 03:08 , Processed in 0.168982 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表