| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 385 人关注过本帖
标题:帮我看看这哪错了!查询语句
只看楼主 加入收藏
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
结帖率:87.21%
收藏
已结贴  问题点数:20 回复次数:7 
帮我看看这哪错了!查询语句
fyxx.zip (27.6 KB)
帮我看看什么问题!还有,关闭rs用在什么位置好?如果才一个窗体卸载后,打开的数据库还要用rs.close吗?
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim sc As String
If Len(Combo1.Text) > 0 Then
      sc = "区域 = '" & Combo1.Text & "'"
End If
If Len(Combo2.Text) > 0 Then
    If Len(sc) > 0 Then
           sc = sc & " and 板块 = '" & Combo2.Text & "'"
    Else
          sc = "板块 = '" & Combo2.Text & "'"
    End If
End If
If Len(sc) > 0 Then
     Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88;"
    sql = "select * from czfy where " & sc
    'If rs.State = 1 Then rs.Close '如果数据库没有关闭就先关闭再打开'《=========================这一句好像也不行,但是在登陆窗体没出问题
     rs.Open sql, cn, adOpenForwardOnly, adLockBatchOptimistic   '《=========================这里错了!提示:对象变量或with变量未设置!!
End If
   If rs.EOF And rs.BOF Then
    MsgBox "没有符合条件的房屋,请您确认后重新输入", 32, "管理"
    Else
    Set MSHFlexGrid3.DataSource = rs '《=========================这里有问题吗?
   End If
   rs.Close
   cn.Close
End Sub

[ 本帖最后由 wxflw 于 2012-10-30 08:32 编辑 ]
搜索更多相关主题的帖子: 板块 
2012-10-29 17:30
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
还有!我把查询到的数据显示到 MSHFlexGrid3里!怎么也出错了?


Set MSHFlexGrid3.Source = rs

学习--------------学习-------------------学习--------------------!!
2012-10-29 17:34
codoc
Rank: 2
等 级:论坛游民
帖 子:2
专家分:20
注 册:2012-10-29
收藏
得分:20 
程序代码:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

If cn.State = adStateOpen Then cn.Close

cn.CursorLocation = adUseClient '加了这个

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88;"
Dim sql As String
Dim sc As String

If Len(Combo1.Text) > 0 Then
      sc = "区域 = '" & Trim(Combo1.Text) & "'"
End If

If Len(Combo2.Text) > 0 Then
    If Len(sc) > 0 Then
           sc = sc & " and 板块 = '" & Trim(Combo2.Text) & "'"
    Else
          sc = "板块 = '" & Trim(Combo2.Text) & "'"
    End If
End If

If Len(sc) > 0 Then
   
   sql = "select * from czfy where " & sc
  
   If rs.State = adStateOpen Then rs.Close   'If rs.State = 1 Then rs.Close '如果数据库没有关闭就先关闭再打开'《=========================这一句好像也不行,但是在登陆窗体没出问题
  
   rs.Open sql, cn, 1, 1 'adOpenForwardOnly, adLockBatchOptimistic   '《======这里错了!提示:对象变量或with变量未设置!!

   If rs.EOF And rs.BOF Then
  
    MsgBox "没有符合条件的房屋,请您确认后重新输入", 32, "管理"
   
    Else
   
   ' MsgBox rs.RecordCount
       
   
   ' Set MSFlexGrid3.DataSource = rs  '《====这里不行!!MSFlexGrid好像不支持recordset,具体没研究

    Set DataGrid1.DataSource = rs.Clone '换了个DataGrid控件就可以正常显示

   End If

   If rs.State = adStateOpen Then rs.Close

End If

'If cn.State = adStateOpen Then cn.Close


拿你的数据库测试了。可以运行。


[ 本帖最后由 codoc 于 2012-10-30 20:30 编辑 ]
2012-10-29 21:56
codoc
Rank: 2
等 级:论坛游民
帖 子:2
专家分:20
注 册:2012-10-29
收藏
得分:0 
因为没有你的数据库,也测试不了。应该这样改过就可以了。
2012-10-29 21:58
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
Dim cn As ADODB.Connection
 Dim rs As ADODB.Recordset
 
Set cn = New ADODB.Connection
 
If cn.State = adStateOpen Then cn.Close
 cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88;" '这一句没有错
 
Dim sql As String
 Dim sc As String
 
If Len(Combo1.Text) > 0 Then
       sc = "区域 = '" & Trim(Combo1.Text) & "'"
 End If
 
If Len(Combo2.Text) > 0 Then
     If Len(sc) > 0 Then
            sc = sc & " and 板块 = '" & Trim(Combo2.Text) & "'"
     Else
           sc = "板块 = '" & Trim(Combo2.Text) & "'"
     End If
 End If
 
If Len(sc) > 0 Then
     
   sql = "select * from czfy where " & sc
   
    If rs.State = adStateOpen Then rs.Close   ’这句改过后没有出错
   
    rs.Open sql, cn, 1, 1 'adOpenForwardOnly, adLockBatchOptimistic   '《========这里还是错了!提示:对象变量或with块变量未设置!!
 
   If rs.EOF And rs.BOF Then
   
     MsgBox "没有符合条件的房屋,请您确认后重新输入", 32, "管理"
     
    Else
     
    Set MSHFlexGrid3.DataSource = rs.Clone '《========还没运行到这所以不知道对不对
     
   End If
 
   If rs.State = adStateOpen Then rs.Close
 
’End If’这个多了要去掉
 
If cn.State = adStateOpen Then cn.Close
各位大哥老师请帮看看!!谢谢啊!上面附上数据库在1楼

学习--------------学习-------------------学习--------------------!!
2012-10-30 08:31
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
这个问题你应该能自己解决

无知
2012-10-30 12:45
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
以前我自己习惯用ADODC的!现在不用了不咋滴会了!~~我也是业余学学的!!

学习--------------学习-------------------学习--------------------!!
2012-10-30 14:09
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
Set rs = New adodb.Recordset
忘加了!前天忙今天来结贴!谢谢大家!

学习--------------学习-------------------学习--------------------!!
2012-10-31 16:06
快速回复:帮我看看这哪错了!查询语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101627 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved