全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:846
推到 Plurk!
推到 Facebook!

有关资料移动

答題得分者是:cashxin2002
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-04 08:58:21 IP:222.184.xxx.xxx 未訂閱
一个EDIT框,一个BUTTON,当EDIT框中填入内容(票据号),点BUTTON后将数据表中票据号字段名=所填票据号的相符记录移动到另一个数据表中(相当于剪切功能一样),另一个数据表中所有字段及格式都相同的。请问前辈如何实现该功能?谢谢!
------
我的编程起步于ktop,我将永远支持ktop
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-04 09:14:06 IP:202.39.xxx.xxx 未訂閱
您好, 您不都已經寫出來了嗎? 可用兩個 Query 一個去 Select 符合 Edit 條件的 record 另一個 Query 用來 Insert 至另一個資料表
begin
  // Select 符合條件的值
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Select * From Table1 Where Field1 = :Field1';
  ADOQuery1.Parameters.ParamValues['Field1'] := Edit1.Text;
  ADOQuery1.Open;      // Insert 到另一資料表
  ADOQuery2.Close;
  ADOQuery2.SQL.Text := 'Insert Into Table2 (Field1, Field2) Values (:Field1, :Field2)';
  while not ADOQuery1.Eof do
  begin
    ADOQuery2.Parameters.ParamValues['Field1'] := ADOQuery1.FieldByName('Field1').AsString;
    ADOQuery2.Parameters.ParamValues['Field2'] := ADOQuery1.FieldByName('Field2').AsString;
    ADOQuery2.ExecSQL;        ADOQuery1.Delete; // 刪除原資料表中所 select 出來的 record
  end;
end;
-- hagar. 發表人 - hagar 於 2005/06/04 09:15:27
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-04 11:03:06 IP:222.184.xxx.xxx 未訂閱
ADOQuery2.SQL.Text := 'Insert Into Table2 (Field1, Field2) Values (:Field1, :Field2)'; 这里面的FIELD1,FIELD2是不是等于实际的表中的字段?我数据表中的字段有十五个样子,要一个个写吗?写了后好象提示超过255什么的
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-04 11:10:43 IP:202.62.xxx.xxx 未訂閱
您好﹗    Field1﹐Field2﹒﹒﹒就是您資料表中的字段名稱﹒ 在新增的SQL中需要一個個寫﹐這是SQL敘述的要求﹐如果超過255個字節的話﹐可以用組字串來方式來完成﹐如下﹕
SQL.Text := '.....'
  + '......'
  + '......';
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-04 11:45:13 IP:222.184.xxx.xxx 未訂閱
操作成功了,不过整个操作过程无声无息,好象做秘密工作似的,呵呵。我想加一个这样的功能,按确定后提示是否要删除票据号( )姓名( )的收据吗?确定就进行如上代码。成功后提示成功,不成功提示不成功。谢谢!
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-04 12:08:13 IP:202.62.xxx.xxx 未訂閱
您好﹗    您的要求中有個小小的問題﹐就是如果查詢出的記錄是多筆的﹐以下的方法在MessageDlg對話框中顯示出的票据號和姓名是第一筆的記錄﹐如果要取消顯示票据號和姓名的話﹐請使用MessageDlg句下的紅色部分代替即可此句即可﹒ 試試這樣﹕
Var
  Str1, Str2: String;
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Select * From Table1 Where Field1 = :Field1';
  ADOQuery1.Parameters.ParamValues['Field1'] := Edit1.Text;
  ADOQuery1.Open;
  Str1 := ADOQuery1.FieldByName('Field1').AsString;
  Str2 := ADOQuery1.FieldByName('Field2').AsString;
  if MessageDlg('您确定要刪除票据號('+Str1+')﹐姓名('+Str2+')的收据嗎﹖', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  //if MessageDlg('您确定要刪除票据號﹖', mtConfiration, [mbYes, mbNo], 0) = mrYes then
    begin
      try
        ADOQuery2.Close;
        ADOQuery2.SQL.Text := 'Insert Into Table2 (Field1, Field2) Values (:Field1, :Field2)';
        while not ADOQuery1.Eof do
        begin
          ADOQuery2.Parameters.ParamValues['Field1'] := ADOQuery1.FieldByName('Field1').AsString;
          ADOQuery2.Parameters.ParamValues['Field2'] := ADOQuery1.FieldByName('Field2').AsString;
          ADOQuery2.ExecSQL;
          ADOQuery1.Delete;
        end;
        ShowMessage('操作成功');
      Except
        ShowMessage('操作不成功')
      end;
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-06-26 20:56:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!