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

用sysbase,delphi

尚未結案
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-14 17:17:09 IP:203.69.xxx.xxx 未訂閱
用sysbase,delphi query.bookmark是一個指標嗎?,用時要汪意什麼嗎?
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-14 17:35:42 IP:202.39.xxx.xxx 未訂閱
1.是的, TBookmark 是指標, 見宣告: type TBookmark = Pointer; 2.用法如下: TTable.GetBookmark; // 記錄 TTable 現在的 Cursor 在哪個位置 TTable.GotoBookmark(Bookmark); // 將 TTable 的 Cursor 移到 Bookmark 這個位置 TTable.FreeBookmark(Bookmark); // 將 TTable 的 Bookmark 這個位置 Free 掉    --- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-14 17:47:30 IP:203.69.xxx.xxx 未訂閱
引言: 1.是的, TBookmark 是指標, 見宣告: type TBookmark = Pointer; 2.用法如下: TTable.GetBookmark; // 記錄 TTable 現在的 Cursor 在哪個位置 TTable.GotoBookmark(Bookmark); // 將 TTable 的 Cursor 移到 Bookmark 這個位置 TTable.FreeBookmark(Bookmark); // 將 TTable 的 Bookmark 這個位置 Free 掉 --- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> 是用query.bookmark,是否也是如此做 Bookmark 這個位置 Free 掉,的功能是結省memory嗎?
hagar
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-14 17:54:48 IP:202.39.xxx.xxx 未訂閱
1.是的, TQuery 也可以用 Bookmark 2.是的, FreeBookmark 是避免造成 memory leak    --- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-14 18:07:37 IP:203.69.xxx.xxx 未訂閱
引言: 1.是的, TQuery 也可以用 Bookmark 2.是的, FreeBookmark 是避免造成 memory leak --- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> T1:是tquery T1.GotoBookmark(Bookmark); 出現incompatible type string and pointer,不曉是那有問題?
hagar
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-14 18:12:32 IP:202.39.xxx.xxx 未訂閱
您完整的程式碼為何?    --- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-14 18:21:28 IP:203.69.xxx.xxx 未訂閱
引言: 您完整的程式碼為何? --- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> T1.First; with T1 do while not eof do begin dq3.GetBookmark(Bookmark); xxxxxx xxxxx dq3.GotoBookmark(Bookmark); xxx next; end;
hagar
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-14 21:56:34 IP:202.39.xxx.xxx 未訂閱
您的 Bookmark 變數是怎麼宣告的? 是 var Bookmark: TBookmark; 嗎?    --- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-15 09:02:08 IP:203.69.xxx.xxx 未訂閱
引言: 您的 Bookmark 變數是怎麼宣告的? 是 var Bookmark: TBookmark; 嗎? --- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> 是
changchuan
一般會員


發表:7
回覆:12
積分:3
註冊:2003-10-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-15 10:48:45 IP:163.29.xxx.xxx 未訂閱
經小弟實作結果tquery果然不能用bookmark,紀錄recno也不行 因為更新後全走樣了...... 查過三本書,tquery沒介紹getbookmark的方法,Ttable有提到, 但是沒有用法(真爛).........目前只知:    可以先紀錄某個key值,再用locate找回來,不過我相信應有更好 的方式,爛vb都不用如此.更何況delphi ,對吧  有沒有好點的方法?,我也想知道...因為同樣問題,不再另屁議題
------
~*呂政全*~
hagar
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-15 16:26:01 IP:202.39.xxx.xxx 未訂閱
小弟試 TQuery 可以使用 TBookmark 的功能. 那個 dq3 的變數是指什麼? 大概的使用方式:
var
  bk: TBookmark;
begin
  bk := Query1.GetBookmark;
  try
    // do something
  finally
    Query1.GotoBookmark(bk);
    Query1.FreeBookmark(bk);
  end;
end;
--- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-16 10:04:30 IP:203.69.xxx.xxx 未訂閱
引言: 小弟試 TQuery 可以使用 TBookmark 的功能. 那個 dq3 的變數是指什麼? 大概的使用方式:
var
  bk: TBookmark;
begin
  bk := Query1.GetBookmark;
  try
    // do something
  finally
    Query1.GotoBookmark(bk);
    Query1.FreeBookmark(bk);
  end;
end;
--- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> DQ3是T1:TQUERY;我寫錯了.原程式為如下 T1.First; with T1 do while not eof do begin XXXXXX if i=500 then begin i:=0; bk:=T1.GetBookmark; ******* ****** T1.GotoBookmark(bk); T1.FreeBookmark(bk); end; T1.GetBookmark(Bookmark); xxxxxx xxxxx T1.GotoBookmark(Bookmark); xxx next; END; end; 執行到 T1.GotoBookmark(bk);會出現could not found record,不曉是什麼原因, 在執行此段之前有執行過T1,類似此迴圈,只是沒用Bookmark
hagar
版主


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-10-16 17:39:21 IP:202.39.xxx.xxx 未訂閱
begin
  T1.First;
  with T1 do 
    while not eof do begin
      //XXXXXX
      if i=500 then begin
      i:=0;
      bk:=T1.GetBookmark;
      //*******
      //******  
      T1.GotoBookmark(bk);
      T1.FreeBookmark(bk);
    end;
  T1.GetBookmark(Bookmark); // 這行的 Bookmark 已經被 Free 了(如果 while 這個迴圈有執行的話)?或 Bookmark 還未指定(如果 while 迴圈沒有執行的話)?
  //xxxxxx
  //xxxxx 
  T1.GotoBookmark(Bookmark);
  //xxx 
  next; // 這行的 Next 會造成無窮迴圈吧?!
  END;
--- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-10-17 13:04:26 IP:203.69.xxx.xxx 未訂閱
引言:
begin
  T1.First;
  with T1 do 
    while not eof do begin
      //XXXXXX
      if i=500 then begin
      i:=0;
      bk:=T1.GetBookmark;
      //*******
      //******  
      T1.GotoBookmark(bk);
      T1.FreeBookmark(bk);
    end;
  T1.GetBookmark(Bookmark); // 這行的 Bookmark 已經被 Free 了(如果 while 這個迴圈有執行的話)?或 Bookmark 還未指定(如果 while 迴圈沒有執行的話)?
  //xxxxxx
  //xxxxx 
  T1.GotoBookmark(Bookmark);
  //xxx 
  next; // 這行的 Next 會造成無窮迴圈吧?!
  END;
--- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> next這行是要讀T1下一筆的,沒用NEXT要不知如何讀下一筆 T1.FreeBookmark(bk);這行拿掉還是一樣,不曉為何會如此
hagar
版主


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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-10-17 13:21:59 IP:202.39.xxx.xxx 未訂閱
Sorry! 看錯了!  另外, 可以把您省略的部份貼出來嗎? 您想要做到什麼樣的功能? --- 歡迎光臨 >
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-10-17 14:25:19 IP:203.69.xxx.xxx 未訂閱
引言: Sorry! 看錯了! 另外, 可以把您省略的部份貼出來嗎? 您想要做到什麼樣的功能? --- 歡迎光臨 > < face="Verdana, Arial, Helvetica"> begin T1.First; with T1 do while not eof do begin //XXXXXX if i=500 then begin i:=0; bk:=T1.GetBookmark; ******* 因執行此行會將T1的指標移至第一筆,所以要記錄目前的指標在那 ****** T1.GotoBookmark(bk); end; T1.GetBookmark(bk); // 這行的 Bookmark 已經被 Free 了(如果 while 這個迴圈有執行的話)?或 Bookmark 還未指定(如果 while 迴圈沒有執行的話)? //xxxxxx //xxxxx //xxx next; END;
hagar
版主


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

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-10-17 14:39:44 IP:202.39.xxx.xxx 未訂閱
哎呀! 小弟我全亂了! 所以回答亂了. 請問一下, class="code"> begin T1.First; with T1 do while not eof do begin XXXXXX if i = 500 then begin i := 0; bk := T1.GetBookmark; ******* ****** T1.GotoBookmark(bk); T1.FreeBookmark(bk); end; T1.GetBookmark(Bookmark); // 這個 Bookmark 的值從哪取得的?因為未指定, 所以會有找不到 Record not found 的錯. xxxxxx xxxxx T1.GotoBookmark(Bookmark); xxx next; END; end; --- 歡迎光臨 KTop 研究院
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-10-17 14:48:18 IP:203.69.xxx.xxx 未訂閱
引言: 哎呀! 小弟我全亂了! 所以回答亂了. 請問一下, class="code"> begin T1.First; with T1 do while not eof do begin XXXXXX if i = 500 then begin i := 0; bk := T1.GetBookmark; ******* ****** T1.GotoBookmark(bk); T1.FreeBookmark(bk); end; T1.GetBookmark(Bookmark); // 這個 Bookmark 的值從哪取得的?因為未指定, 所以會有找不到 Record not found 的錯. xxxxxx xxxxx T1.GotoBookmark(Bookmark); xxx next; END; end; --- 歡迎光臨 KTop 研究院 < face="Verdana, Arial, Helvetica"> 我把 bk指定為 bk:TBookmark; begin T1.First; with T1 do while not eof do begin //XXXXXX if i=500 then begin i:=0; T1.GetBookmark(bk); ******* 因執行此行會將T1的指標移至第一筆,所以要記錄目前的指標在那 ****** T1.GotoBookmark(bk); end; //xxxxxx //xxxxx //xxx next; END;
changchuan
一般會員


發表:7
回覆:12
積分:3
註冊:2003-10-07

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-10-17 15:08:49 IP:163.29.xxx.xxx 未訂閱
根據hagar所提到,小弟試了一下 var bk:tbookmark; begin bk :=adoquery1.GetBookmark; //紀錄指標 ........ adoquery1.GotoBookmark(bk); //返回指標 end; 這樣是可以的,有那麼複雜嗎?
------
~*呂政全*~
系統時間:2024-05-19 15:23:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!