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

請問我的程式那裡錯了呢???

尚未結案
sun_chih_yen
一般會員


發表:40
回覆:33
積分:13
註冊:2003-10-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-12 00:01:16 IP:211.74.xxx.xxx 未訂閱
以下是我的程式為什麼我只能建立第一筆自動編號後要建第二筆就出現錯誤訊息請問我那裡錯了呢??? procedure TForm1.SpeedButton2Click(Sender: TObject); VAR aaa:string; begin adoQuery1.Close; adoquery1.sql.Clear; adoquery1.SQL.add('select * from 通訊錄 order by 編號 desc'); AAA:=COPY(adoquery1.Fields[0].AsString,2,4); adoquery1.Open; if adoQuery1.isempty then begin adoquery1.Insert; adoquery1.fields[0].AsString:=(aaa); adoquery1.Fields[0].asstring:='F' '0001'; end else begin adoQuery1.insert; aaa:=inttostr((StrToInt(aaa) 1)); adoquery1.Fields[0].asstring:='F' aaa; end
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-12 03:06:48 IP:63.84.xxx.xxx 未訂閱
您好!    將您的程式碼稍改動如下(紅色處):
procedure TForm1.SpeedButton2Click(Sender: TObject);
Var
  aaa, bbb, ccc:string;
  I : Integer;
//以上增加的宣告下面會用到, 請見步驟中的解釋
begin
  adoQuery1.Close; 
  adoquery1.sql.Clear;
  adoquery1.SQL.add('select * from 通訊錄 order by 編號 desc'); 
  adoquery1.Open;
    if  adoQuery1.isempty then
      begin
        adoquery1.Insert;
        adoquery1.fields[0].AsString:=aaa;
        //以上紅色這句應該刪掉, 因為之前的判斷, 如果資料表是空的話, 那這句是要找何筆資料呢?
        adoquery1.fields[0].asstring:='F0001';
        //以上紅色處可直接寫為'F0001'即可
        adoquery1.Post;
        //您還沒有把新增的資料存入資料表中, 所以加上Post
      end
    else
      begin
        aaa := Copy(adoquery1.field[0].asstring,2,4);
        adoQuery1.insert;
        aaa:=inttostr((StrToInt(aaa) 1));
        以上紅色的這句, 比如說字串孌數aaa取得的是'0001', 當使用StrToInt(aaa)轉成數值形態1, 再加上1后得值為2, 所以最后用IntToStr(2)再將其轉回字串形態, 得值為字串形態2, 而不是'0002', 所以要改寫為如下(以上Var處增加的bbb,ccc,I的變數宣告就派上用處了):             
        For I:=1 to Length(aaa) do
          if aaa[I]='0' then
            begin
              bbb := bbb aaa[I];
            end
          else
            begin
              Break;
            end;
        //以上幾句, 主要用作判斷字串變數aaa中第一個值不為'0'的字元之前有幾個'0', 并指定給字串變數bbb
        ccc:= 'F' bbb IntToStr(StrToInt(aaa) 1);
        //以上這句是將字元'F'加上字串變數bbb加上已經增值1的字串變數aaa, 并指定給字串變數ccc
          if Length(ccc)>5 then
            begin
              ccc:= ccc[1] Copy(ccc, Length(ccc)-3,4);
            end;
          //以上的if判斷式主要是針對當從資料表中取出的字串值為'F0009'的特殊情況, 因為加上1之后, 字串值就會出現'F00010'的現象, 所以要去除多余的'0', 直接取字串中的第一個字元'F'和最后四個字元, 并組成新的字串 
        adoquery1.Fields[0].asstring:=ccc;
        //將字串變數ccc指定給新增的Fields[0]做為其值
        adoquery1.post;
        //您還沒有把新增的資料存入資料表中, 所以加上Post
      end;
end;    end.
參考看看! P.S 感謝mike519兄的查証﹗ 如上程式碼此句已修正﹒ <><>===================== 努力,相信會獲得美麗! 忻晟 發表人 -
------
忻晟
mike519
一般會員


發表:2
回覆:6
積分:11
註冊:2003-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-12 09:49:52 IP:211.75.xxx.xxx 未訂閱
這一段有點問題... : : adoquery1.SQL.add('select * from 通訊錄 order by 編號 desc'); AAA:=COPY(adoquery1.Fields[0].AsString,2,4); adoquery1.Open; : : 取得 AAA 時, adoquery1 尚未 Open, 那每次取的 AAA 會是什麼呢 ? 另外, 建議不要這樣用... : : adoQuery1.insert; aaa:=inttostr((StrToInt(aaa) 1)); adoquery1.Fields[0].asstring:='F' aaa; : : 改成 aaa := Format('%4.4d', [StrToInt(aaa) 1]); 這樣才能保證格式正確. 當然超過 9999 的狀況必須另外檢查 !
sun_chih_yen
一般會員


發表:40
回覆:33
積分:13
註冊:2003-10-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-12 12:23:04 IP:203.70.xxx.xxx 未訂閱
終於可以了太感謝了請問這句內的Format('%4.4d',意思是什麼 aaa := Format('%4.4d', [StrToInt(aaa) 1]); 太感謝了~~
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-12 13:01:47 IP:63.84.xxx.xxx 未訂閱
您好!    Format('%4.4d': 格式化StrToInt(aaa) 1為四位(****)字串形態值. 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sun_chih_yen
一般會員


發表:40
回覆:33
積分:13
註冊:2003-10-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-12 15:46:39 IP:203.70.xxx.xxx 未訂閱
Format('%4.4d': 格式化StrToInt(aaa) 1為四位(****)字串形態值 那麼我要把格式化StrToInt(aaa) 1為六位(******)字串形態值不就要更改 format('%6.6':嗎 我的觀念有錯嗎???
cashxin2002
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-12 18:35:03 IP:63.84.xxx.xxx 未訂閱
引言: Format('%4.4d': 格式化StrToInt(aaa) 1為四位(****)字串形態值 那麼我要把格式化StrToInt(aaa) 1為六位(******)字串形態值不就要更改 format('%6.6':嗎 我的觀念有錯嗎???
您好﹗ 這里記得要加上d來表示整數形態﹐如下﹕ Format('%6.6d', [StrToInt(aaa) 1]); 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sun_chih_yen
一般會員


發表:40
回覆:33
積分:13
註冊:2003-10-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-12 21:05:29 IP:203.70.xxx.xxx 未訂閱
謝謝~~
系統時間:2024-11-24 18:50:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!