| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1159 人关注过本帖
标题:查询结果
取消只看楼主 加入收藏
vbtom
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-9-5
收藏
 问题点数:0 回复次数:5 
查询结果
我做了一个查询,这个SQL语句由用户自己根据自己的需要输入到一个text控件中,然后点击按钮执行查询过程,结果在datagrid中显示。这些都已实现。
现在我想问的问题是:当输入如select * from table句时,这个table的最后两个field内容不在datagrid中显示,不知如何做?可以设置datagrid吗?
当然不能用select field1,field2,...fieldn from table 来实现。因为用户是不会记住那么多field name. 谢谢!

Private Sub CmdExecute_Click()
    On Error GoTo Err_Execute
    Dim strSql As String
    Dim rstSql As New ADODB.Recordset
    If Trim(TxtSQL.Text) = "" Then
        MsgBox "SQL text is blank. Please check!", vbOKOnly, "Prompt"
        Exit Sub
    End If
    rstSql.CursorLocation = adUseClient
    'strSql = "select * from pc"
    strSql = Trim(TxtSQL.Text)
    strSql = LCase(strSql)
    If InStr(1, strSql, "update") <> 0 Or InStr(1, strSql, "delete") <> 0 _
    Or InStr(1, strSql, "create") <> 0 Or InStr(1, strSql, "alter") <> 0 Or InStr(1, strSql, "drop") <> 0 Then
        MsgBox "The action is danger! Can not be executed!", vbOKOnly + vbExclamation, "Warning"
        Exit Sub
    End If
    rstSql.Open strSql, cnn, adOpenKeyset, adLockPessimistic
    Set DgdExplorer.DataSource = rstSql
    DgdExplorer.Refresh
    Set rstSql = Nothing
    Exit Sub
Err_Execute:
    MsgBox "SQL syntax error! Please check!", vbOKOnly + vbExclamation, "Warning"
    Exit Sub
End Sub
搜索更多相关主题的帖子: 结果 查询 
2007-12-14 14:29
vbtom
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-9-5
收藏
得分:0 
主要是后两个field是editor,editdatetime用来记录每条记录的修改人和时间,我不想人家看到。

还有,即使列出来,用户也嫌麻烦。还是用select * 方式。

[[italic] 本帖最后由 vbtom 于 2007-12-14 14:59 编辑 [/italic]]
2007-12-14 14:56
vbtom
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-9-5
收藏
得分:0 
各位BZ的说法都对,问题就是如何避免用户输入select *时的后两个field不要在datagrid中显示。

用户在工作中绝对是会输入select * from table的。
2007-12-14 15:27
vbtom
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-9-5
收藏
得分:0 
没有绑定。
不好意思。
可能我的意思没有表达清楚值勤或者是大家还没有明白我的意思 。

rst.open "select * from table",cnn
set datagrid.datasource = rst

这样会使datagrid显示table 的所有内容。而我的目的是要这个table 的后两个字段的内容不在datagrid中显示。如何做?
谢谢各位!
2007-12-16 17:58
vbtom
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-9-5
收藏
得分:0 
版主能否给个思路?或者是怎样修改datagrid?

我曾想用msflexgrid来代替,可是考虑到不同的table,它的field数与名也不同,不好控制,放弃了。
2007-12-17 11:58
vbtom
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-9-5
收藏
得分:0 
问题基本解决。由于每一个table的后两个field的一样。添加如下语句达到要求。

    If rstSql.Fields(rstSql.Fields.Count - 1).Name = "EditDateTime" Then
        intCount = rstSql.Fields.Count
        DgdExplorer.Columns(intCount - 1).Visible = False
        DgdExplorer.Columns(intCount - 2).Visible = False
    End If
2007-12-18 14:11
快速回复:查询结果
数据加载中...
 
   



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

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