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

存檔的程式,為何存不進去?

尚未結案
evoneliu
一般會員


發表:12
回覆:10
積分:4
註冊:2004-10-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-09 10:46:24 IP:220.130.xxx.xxx 未訂閱
dear :請問各位先進,以下這段存檔的程式,為何一直存不進去moalpf呢? 程式新增moalpfadoquery:Tadoquery;datasource1:Tdatasource dataset指向moalpfadoquery;dbedit1-19是由moalpfadoquery中拖曳至主畫面,執行查詢是沒問題的,但是查詢出來修改要存檔會存不進去!請問是否有何遺漏呢?謝謝各位指教! procedure Tfmmain.saveClick(Sender: TObject); begin moalpfadoquery.Close; moalpfadoquery.SQL.CLEAR; moalpfadoquery.SQL.ADD('select * from moalpf where moal01=:e_moal01'); moalpfadoquery.Parameters.ParamByName('e_moal01').value:=dbedit1.text; moalpfadoquery.Open; if moalpfadoquery.RecordCount> 0 then begin //修改 Screen.Cursor:=crAppStart; moalpfadoquery.SQL.Clear; moalpfadoquery.SQL.Add('UPDATE moalpf'); moalpfadoquery.SQL.Add('SET moal02=:e_moal02,'); moalpfadoquery.SQL.Add('moal03=:e_moal03,'); moalpfadoquery.SQL.Add('moal04=:e_moal04,'); moalpfadoquery.SQL.Add('moal05=:e_moal05,'); moalpfadoquery.SQL.Add('moal06=:e_moal06,'); moalpfadoquery.SQL.Add('moal07=:e_moal07,'); moalpfadoquery.SQL.Add('moal08=:e_moal08,'); moalpfadoquery.SQL.Add('moal09=:e_moal09,'); moalpfadoquery.SQL.Add('moal10=:e_moal10,'); moalpfadoquery.SQL.Add('moal11=:e_moal11,'); moalpfadoquery.SQL.Add('moal12=:e_moal12,'); moalpfadoquery.SQL.Add('moal13=:e_moal13,'); moalpfadoquery.SQL.Add('moal14=:e_moal14,'); moalpfadoquery.SQL.Add('moal15=:e_moal15,'); moalpfadoquery.SQL.Add('moal16=:e_moal16,'); moalpfadoquery.SQL.Add('moal17=:e_moal17,'); moalpfadoquery.SQL.Add('moal18=:e_moal18,'); moalpfadoquery.SQL.Add('moal19=:e_moal19'); moalpfadoquery.SQL.Add('WHERE moal01=:e_moal01'); moalpfadoquery.Parameters.ParamByName('e_moal02').value:=Trim(dbedit2.Text); moalpfadoquery.Parameters.ParamByName('e_moal03').value:=Trim(dbedit3.Text); moalpfadoquery.Parameters.ParamByName('e_moal04').value:=Trim(dbedit4.Text); moalpfadoquery.Parameters.ParamByName('e_moal05').value:=Trim(dbedit5.Text); moalpfadoquery.Parameters.ParamByName('e_moal06').value:=Trim(dbedit6.Text); moalpfadoquery.Parameters.ParamByName('e_moal07').value:=Trim(dbedit7.Text); moalpfadoquery.Parameters.ParamByName('e_moal08').value:=Trim(dbedit8.Text); moalpfadoquery.Parameters.ParamByName('e_moal09').value:=Trim(dbedit9.Text); moalpfadoquery.Parameters.ParamByName('e_moal10').value:=Trim(dbedit10.Text); moalpfadoquery.Parameters.ParamByName('e_moal11').value:=Trim(dbedit11.Text); moalpfadoquery.Parameters.ParamByName('e_moal12').value:=Trim(dbedit12.Text); moalpfadoquery.Parameters.ParamByName('e_moal13').value:=Trim(dbedit13.Text); moalpfadoquery.Parameters.ParamByName('e_moal14').value:=Trim(dbedit14.Text); moalpfadoquery.Parameters.ParamByName('e_moal15').value:=Trim(dbedit15.Text); moalpfadoquery.Parameters.ParamByName('e_moal16').value:=Trim(dbedit16.Text); moalpfadoquery.Parameters.ParamByName('e_moal17').value:=Trim(dbedit17.Text); moalpfadoquery.Parameters.ParamByName('e_moal18').value:=Trim(dbedit18.Text); moalpfadoquery.Parameters.ParamByName('e_moal19').value:=Trim(dbedit19.Text); moalpfadoquery.ExecSQL; MessageDlg('航空資料' Trim(dbedit1.text) ' 修改完成 !', mtInformation, [mbOk], 0); Screen.Cursor:=crArrow; end end
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-09 11:54:32 IP:61.222.xxx.xxx 未訂閱
不曉得您有沒有發現! 在 moalpfadoquery.ExecSQL 之前 moalpfadoquery 是屬於 Open 狀態,會導致出錯的! 建議在 執行 EXECSQL 之前,先 moalpfadoquery.CLOSE; 不知是否為這個問題?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-09 11:55:35 IP:210.65.xxx.xxx 未訂閱
Hi evoneliu,    既然 DBEdit1 ~ DBEtit19 資料來自 moalpfadoquery,為何不直接 Post moalpfadoquery 進行 Save 呢?
procedure TForm1.Button2Click(Sender: TObject);
begin
//修改
  Screen.Cursor:=crAppStart;
  moalpfadoquery.Post;
  MessageDlg('航空資料' Trim(dbedit1.text) ' 修改完成 !', mtInformation, [mbOk], 0);
  Screen.Cursor:=crArrow;
end;
發表人 -
------
Fishman
evoneliu
一般會員


發表:12
回覆:10
積分:4
註冊:2004-10-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-09 13:49:30 IP:220.130.xxx.xxx 未訂閱
DEAR :我試過CLOSE結果好像還是一樣耶!另外,我試過POST結果會出現錯誤訊息如下:"MOALPFADOQUERY dataset not in edit or insert mode" 是否有何需要設定而未設定呢?謝謝大家的幫忙!
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-09 14:06:46 IP:202.62.xxx.xxx 未訂閱
您好﹗    未處于dsInsert和dsEdit狀態的資料集元件是無法使用Post方法的﹒
procedure TForm1.Button2Click(Sender: TObject);
begin
//修改
  Screen.Cursor:=crAppStart;
  moalpfadoquery.Edit;
  moalpfadoquery.Post;
  MessageDlg('航空資料' Trim(dbedit1.text) ' 修改完成 !', mtInformation, [mbOk], 0);
  Screen.Cursor:=crArrow;
end;
========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟
evoneliu
一般會員


發表:12
回覆:10
積分:4
註冊:2004-10-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-09 14:42:13 IP:220.130.xxx.xxx 未訂閱
DEAR :我了解了,我加了之後的確不會出現錯誤訊息了,不過仍舊存不進去,是否還有什麼遺漏的設定呢?另我有個疑問,為何dbedit1.text有秀在主畫面上,但是我抓蟲時,一直會是空白的,抓不到資料呢?會不會因為這樣所以,以下才會執行不成功呢? procedure Tfmmain.saveClick(Sender: TObject); begin moalpfadoquery.Close; moalpfadoquery.SQL.CLEAR; moalpfadoquery.SQL.ADD('select * from moalpf where moal01=:e_moal01'); 【moalpfadoquery.Parameters.ParamByName('e_moal01').value:=dbedit1.text;】 moalpfadoquery.Open; if moalpfadoquery.RecordCount> 0 then begin //修改 //……
cashxin2002
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-09 14:50:45 IP:202.62.xxx.xxx 未訂閱
您好﹗    把專案上傳到會員求助區﹐再幫你看﹐應會快一些吧﹒ <><>========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟
evoneliu
一般會員


發表:12
回覆:10
積分:4
註冊:2004-10-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-09 16:06:37 IP:220.130.xxx.xxx 未訂閱
dear :謝謝!你真是個好人…我已經上傳上去了,再麻煩你囉!
SnoopyChen
一般會員


發表:1
回覆:17
積分:18
註冊:2003-07-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-09 16:24:16 IP:211.21.xxx.xxx 未訂閱
儘量使用AdoQuery執行"SELECT", 使用AdoCommand執行 "Insert/Delete/Update", 這兩者最好分開使用。 一個是有資料集的結果, 另一個則否。 在3-tiers這樣使用會死的很慘...
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-09 16:35:11 IP:61.222.xxx.xxx 未訂閱
引言: dear :謝謝!你真是個好人…我已經上傳上去了,再麻煩你囉!
cashxin2002 版主大大,在偷笑中......呵呵..
cashxin2002
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-11-09 18:19:13 IP:202.62.xxx.xxx 未訂閱
您好﹗    好人談不上﹐因為也有人說我是坏人﹐能力也有限﹐只是想在學習的同時﹐也能盡力幫助一些新進的朋友﹐也算是一種回饋的方式﹒ 初步看了一下您的專案﹐因為您的範例中沒有附><>========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-11-09 19:09:35 IP:211.75.xxx.xxx 未訂閱
cashxin2002 大大 真的粉熱心 問他準沒錯    cashxin2002 大大 我可以給你我的mail 嗎< >< > 哈哈~~~~~~ 開開玩笑 不要介意喔 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
vinchenkimo
一般會員


發表:0
回覆:37
積分:17
註冊:2004-03-30

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-11-12 11:53:09 IP:140.112.xxx.xxx 未訂閱
剛剛在上傳區回了, 原來這裡有這麼多篇 dbedit1.txt bind到 moalpfadoquery.MOAL01 當你執行 moalpfadoquery.Close; dbedit1.txt 的值當然會不見,之後當參數傳就是空白 query close前 用一個 local variable 來接當參數 就可以了 procedure Tfmmain.saveClick(Sender: TObject); begin moalpfadoquery.Close; moalpfadoquery.SQL.CLEAR; moalpfadoquery.SQL.ADD('select * from moalpf where moal01=:e_moal01'); 【moalpfadoquery.Parameters.ParamByName('e_moal01').value:=dbedit1.text;】 moalpfadoquery.Open; if moalpfadoquery.RecordCount> 0 then begin //修改 //……
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-11-12 14:22:30 IP:210.64.xxx.xxx 未訂閱
用這種作法,要用另一adoquery來執行sql指令才行,不然會像上一位大大說的,close後沒值可傳參數進去了,且妳少傳最重要的:e_moal01這個參數喔 < class="code"> //修改 ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Update...'); ADOQuery1.SQL.Add('WHERE moal01=:e_moal01'); //e_moal01這個妳沒有在底下傳值,是否加上 ADOQuery1.Parameters.ParamByName('e_moal01').value:=Trim(dbedit1.Text);//少了這個吧! ADOQuery1.ExecSQL; //最後更新畫面 moalpfadoquery.Close; moalpfadoquery.Open; 霧裡探花
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-11-12 14:40:50 IP:211.74.xxx.xxx 未訂閱
請參考
procedure Tfmmain.SpeedButton1Click(Sender: TObject);
var
  tq: TAdoQuery;
  stype: string;
begin
  if moalpfadoquery.State in [dsInsert, dsEdit] then
  begin
    tq := TAdoQuery.Create(Self);
    try
      tq.Connection := moalpfadoquery.Connection;
      tq.SQL.ADD('select * from moalpf where moal01 = :e_moal01');
      tq.Parameters.ParamByName('e_moal01').value := dbedit1.text;
      tq.Open;
      if tq.IsEmpty then
      begin
        //新增
        stype := ' 新增完成 !';
        Screen.Cursor := crAppStart; tq.Close;
        tq.SQL.Clear;
        tq.SQL.Add('insert moalpf');
        tq.SQL.Add('(moal01,moal02,moal03,moal04,moal05,');
        tq.SQL.Add('moal06,moal07,moal08,moal09,moal10,');
        tq.SQL.Add('moal11,moal12,moal13,moal14,moal15,');
        tq.SQL.Add('moal16,moal17,moal18,moal19)');
        tq.SQL.Add('Values(:e_moal01,:e_moal02, :e_moal03, :e_moal04, :e_moal05,');
        tq.SQL.Add(':e_moal06,:e_moal07, :e_moal08, :e_moal09, :e_moal10,');
        tq.SQL.Add(':e_moal11,:e_moal12, :e_moal13, :e_moal14, :e_moal15,');
        tq.SQL.Add(':e_moal16,:e_moal17, :e_moal18, :e_moal19)');
        tq.Parameters.ParamByName('e_moal01').value := moalpfadoquery.FieldByName('e_moal01').Value; ;
      end
      else
      begin
        //修改
        stype := ' 修改完成 !';
        tq.Close;
        Screen.Cursor := crAppStart;
        tq.SQL.Clear;
        tq.SQL.Add('UPDATE moalpf');
        tq.SQL.Add('SET moal02=:e_moal02,');
        tq.SQL.Add('moal03=:e_moal03,');
        tq.SQL.Add('moal04=:e_moal04,');
        tq.SQL.Add('moal05=:e_moal05,');
        tq.SQL.Add('moal06=:e_moal06,');
        tq.SQL.Add('moal07=:e_moal07,');
        tq.SQL.Add('moal08=:e_moal08,');
        tq.SQL.Add('moal09=:e_moal09,');
        tq.SQL.Add('moal10=:e_moal10,');
        tq.SQL.Add('moal11=:e_moal11,');
        tq.SQL.Add('moal12=:e_moal12,');
        tq.SQL.Add('moal13=:e_moal13,');
        tq.SQL.Add('moal14=:e_moal14,');
        tq.SQL.Add('moal15=:e_moal15,');
        tq.SQL.Add('moal16=:e_moal16,');
        tq.SQL.Add('moal17=:e_moal17,');
        tq.SQL.Add('moal18=:e_moal18,');
        tq.SQL.Add('moal19=:e_moal19');
        tq.SQL.Add('WHERE moal01=:e_moal01');
      end;
      tq.Parameters.ParamByName('e_moal02').value := moalpfadoquery.FieldByName('e_moal02').Value;
      tq.Parameters.ParamByName('e_moal03').value := moalpfadoquery.FieldByName('e_moal03').Value;
      tq.Parameters.ParamByName('e_moal04').value := moalpfadoquery.FieldByName('e_moal04').Value;
      tq.Parameters.ParamByName('e_moal05').value := moalpfadoquery.FieldByName('e_moal05').Value;
      tq.Parameters.ParamByName('e_moal06').value := moalpfadoquery.FieldByName('e_moal06').Value;
      tq.Parameters.ParamByName('e_moal07').value := moalpfadoquery.FieldByName('e_moal07').Value;
      tq.Parameters.ParamByName('e_moal08').value := moalpfadoquery.FieldByName('e_moal08').Value;
      tq.Parameters.ParamByName('e_moal09').value := moalpfadoquery.FieldByName('e_moal09').Value;
      tq.Parameters.ParamByName('e_moal10').value := moalpfadoquery.FieldByName('e_moal10').Value;
      tq.Parameters.ParamByName('e_moal11').value := moalpfadoquery.FieldByName('e_moal11').Value;
      tq.Parameters.ParamByName('e_moal12').value := moalpfadoquery.FieldByName('e_moal12').Value;
      tq.Parameters.ParamByName('e_moal13').value := moalpfadoquery.FieldByName('e_moal13').Value;
      tq.Parameters.ParamByName('e_moal14').value := moalpfadoquery.FieldByName('e_moal14').Value;
      tq.Parameters.ParamByName('e_moal15').value := moalpfadoquery.FieldByName('e_moal15').Value;
      tq.Parameters.ParamByName('e_moal16').value := moalpfadoquery.FieldByName('e_moal16').Value;
      tq.Parameters.ParamByName('e_moal17').value := moalpfadoquery.FieldByName('e_moal17').Value;
      tq.Parameters.ParamByName('e_moal18').value := moalpfadoquery.FieldByName('e_moal18').Value;
      tq.Parameters.ParamByName('e_moal19').value := moalpfadoquery.FieldByName('e_moal19').Value;
      tq.ExecSQL;
      MessageDlg('航空資料'   Trim(dbedit1.text)   stype, mtInformation, [mbOk], 0);
      Screen.Cursor := crArrow;
    finally
      FreeAndNil(tq);
    end;
  end;
在個人感覺這個方法不是很好,只能救急,最好妳的流程再改過
系統時間:2024-06-29 0:10:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!