begin
ssql:='select 'select A.sta_id 工號 ,A.sta_name 姓名, B.dep_name 部門 from tab_staff A, tab_department B where ....';
  ssql:=ssql + 'where A.dep_id=B.dep_id order by A.dep_id  ';
  with dm.query1 do
    begin
        Close;
        SQL.Clear;
        SQL.Add (ssql);
        open;
        last;
        DBGrid1.DataSource := DataSource2;
       //假定 原来 DBGrid1.DataSource :=  DataSource1
       //          DataSource1.DataSet := Query1
    end;
      

解决方案 »

  1.   

    我按yangkunjie(杨七郎)剛才給我貼的寫成如下,我認為比較合理.但有標記-------()出錯.
    錯誤為;  [Error] ustaffform.pas(72): Incompatible types: 'TColumnTitle' and 'String'  怎麼辦?????
        
    procedure Tstaffform.FormCreate(Sender: TObject);
    var
      ssql:string;
    begin
       inherited;
      dm.datasource1.dataset:=dm.query1;
      ssql:='select A.sta_id  ,A.sta_name , B.dep_name from tab_staff A, tab_department B ';
      ssql:=ssql + 'where A.dep_id=B.dep_id order by A.dep_id  ';
      with dm.query1 do
        begin
         try
            Close;
            SQL.Clear;
            SQL.Add (ssql);
            open;
            last;
          except
            showmessage('不能打開數據庫!');
          end;
          //showmessage(dm.query1.fields[1].AsString+'zfz');
        dbgrid1.datasource:=dm.datasource1;
        dbgrid1.columns[0].fieldname:='sta_id';
        dbgrid1.columns[1].fieldname:='sta_name';
        dbgrid1.columns[2].fieldname:='dep_name';
        dbgrid1.columns[0].title:='工號' ;   ----------()
        dbgrid1.columns[1].title:='姓名';   -----------()
        dbgrid1.columns[2].title:='部門';    ----------()
        end;
    end;end.
      

  2.   

    問題解決了!謝謝大家!特別要感謝: cslegend(cs),: yangkunjie(杨七郎),: ltmb118()3位牛人!
    還有一個問題;
      1個query對應多個DBGrid,所以不能用可視方法實現,只能用語句實現呀!”不正确嗎?   
      

  3.   

    yangkunjie(杨七郎) 我給了妳59分! 高興吧??
    下面這句有標記 -----() 怎麼改??procedure Tstaffform.DBGrid1ColEnter(Sender: TObject);
    begin
      inherited;
        Edit1.Text:=dbgrid1.columns[0].value  -----()
    end;