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

關於兩個Access資料表存取的問題

尚未結案
jimm
一般會員


發表:10
回覆:9
積分:3
註冊:2004-09-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-22 15:47:33 IP:219.84.xxx.xxx 未訂閱
想請教一下我現在用兩個DBEdit...分別為DBEdit1 & DBEdit2 基本上兩個DBEdit儲存後,會存入ADOTable1 那如果說我現在想問的是,我在DBEdit1 內輸入一組編號 按下Enter後..它可以先到ADOTable2裡面找是否有已存在的資料 如果有找到相關的,會自動顯示在DBEdit2上Show出 不知各位是否了解我的意思? 麻煩幫忙一下解決這個疑惑....謝謝
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-22 16:50:42 IP:202.62.xxx.xxx 未訂閱
您好﹗    個人覺得不使用資料感知元件﹐而改用Edit元件配合程式碼自行控制資料的顯示和存取會方便一些﹐以下為參考﹕
在Edit1的OnKeyPress事件中
begin
  if Key = #13 then
    begin  
      if ADOTable2.Locate('欄位名', Edit1.Text, [loCaseInsensitive]) then
        begin
          Edit2.Text := ADOTable2.Fields.Fields[欄位索引號].AsString;
        end
      else
        begin
          ShowMessage('資料庫中無此筆資料');
          Edit2.SetFocus;
        end;
    end;
end;    在ADOTable1的BeforePost事件中﹕
begin
  ADOTable1.FieldByName('欄位名稱').AsString := Edit1.Text;
  ADOTable1.FieldByName('欄位名稱').AsString := Edit2.Text;
end;
========================= 大病初愈﹐休養調整中... =========================
------
忻晟
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-22 21:40:53 IP:220.134.xxx.xxx 未訂閱
Procedure TForm1.DBEdit1KeyPress(Sender: TObject; Var Key: Char); Begin If key = #13 Then Begin If Table2.Locate(FieldName,Table1.FieldByName('Field1').AsString, [loCaseInsensitive]) Then Table1.FieldByName('Field2').AsString := Table2.FieldByName('Field2').AsString; End; End; 如cashxin2002兄所說,我也覺得你的需求或許利用EDIT來作會在控制上及撰寫上比較方便. ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
jimm
一般會員


發表:10
回覆:9
積分:3
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-28 14:00:51 IP:219.84.xxx.xxx 未訂閱
我想在請問一下,如果欄位名稱要使用中文的話 該加些什麼??,我都會出現如下面的錯誤 [Error] AccinAU.pas(504): Illegal character in input file: '客' ($ABC8) 煩請指教,3Q
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-28 14:09:05 IP:202.62.xxx.xxx 未訂閱
您好﹗    一般來說﹐使用中文的欄位名也是可行的﹐只是不建議使用﹐以防止程式在其它不具有中文系統的電腦中執行時的錯誤﹐盡量使用英文命名是比較兼容的途徑﹒ 如果中文的欄位名是具有空格等現象﹐可在欄位名左右加上[欄位名]========================= 大病初愈﹐休養調整中... =========================
------
忻晟
jimm
一般會員


發表:10
回覆:9
積分:3
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-28 18:23:48 IP:219.84.xxx.xxx 未訂閱
if tbCUST.Locate([客戶編號],edSearch.Text,[]) then 請問這樣寫有錯嗎??還是會出現以下的情況說 [Error] AccOKAU.pas(88): Illegal character in input file: '客' ($ABC8) 會用中文的原因是因為我會用到DBGrid 此物件 但是在Access的欄位名打英文的話,在DBGrid的最上方標題也是會出現英文 並不曉得該如何去修改成中文,麻煩指導一下,謝謝
cashxin2002
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-28 18:49:13 IP:202.62.xxx.xxx 未訂閱
您好﹗    小弟所指的在欄位名左右加上[]是針對SQL語法而言﹐而不是使用在Locate方法上﹐不好意思﹐有些誤導您了﹒ 建議您使用英文來命名欄位名﹒ 如下方法可在DBGrid顯示時將其欄位名顯示為中文﹒ 1. 資料集元件(如ADOTable﹔ADOQuery等)正常連接上資料庫﹐雙擊此資料庫元件﹐開啟其欄位編輯器﹒ 2. 在欄位編輯器中點擊滑鼠右鍵﹐選擇Add all Fields﹐加入所有的欄位名﹐在此處也可使用Add Fields來選擇加入欄位名﹐加入的欄位名會顯示﹐不加入的則不會顯示﹒ 3. 在欄位編輯器中選擇任一個欄位名﹐然后在其對應的DisplayLabel屬性中輸入此欄位的中文名﹒ 4. Open資料集元件﹐即可發現對應的欄位標題處顯示剛才在DisplayLabel屬性中輸入的中文內容﹒ ========================= 大病初愈﹐休養調整中... =========================
------
忻晟
系統時間:2024-11-25 18:27:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!