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

ADOQuery.post一問

尚未結案
sucm
一般會員


發表:24
回覆:29
積分:10
註冊:2005-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-13 22:28:34 IP:61.62.xxx.xxx 未訂閱
procedure TForm7.Button9Click(Sender: TObject); begin ADOQuery1.Open; ADOQuery1.Insert; ADOQuery2.Open; ADOQuery2.Insert; end; procedure TForm7.Button13Click(Sender: TObject); begin ADOQuery1.Post; ADOQuery2.Post; end; procedure TForm7.ADOQuery2BeforePost(DataSet: TDataSet); begin with ADOQuery4 do //自動編號 begin Close; SQL.Text:='select isnull(convert(int,max(serviced_respondnum)),0) 1 from custservice_detail a,service b ' 'where a.service_custservicenum=b.service_custservicenum'; Open; DataSet.FieldByName('serviced_respondnum').AsString:= FormatFloat('0000',Fields[0].AsInteger); end; end; procedure TForm7.ADOQuery1BeforePost(DataSet: TDataSet); begin //自動編號 with ADOQuery5 do begin Close; SQL.Text := 'SELECT ISNULL(CONVERT( INT,SUBSTRING(MAX(service_custservicenum),2,4 )),0) 1 ' 'FROM service' ; Open; DataSet.FieldByName('service_custservicenum').AsString := 'A' FormatFloat('0000',Fields[0].AsInteger); end; end; 為啥當我跑到ADOQuery2.post時就會出現... "ADOQuery2不是在insert或edit的狀態"..... 我是新手...請原諒我的笨問題
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-14 09:06:09 IP:210.64.xxx.xxx 未訂閱
你好 請問你再按下button13之前有先按下Button9嗎?這樣看起來應該是沒有先按下Button9的關係,最好在post之前加一個判斷 if ADOQuery2.statue in [dsEdit, dsInsert] then ADOQuery2.post; 試試看吧!! Pillar Wang
------
Pillar Wang
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-14 09:07:11 IP:210.64.xxx.xxx 未訂閱
你好 請問你再按下button13之前有先按下Button9嗎?這樣看起來應該是沒有先按下Button9的關係,最好在post之前加一個判斷 if ADOQuery2.statue in [dsEdit, dsInsert] then ADOQuery2.post; 試試看吧!! Pillar Wang
------
Pillar Wang
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-14 09:19:56 IP:202.62.xxx.xxx 未訂閱
您好﹗    修改以下紅色處試試﹕
procedure TForm7.Button9Click(Sender: TObject);
begin
  ADOQuery1.Open;
  ADOQuery1.Insert;
  ADOQuery2.Open;
  ADOQuery2.Insert;
end;    procedure TForm7.Button13Click(Sender: TObject);
begin      ADOQuery1.Post;
  ADOQuery2.Post;
 end;    procedure TForm7.ADOQuery2BeforePost(DataSet: TDataSet);
begin
  with ADOQuery4 do          //自動編號
  begin
  Close;
  SQL.Text:='select isnull(convert(int,max(serviced_respondnum)),0)+1 from custservice_detail a,service b '+
            'where a.service_custservicenum=b.service_custservicenum';
  Open;
  ADOQuery2.FieldByName('serviced_respondnum').AsString:=   FormatFloat('0000',Fields[0].AsInteger);
  end;
end;    procedure TForm7.ADOQuery1BeforePost(DataSet: TDataSet);
begin
         //自動編號      with ADOQuery5 do
  begin
  
     Close;
         SQL.Text := 'SELECT ISNULL(CONVERT( INT,SUBSTRING(MAX(service_custservicenum),2,4 )),0)+1 ' +
                  'FROM service' ;
     Open;
     ADOQuery1.FieldByName('service_custservicenum').AsString :=  'A'+ FormatFloat('0000',Fields[0].AsInteger);
  end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
sucm
一般會員


發表:24
回覆:29
積分:10
註冊:2005-01-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-14 22:13:46 IP:61.62.xxx.xxx 未訂閱
我經過以上的修改後..還是一樣說..... 而且他是跑到ADOQuery2.post...就掛了... 不會跑到ADOQuery2BeforePost.... 我是新手...請原諒我的笨問題
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-15 08:55:30 IP:202.62.xxx.xxx 未訂閱
您好﹗    請問您的操作步驟是否正确﹐從程式碼部分來看﹐您需要先按Button9按鈕﹐使ADOQuery1和ADOQuery2進入Insert狀態﹐然后再按Button13按鈕﹐下Post的命令﹐在ADOQuery1和ADOQuery2在Post之前﹐就會触發其BeforePost中的內容﹒    另外請确認您在ADOQuery4和ADOQuery5的SQL查詢語法中是否有正确的值回傳﹖    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Wesly
中階會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-15 11:06:33 IP:218.170.xxx.xxx 未訂閱
感覺上流程式似乎沒有什麼問題,我建議是否把with ADOQuery5 do 先移除看看。而依你所言 而且他是跑到ADOQuery2.post...就掛了... 不會跑到ADOQuery2BeforePost.... 表示在ADOQuery1BeforePost就掛了,去trace看看吧。
sucm
一般會員


發表:24
回覆:29
積分:10
註冊:2005-01-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-15 21:03:55 IP:61.62.xxx.xxx 未訂閱
嗯....ADOQuery1都有正確的存入資料庫.... 是在ADOQuery2才掛的... 忘了一題..我是做master/detail.... ADOQuery1是master....ADOQuery2是detail... service_custservicenum是互相關連的fk... 我是新手...請原諒我的笨問題
cashxin2002
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-16 09:07:12 IP:202.62.xxx.xxx 未訂閱
您好﹗
procedure TForm7.Button9Click(Sender: TObject);
begin
  ADOQuery1.Open;
  ADOQuery1.Insert;
  ADOQuery2.Open;
  ADOQuery2.Insert;
end;    procedure TForm7.Button13Click(Sender: TObject);
begin
  ADOQuery2.Post;
end;    procedure TForm7.ADOQuery2BeforePost(DataSet: TDataSet);
begin
  with ADOQuery4 do          //自動編號
    begin
      Close;
      SQL.Text:='select isnull(convert(int,max(serviced_respondnum)),0)+1 from custservice_detail a,service b '+
            'where a.service_custservicenum=b.service_custservicenum';
      Open;
      ADOQuery2.FieldByName('serviced_respondnum').AsString:=   FormatFloat('0000',Fields[0].AsInteger);
    end;
end;    procedure TForm7.ADOQuery2AfterPost(DataSet: TDataSet);
begin
  ADOQuery1.Post;
end;    procedure TForm7.ADOQuery1BeforePost(DataSet: TDataSet);
begin
  with ADOQuery5 do
    begin
       Close;
       SQL.Text := 'SELECT ISNULL(CONVERT( INT,SUBSTRING(MAX(service_custservicenum),2,4 )),0)+1 ' +
                  'FROM service' ;
     Open;
     ADOQuery1.FieldByName('service_custservicenum').AsString :=  'A'+ FormatFloat('0000',Fields[0].AsInteger);
  end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-05-20 16:01:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!