線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1339
推到 Plurk!
推到 Facebook!

從資料庫查詢出錯誤編號,再重新編號(自動編號)

尚未結案
wrspider
一般會員


發表:6
回覆:5
積分:2
註冊:2003-04-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-01 22:20:21 IP:218.170.xxx.xxx 未訂閱
因圖書室妹妹建檔錯誤造成所有書架上的書目要重新編號建檔,資料庫(MSSQL),資料表(cupboard)重點在seqno(第幾排)及seqnum(第幾號)兩個欄位,我想先找出 第幾排及第幾號的範圍,並用DBGRID show出來,想使用自動編號的方式更新剛才找出的書號(範圍為1~xxxx視查詢出來的筆數),我的問題是卡在已查詢到了,可是如和重新編號 procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from cupboard where'); ADOQuery1.SQL.Add('and seqno = :FSeqno'); ADOQuery1.SQL.Add('and seqnum between :F1 and :F2 ORDER BY seqnum' ); ADOQuery1.Parameters.ParamByName('FSeqno').Value:=Edit3.Text; ADOQuery1.Parameters.ParamByName('F1').Value:=Edit4.Text; ADOQuery1.Parameters.ParamByName('F2').Value:=Edit5.Text; ADOQuery1.Open; if ADOQuery1.IsEmpty then begin ShowMessage('沒有你想要找的資料'); end; end;
johnny2212
初階會員


發表:34
回覆:65
積分:39
註冊:2003-04-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-02 09:01:50 IP:61.226.xxx.xxx 未訂閱
我就以’001’改成’A001’為例: 1 先在ADOQuery1裡建好DataSet(ADOQuery1的SQL內加入'select * from cupboard, 按右鍵 add all fields) 2 執行你所敘述 SQL Statement 3 再執行下列的敘述 while not ADOQuery1.Eof do begin ADOQuery1.edit; ADOQuery1seqnum.Value:='A' ADOQuery1seqnum.Value; ADOQuery1.Post; ADOQuery1.Next; end; 4 若要更改複雜,修改程式即可
Fishman
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-02 09:54:29 IP:210.65.xxx.xxx 未訂閱
Hi:    將 johnny2212 大大的程式稍微修改一下,即可達到自動編號功能
NextNum := 最號一號;
while not ADOQuery1.Eof do
    begin
        Inc(NextNum);
        ADOQuery1.edit;
        ADOQuery1.seqnum.Value := NextNum;
        ADOQuery1.Post;
        ADOQuery1.Next;
    end;
end;
-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
wrspider
一般會員


發表:6
回覆:5
積分:2
註冊:2003-04-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-02 23:07:38 IP:218.170.xxx.xxx 未訂閱
謝謝,johnny2212及Fishman大大 小弟有一個地方不解,為何這樣會形成自動編號的狀況 ???? 可否講解一下??? ----------------------------------------------- NextNum := 最號一號; while not ADOQuery1.Eof do     begin         Inc(NextNum);         ADOQuery1.edit;         ADOQuery1.seqnum.Value := NextNum;         ADOQuery1.Post;         ADOQuery1.Next;     end; end; -------------------------------------------- 
Fishman
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-03 08:24:24 IP:210.65.xxx.xxx 未訂閱
Hi:    關鍵在 Inc(NextNum) 這一行指令,這樣的寫法相當於 NextNum := NextNum + 1,所以迴圈每 Loop 一次,NextNum 就會遞增 1 而達到自動編號的功能     -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
系統時間:2024-11-25 16:18:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!