我在DBGIRD 中顯示的是相互關聯的兩個表的內容﹐關聯字段是name ,  其中表www11中顯示的是學生信息﹔    表poll中顯示的學生成績信息。 程序能夠運行﹐可運行后沒什么變化﹔特別是DBGRID又能夠刷新﹐就是不返回我想要的結果﹔
 我的程序源代碼如下
  with ADOQuery2 do
    begin
    close;
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Add('select www11.*,po11.math,po11.english,po11.chinese from www11 inner join po11 on www11.name=:na');
    ADOQuery2.Parameters.ParamByName('na').value:=edit1.text;
    ADOQuery2.ExecSQL;
    showmessage('數據統計成功﹗');
    ADOQuery1.Close;
    ADOQuery2.close;
    ADOQuery1.open;
    ADOQuery2.open;
    end;

解决方案 »

  1.   

    SQL语句有错吧  最好在SQL Explorer中运行正常后再写程序
      

  2.   

    SQL语句有错:
    试试:
    'select www11.*,po11.math,po11.english,po11.chinese from www11 inner join po11 on www11.name=po11.name where www11.name=:na
      

  3.   

    意见:
    1.代码冗余太多,也不对
    2.SQL语句有问题,两个表的连接条件都没写,即使能出来结果也不对修改代码
    with ADOQuery2 do
    begin
      close;
      SQL.Clear;
      //对你使用的数据库不是很熟,不知道语法,看看我改的能不能执行,关键是看明白我的意思
      SQL.Add('select www11.*,po11.math,po11.english,po11.chinese from www11 inner join po11 on www11.name = po11.name where www11.name = :na');
      Parameters.ParamByName('na').value:= edit1.text;
      open; 
      showmessage('數據統計成功﹗');  ADOQuery1.Close; //不知道你操作ADOQuery1干什么
      ADOQuery1.open;
    nd;
      

  4.   


    ADOQuery2.Parameters.ParamByName('na').value:=''''+ edit1.text + '''';
    2 不用ADOQuery2.ExecSQL;而用Open
      

  5.   

    我用的是SQL-SERVER2000﹐我采用了你們的建議﹐只是現在效果還是一樣。
      我改后的代碼如下﹕
       with ADOQuery2 do
        begin
        close;
        ADOQuery2.SQL.Clear;
        ADOQuery2.SQL.Add('select www11.*,po11.math,po11.english,po11.chinese from www11 inner join po11 on www11.name=po11.name where www11.name=:na');
        ADOQuery2.Parameters.ParamByName('na').value:=edit1.text;
        open;
        showmessage('數據統計成功﹗');
        ADOQuery1.Close;//通過關閉在打開實現刷新DBGRID 的數據﹔
        ADOQuery2.close;//若只用ADOQUERY2 關閉的話實現不了刷新功能﹗
        ADOQuery1.open;
        ADOQuery2.open;
        end;
      

  6.   

    為何DBGRID里面的數據得不到更新﹖﹖﹖﹖我用過很多方法﹐上面的方法都試過﹐都沒有用呀﹗ADOQuery1.Close﹔
        ADOQuery2.close;
        ADOQuery1.open;
        ADOQuery2.open﹔用這兩句的話﹐dbgrid還閃 一下﹐用其他的比如refresh,連反應都沒有﹗看看是什么問題﹐太怪了﹗
      

  7.   

    一个字:乱用一个ADOQUERY就可以了吧不知你要做什么?
    -----------------------------------------    
    ADOQuery1.Close;//通過關閉在打開實現刷新DBGRID 的數據﹔
    ADOQuery2.close;//若只用ADOQUERY2 關閉的話實現不了刷新功能﹗
    ADOQuery1.open;
    ADOQuery2.open;-----------------------
    这样写有必要吗?
      

  8.   

    怎么會沒有必要呢﹖我懷疑你搞清楚我的意思 沒有﹖
            我現在查詢出來的結果是兩個表的內容 ﹐所以我用了兩個不同的ADOQUREY
      

  9.   

    我分別用兩個ADOQUREY指向兩個不同的表﹐當我對數據進行刷新的時候肯定是兩個表都要刷新撒﹐你說是嗎﹖我認為這么做沒有錯﹐我不指導dbgrid里的數據為什魔就是不能刷新呢﹖﹖﹖﹖﹖
      

  10.   

    在edit1的change事件中写那个sql语句
    with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add('select www11.*,po11.math,po11.english,po11.chinese from www11 inner join po11 on www11.name = po11.name where www11.name ='''trim(edit1.text)''');
        open;  
      end;
    这样dbgrid中的数据应该能自动刷新的,试一下,不行,再和我联系!!