程序目的:用datagrid动态显示数据,当按下按钮时,adodc的数据源发生变化(查询语句发生变化,要查的列不变),让datagrid的显示也发生变化
程序代码如下
Adodc1.RecordSource = QueryStr    'SQL语句
Adodc1.Recordset.Requery
Adodc1.Refresh
DataGrid1.ReBind
DataGrid1.Refresh
在改变数据源前已经将datagrid的column的caption设置好了,并且长宽也设置好了
当程序执行后,在datagrid第一行出现小黑三角,但是没有数据显示出来当我用
Adodc1.RecordSource = QueryStr    'SQL语句
Adodc1.Recordset.Requery
Adodc1.Refresh
DataGrid1.ClearFields
DataGrid1.ReBind
DataGrid1.Refresh
这样的时候datagrid出现数据,但是datagrid的column的caption不是我想要的,而且长宽也默认了请问:如何才能让新的数据显示在我已经设置好column的caption的datagrid里面

解决方案 »

  1.   

    现在就是用
    Adodc1.RecordSource   =   QueryStr         'SQL语句 
    Adodc1.Recordset.Requery 
    Adodc1.Refresh 
    DataGrid1.ReBind 
    DataGrid1.Refresh
    这个能在datagrid显示出记录的条数,记录有几条,他就出现几行,但是里面没有任何数据,不知道怎么会事
      

  2.   


    Dim rs As New ADODB.Recordset
    rs.Open SQL, db_conn
    set datagrid1.DataSource=rs
    '设置列所帮定的对象
    With DataGrid1
     .Columns(0).DataField="ColumnName"
    End With
    DataGrid1.Rebind
      

  3.   

    如果我不用adodc,直接用RS
    代码如下:
    Dim Conn As New ADODB.Connection '建立连接对象
    Dim Rst As New ADODB.Recordset '建立记录集对象
    Conn.Open "Provider=SQLOLEDB;Data Source=***;Initial Catalog=***;User ID=sa;Password=***" '连接字符串
    Dim QueryStr As String
    QueryStr = "***"
    Rst.CursorLocation = adUseClient
    Rst.Open QueryStr, Conn, adOpenStatic, adLockOptimistic
    Set DataGrid1.DataSource = Rst
    DataGrid1.Refresh
    出现的现象为:能在datagrid显示出记录的条数,记录有几条,他就出现几行,但是里面还是没有任何数据
      

  4.   

    2楼的方法还是不行
    根本不改变caption
      

  5.   

    Rebind会重设列信息,如果你初始化时已经将列设好了,就不用调用Rebind了。
      

  6.   

    但是我把Rebind去掉的话,数据还是不出现,为什么
      

  7.   

    Column的Datafield是否已指定?
    建议初始化时取一个空纪录,调用一次Rebind,再改Caption。
      

  8.   

    Column的Datafield没有指定
    只是指定了Column的caption
    问题我已经解决了
    我用的笨办法
    如下:
    Adodc1.RecordSource = str
    Adodc1.Refresh
    DataGrid1.ClearFields
    DataGrid1.ReBind
    DataGrid1.Columns(0).Caption = "a"
    DataGrid1.Columns(0).Width = 1000
    DataGrid1.Columns(1).Caption = "b"
    DataGrid1.Columns(1).Width = 1000
    DataGrid1.Columns(2).Caption = "c"
    DataGrid1.Columns(2).Width = 1000
    DataGrid1.Refresh
    谢谢你们