全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5203
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

當輸入相同資料時, 跳出一個警告視窗 ?

尚未結案
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-13 23:48:09 IP:61.13.xxx.xxx 未訂閱
請問當儲存"身份證字號","車牌號碼","車證號碼","學號"完後 如果是儲存到相同的話 跳出一個警告視窗 說: 這組身份證字號已被使用 請從新輸入一次! 另外 可不可以要求使用者最少要輸入這三項其中一項 因為如果儲存一筆 "空" 的資料就沒有意義  請問 這要如何做出來啊?  抱歉一直麻煩各位 因為小弟在一些delphi的書中 並沒有找到  相關的解說 所以在此提出來 拜託各位大大的幫忙 THANK U VERY MUCH    我的主form 圖:
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-14 08:11:54 IP:61.155.xxx.xxx 未訂閱
您可以首先判断这3个栏目不为空,然后在需要保存的时候来检测数据库中属否有相同的纪录,如果有则提示!
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-15 02:18:38 IP:61.16.xxx.xxx 未訂閱
Sorry sos_admin大大你可以再說的清楚一點嗎????? 抱歉
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-15 07:32:39 IP:211.76.xxx.xxx 未訂閱
1. 建議您不要用dbedit感知元件, 因為它一輸入就己存檔, 無從再行處理, 您可以先用edit, 然後行檢查後, 再進行存檔動作 2. 您可以先建立以 "身分證字號" 以主索引鍵值, 然後以此進行搜尋, 當然前提是身分證使用者一定要輸入, 否則第二次輸入的索引會重複, 確定沒這個身分後再行存檔 3. 要判別三者有一的方法, 偷機的方法是 "車牌號碼" "車證號碼" "學號" <> '' (*空白*) 4. 標準寫法是用 if "車牌號碼" ='' and "車證號碼"='' and "學號"<>'' then 儲存 elseif "車牌號碼" ='' and "車證號碼"<>'' and "學號"='' then 儲存 elseif "車牌號碼" <>'' and "車證號碼"='' and "學號"='' then 儲存 : : else showmessage('之一不能空白'); end 方法很多, 多想想就會有更好的辦法 努力會更接近成功
------
努力會更接近成功
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-15 09:21:38 IP:61.220.xxx.xxx 未訂閱
可以在儲存前判斷 if (dbedit1.text='') and (dbedit2.text='') and (dbedit3.text='') then showmessage('不可全為空白') else 儲存 ; 這樣就可以了 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
changchuan
一般會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-15 11:18:10 IP:163.29.xxx.xxx 未訂閱
在實作上,等到全部資料輸入好了再彈出視窗'你的資料重複'那不是昏倒?, 等於白打了,所以最好在輸入身分證字號後馬上告訴使用者,如果原來設計 不變動的話,我的做法是: 建立一個Tedit,當使用者按[新增]時,focus指向該Tedit,在輸入畢後以 locate搜尋資料庫,找出有無相同資料,有就會直接秀在螢幕上,沒重複的話 才 append 而不是一按[新增]就append  至於code怎麼寫?你們比我還瞭解€€~ 嘿..... 參考參考.... 程式寫錯可以改,想法最重要
------
~*呂政全*~
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-15 20:24:04 IP:218.163.xxx.xxx 未訂閱
procedure TForm1.Button3Click(Sender: TObject);
begin
//檢測輸入的身份證字號是否重複
 if ADOTable1.Locate('身份證字號',DBEdit3.Text,[loCaseInsensitive]) then
 ShowMessage('身份證字號已存在,請不要重複輸入!')
end; 
網海無涯,學無止境!
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-15 22:34:49 IP:61.13.xxx.xxx 未訂閱
qoo1234你好 以下的指令應該是放入我的儲存botton 內吧! 但是我放進去後 沒什麼作用耶 它還是可以存檔 只是會跑出一個 ShowMessage('身份證字號已存在,請不要重複輸入!') //檢測輸入的身份證字號是否重複 if ADOTable1.Locate('身份證字號',DBEdit3.Text,[loCaseInsensitive]) then ShowMessage('身份證字號已存在,請不要重複輸入!')
hagar
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-15 22:50:50 IP:202.39.xxx.xxx 未訂閱
在 post 動作之前下 Abort 指令, 中止存檔動作    --- 歡迎光臨 KTop 研究院
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-15 23:56:54 IP:61.13.xxx.xxx 未訂閱
各位大大 我看了許多發表的文章後 我覺得changchuan所提的方式還不錯 在輸入身分證字號後馬上告訴使用者 '你的資料重複' 而不是按儲存後才告知 我自己有試著去做 但是程式再run時 我按了儲存後 就發生了錯誤 錯誤訊息如下圖 另外 以下是我的程式碼  麻煩各位大大幫我看看哪裡出了問題    在ADOTable1裡Events的(BeforePost, AfterInsert ) 下:    procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet); begin if (ADOTable1.State in [dsInsert, dsEdit]) and (ADOTable1.Locate('身份證字號',DBEdit3.Text,[]))then    begin      messagedlg('身份證字號已存在,請不要重複輸入!',mtWarning,[mbOK],0);      DBEdit3.SetFocus;      Abort;    end; end;    procedure TForm1.ADOTable1AfterInsert(DataSet: TDataSet); begin DBEdit3.SetFocus; end;    在儲存的botton內:    procedure TForm1.ToolButton7Click(Sender: TObject); begin ToolButton1.Enabled:=true; ToolButton2.Enabled:=true; ToolButton3.Enabled:=true; ToolButton4.Enabled:=true; if CkIDNum(DBEdit3.Text)//這是檢查身份證字號是否有錯的函數 then  begin    CanEdit := True;    IF ADOTable1.State in [dsEdit,dsInsert] Then    ADOTable1.Post;    showmessage('資料已儲存');  end; end;
cxh17895
初階會員


發表:13
回覆:37
積分:25
註冊:2003-03-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-16 11:53:39 IP:210.68.xxx.xxx 未訂閱
看了這麼多人,回覆,我也來試試看好了!寫錯了,大家就當作沒看到好了!(處女秀喔) 依照jasonchen613 要求,必須在"儲存"這個 button 寫以下的程式 procedure TForm1.Button3Click(Sender: TObject); begin if 車牌號碼='' and 車證號碼='' and 學號='' then //三者均空 '顯示訊息 showmessage('不可全為空白') end; //-------------------------------- //還有在這個地方是檢查重覆的.... //這個產生方法是 adotable 點兩二下,再點field裡 選Object Inspector-->OnValidate //以下是範例,我是用 bde,若用 ado 請再自行更改! procedure TF_MAIN.TODOTable1mail_addValidate(Sender: TField); var tmpqry : tQuery; //這是用動態產生,所以要這樣寫 begin tmpqry := TQuery.Create(Application); tmpqry.DataBaseName := "mydb" //這部份屬bde 的設定,你ado就參考一下,見招拆招 tmpqry.close; tmpqry.sql.add('select * from tablename'); tmpqry.sql.add('where車牌號碼= :cardid '); tmpqry.ParamByName('cardid').asstring := sender.asstring; tmpqry.prepare; tmpqry.open; if tmpqry.reccount >0 then begin showmessage('該號以經存在,請重新輸入'); Sender.focusControl; //仍停在此欄位上不接受此值 end; tmpqry.free //用完要解除, end;
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-16 16:43:35 IP:61.16.xxx.xxx 未訂閱
Sorry 小弟在此附加一點 我是用ADOConnections 對Access做連結的
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-10-16 17:32:02 IP:61.16.xxx.xxx 未訂閱
小弟有測試一下if ADOTable1.Locate('身份證字號',DBEdit3.Text,[loCaseInsensitive]) then begin ShowMessage('身份證字號已存在,請不要重複輸入!'); Abort; end; 這個程式碼 發現了一個bug 就是如果Locate找出了輸入進去後的身份字號後 它是會ShowMessage('身份證字號已存在,請不要重複輸入!'); 但是 畫面會切換到另外一筆(譬如說我在第5筆資料位置以建立了a1234的身份證 字號 之後在建立一筆新的資料時 輸入了a1234後 跳出了"身份證字號已存 在,請不要重複輸入!"的警告視窗 但是 警告視窗後方的主畫面卻切換到 第5筆資料身份證字號欄位的位置) 不知道這個bug要怎麼去除啊? 以下是我儲存botton內的程式碼: procedure TForm1.ToolButton7Click(Sender: TObject); begin ToolButton1.Enabled:=true; ToolButton2.Enabled:=true; ToolButton3.Enabled:=true; ToolButton4.Enabled:=true; if (dbedit4.text='') then begin showmessage('你的姓名還未填'); Abort; end; if ADOTable1.Locate('身份證字號',DBEdit3.Text,[loCaseInsensitive]) then begin ShowMessage('身份證字號已存在,請不要重複輸入!'); Abort; end; if CkIDNum(DBEdit3.Text) then begin CanEdit := True; IF ADOTable1.State in [dsEdit,dsInsert] Then ADOTable1.Post; showmessage('資料已儲存'); end; end;
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-10-17 01:16:39 IP:218.163.xxx.xxx 未訂閱
jasonchen613 大大 ,這是你的作業喔~老師說要寫到這樣嗎?    網海無涯,學無止境!
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-10-17 10:53:57 IP:140.129.xxx.xxx 未訂閱
沒錯 這是我學校的專題 現在我的程式正在做test中 我發現了許多的bug 因此 現在正在排除bug 中 非常感謝各位大大 的幫助
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-10-17 14:20:31 IP:61.13.xxx.xxx 未訂閱
呵呵 順便跟大家說一下 我們老師跟我們說了 白箱跟黑箱的測試 白箱是指個人的測試 程式是你所設計的 所以每個細節 你都很清楚 你測試時 需測試每以個指令 迴圈 看看有沒有bug 如果沒有 你的程式就會減少 70% ~ 80% 的錯誤 剩下的錯誤 就要用黑箱測試 黑箱測試 是指讓別人測試你的程式 因為你自己設計的程式有些地方是錯誤的 只是你自己並不知道 因為以你的觀點認為是對的 所以這時 就要讓別人測試 別在測試時 會用亂數輸入進去 如@!$%^HFhdhgdgh一些奇怪的符號 輸入進去 看你的電腦會不會當機 另外 還可一些軟體進行測試 如果你做了以上這兩項 的測試後 這樣你的軟體就會 非常Perfect了 我目前正在做白箱測試 哀 沒想到我的bug 還滿多的ㄋ
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-10-17 14:25:31 IP:218.163.xxx.xxx 未訂閱
引言: 呵呵 順便跟大家說一下 我們老師跟我們說了 白箱跟黑箱的測試 白箱是指個人的測試 程式是你所設計的 所以每個細節 你都很清楚 你測試時 需測試每以個指令 迴圈 看看有沒有bug 如果沒有 你的程式就會減少 70% ~ 80% 的錯誤 剩下的錯誤 就要用黑箱測試 黑箱測試 是指讓別人測試你的程式 因為你自己設計的程式有些地方是錯誤的 只是你自己並不知道 因為以你的觀點認為是對的 所以這時 就要讓別人測試 別在測試時 會用亂數輸入進去 如@!$%^HFhdhgdgh一些奇怪的符號 輸入進去 看你的電腦會不會當機 另外 還可一些軟體進行測試 如果你做了以上這兩項 的測試後 這樣你的軟體就會 非常Perfect了 我目前正在做白箱測試 哀 沒想到我的bug 還滿多的ㄋ
根據「[url="http://delphi.ktop.com.tw/pop_profile.asp?mode=display&id=3241"]包子 神[/url]」官方說法:多寫Bug程式,是一定要的拉! 網海無涯,學無止境!
changchuan
一般會員


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

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-10-17 16:28:27 IP:163.29.xxx.xxx 未訂閱
你好.. 使用TDBEDIT輸入,再用LOCATE來搜尋,那保證有重複的資料 好比你輸入ABC 再問 >>有人輸入過ABC嗎? 當然有~就是你啊 改用小弟前面提過的方式吧,多放一個 >
------
~*呂政全*~
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-10-18 01:49:30 IP:61.13.xxx.xxx 未訂閱
恩 可是 這樣使用者在使用上不就滿麻煩的 輸入一次生份證字號時 還必須搜尋看看有沒有重複的資料 其實我想要對"身份證字號","車牌號碼", "車證號碼","學號" 做一些看看有沒有重複資料的判斷 並不是只有 "身份證字號"而已 有沒有其他的發法可以解決重複資料的判斷問題啊? 麻煩各位了
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-10-18 10:28:10 IP:211.76.xxx.xxx 未訂閱
0. 不要用資料感知元件, 因為它會直接寫入資料庫, locate會找到自己, 如果堅持要用dbedit那畫面上的”存檔”要作什麼用? 1."車牌號碼","車證號碼","學號"全部改用Tedit(作為暫存用,當使用者按”存檔”驗證後才寫入一筆資料) 2."車牌號碼","車證號碼","學號"全部建立索引 3."車牌號碼","車證號碼","學號"全部在Tedit onExit 內執行locate, 如果存 在的話,則產生一個例外 4. 然後秀出一個錯誤訊息表示資料重複 5. "車牌號碼".setfocus 請使用者修改或取消登錄 6. 你也可以在”存檔”按下時再一次找尋三個欄位是否重複,再決定要不要寫入資料庫 7. 以上的觀念得自dbaseIII , 我在寫Clipper, foxpro, delphi都是這樣處理的 努力會更接近成功
------
努力會更接近成功
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-10-18 17:07:57 IP:61.13.xxx.xxx 未訂閱
恩 想請問一下 是不是全部的欄位都要改成 Tedit啊? 還是只有 "車牌號碼","車證號碼","學號","身份證字號"這四項改 另外 如果我只改這四項的話 那麼要如何瀏覽啊? 我的上一頁 下一頁 是寫成 ADOTable1.Prior; 和 ADOTable.next; 如果用Tedit的欄位話 那麼我是不是還要多加一個TTable物件啊? 我用ADOTable物件的原因 是因為 我的資料庫是用access建的 有點不太了解 sorry 另外 我再多問一點 Find這個搜尋指令 是不是只能用於Table啊? 可以用在ADOTable嗎? 如:if ADOTable1.FindKey([ADOTable1.FieldByName('身份證字號').AsInteger])then begin ShowMessage('身份證字號已存在,請不要重複輸入!'); DBEdit3.SetFocus; Abort; end; 還是ADOTable只能用Locate搜尋
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-10-18 18:17:23 IP:211.76.xxx.xxx 未訂閱
您好 若您堅持要用資料感知元件 那你LOCATE就不能用同一ㄍADOTable1 您只要利用另一ㄍADOTable2做LOCATE便可 至於ADOTable似乎並無findkey
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-10-18 18:25:12 IP:211.76.xxx.xxx 未訂閱
其實你過於注意技術上的探討,而忽略了許多根本的問題 1. 就算你全用Tedit,在上下一筆之間,仍可用edit1.text := ADOTable1.FieldByName('身份證字號').AsInteger 來取得 ,不需要再加Table 2.用Findkey, filter或locate在Adotable都可以,取決於你的需要而定,但個人習慣用locate 個人有興趣的是以下的問題:如果有發停車證的話,那只要檢查停車證號為唯一即可,因為可能同一個身分證字號會有二個以上的停車證號,故檢查身分證字號重複並無意義,至於車牌也只是僅供參考,會失誤僅是輸入錯誤, 建議上是在開發程式前要準備功課,比如實用上的問題,其次是使用者介面,怎麼做才能讓使用者方便,最後才考慮程式能否寫得出來,否則回頭才來檢討,可能會浪費更多的時間. 努力會更接近成功
------
努力會更接近成功
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-10-18 23:58:13 IP:211.76.xxx.xxx 未訂閱
引言: 1. 建議您不要用dbedit感知元件, 因為它一輸入就己存檔, 無從再行處理, 您可以先用edit, 然後行檢查後, 再進行存檔動作
抬個槓,並不一定一輸入就存檔唷... 如果用的是tquery元件就不是喔... tquery還有個叫做cacheupdate的東東喔, 就算用ttable,如果沒有執行post,applyupdate都還是可以cancel回來的唷... 1.可以先在資料表中確定單一鍵值的欄位,例如車牌號碼 2.判斷dataset的state, 如果是dsedit,那麼就不讓這個唯一鍵值可修改, 如果是dsinsert,那麼就在dataset的beforepost前判斷是否有重複值 如果是bde類的dataset,可以判斷bde回傳的錯誤訊息來攔截後自行發出錯誤訊息, 如果是interbase/firebird,請參考小弟的小小心得 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34607 如果是mssql server,可以先設定好關聯,跟interbase/firebird的設定方式很類似... 3.原則上可以區分為前端處理與資料庫內處理... 4.dbedit,dbgrid應該不是洪水猛獸吧,畢竟borland不會拿石頭砸自己的腳... 發表人 - hahalin 於 2003/10/19 00:06:02
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#25 引用回覆 回覆 發表時間:2003-10-19 00:20:28 IP:211.76.xxx.xxx 未訂閱
引言: 0. 不要用資料感知元件, 因為它會直接寫入資料庫, locate會找到自己, 如果堅持要用dbedit那畫面上的”存檔”要作什麼用? 1."車牌號碼","車證號碼","學號"全部改用Tedit(作為暫存用,當使用者按”存檔”驗證後才寫入一筆資料) 2."車牌號碼","車證號碼","學號"全部建立索引 3."車牌號碼","車證號碼","學號"全部在Tedit onExit 內執行locate, 如果存 在的話,則產生一個例外 4. 然後秀出一個錯誤訊息表示資料重複 5. "車牌號碼".setfocus 請使用者修改或取消登錄 6. 你也可以在”存檔”按下時再一次找尋三個欄位是否重複,再決定要不要寫入資料庫 7. 以上的觀念得自dbaseIII , 我在寫Clipper, foxpro, delphi都是這樣處理的 努力會更接近成功
天阿,沒看完還不知道,這位大哥別誤人子弟啊, 您的方式也是可行,用dbedit也無不可,可是千萬不要把用dbedit輸入就存檔的觀念誤導了,然後自行發展一套邏輯... cxh17895提的動態下sql去判斷的方式已經指出方向了, 用您的方式也無不可,只不過用資料感知元件來寫比較有效率,而且思考的重心是放在dataset而不是控制項的介面. 要存檔的按鈕有什麼用,當然有用囉,就是拿來存檔
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#26 引用回覆 回覆 發表時間:2003-10-19 00:26:32 IP:211.76.xxx.xxx 未訂閱
引言: Sorry 小弟在此附加一點 我是用ADOConnections 對Access做連結的
你就把cxh17895的tquery改為tadoquery就是了,
var dt:tadoquery;
begin
  dt:=tadoquery.create(self);
  dt.connection:=你的connection
  dt.sql.text:='select ....';
  dt.open;
  //判斷取回值,
  if dt.fields[i].value=
  ...
  dt.free;
end;
要懂得舉一反三啊,多看書練練功,自己要多下點功夫...
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#27 引用回覆 回覆 發表時間:2003-10-19 00:50:57 IP:61.16.xxx.xxx 未訂閱
各位大大 非常感謝各位熱列的回應 現今小弟採用了多加一個adotable的方法 小弟再測試時 又發現了一個問題 我再新增時 如果輸入了跟上一筆同樣的 車牌號碼時 會跳出一個警告視窗說"車牌號碼已存在,請不要重複輸入!" 且它會停在我現在正在輸入車牌號碼的那一筆欄位中 而非上一筆 所以 這一部份以正常了 但是 如果修改完這一筆資料 儲存時 它會跑出 "車牌號碼已存在,請不要重複輸入!"的警告視窗 譬如:(我現在的車牌號碼欄位是br-06 當我修改這一筆資料的 其他欄位 如 姓名 然後 儲存時 它就跑出了 "車牌號碼已存在,請不要重複輸入!"的警告視窗  可是明明我的資料庫裡 就只有在車牌號碼的欄位中就只有一筆br-06而已 ) 我想可能是因為  locate它找到了這一筆資料的原因 它不會判斷 這個資料有沒有重複 所以 還是有點bug 請問 不知有沒有辦法修復這個bug 當然 有非常多的人 介意我不要用dbedit感知元件 但是 我的整體架構都是用它 如果 要換成 ttable 的話 有點麻煩 所以 希望能讓dbedit 克服這一個bug 希望各位大大幫幫小弟想想吧! 最後 小弟真的是非常感謝各位大大的幫助 不斷的提供小弟意見 解決方針 這個網站 真的是太讚了 每個人的很熱心 再次謝謝大家!!!   以下是我儲存Botton裡的程式碼:    if ADOTable2.Locate('車牌號碼',DBEdit1.Text,[loCaseInsensitive]) then begin    ShowMessage('車牌號碼已存在,請不要重複輸入!');    DBEdit1.SetFocus;    Abort; end;    
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#28 引用回覆 回覆 發表時間:2003-10-19 01:13:19 IP:211.76.xxx.xxx 未訂閱
    在adotable1的beforepost寫
var dt:tadoquery;
begin
  //只在新增模式判斷
  if adotable1.state=dsinsert then begin
    dt:=tadoquery.create(self);
    dt.connection:=你的connection
    dt.sql.text:='select count(車牌號碼) from moto where 車牌號碼=' quotedstr(adotable1.fieldbyname('車牌號碼').asstring;
    dt.open;
    if dt.fields[0].value > 0 then begin
       showmessage ('已有此車牌號碼');
       abort;  
    end;
    dt.free;
  end;
end;
問題不在dbedit,也不在ttable,tquery或是tadotable,tadoquery,寫程式前先畫畫流程圖吧...
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#29 引用回覆 回覆 發表時間:2003-10-19 18:06:37 IP:61.13.xxx.xxx 未訂閱
Sorry 各位大大 小弟現在想盡量不要改變所有的元件 因此 如果要加入 tadoquery的話 要用到sql語法 小弟不太會使用sql語法 但如果真的逼不得以 的話 我在加入tadoquery ok anyway 小弟現在用以下的語法去寫資料重複的 問題 請大家幫我看看可不可行 在儲存botton內的程式碼: if ADOTable1.State in [dsInsert, dsEdit] then begin if ADOTable2.Locate('學號',DBEdit7.Text,[loCaseInsensitive]) then begin I := 1;//當搜尋到後I計數為一 end else begin if I >1 then //I>1也就是搜尋到2筆以上的資料時 begin ShowMessage('學號已存在,請不要重複輸入!'); DBEdit7.SetFocus; Abort; end end; 這樣寫我的程式是可以run但是 它並沒有檢查學號是否重複的功能 請問這樣寫可以嗎? 如果可以的話
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#30 引用回覆 回覆 發表時間:2003-10-19 18:09:34 IP:61.13.xxx.xxx 未訂閱
Sorry 各位大大 小弟現在想盡量不要改變所有的元件 因此 如果要加入 tadoquery的話 要用到sql語法 小弟不太會使用sql語法 但如果真的逼不得以 的話 我在加入tadoquery ok anyway 小弟現在用以下的語法去寫資料重複的 問題 請大家幫我看看可不可行 在儲存botton內的程式碼: if ADOTable1.State in [dsInsert, dsEdit] then begin if ADOTable2.Locate('學號',DBEdit7.Text,[loCaseInsensitive]) then begin I := 1;//當搜尋到後I計數為一 end else begin if I >1 then //I>1也就是搜尋到2筆以上的資料時 begin ShowMessage('學號已存在,請不要重複輸入!'); DBEdit7.SetFocus; Abort; end end; ps(我有在我的主form 的var 下 宣告 I : Integer;//宣告I變數﹐記錄搜尋道學號的次數) 這樣寫我的程式是可以run但是 它並沒有檢查學號是否重複的功能 請問這樣寫可行嗎?
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#31 引用回覆 回覆 發表時間:2003-10-19 23:51:25 IP:218.163.xxx.xxx 未訂閱
建議:    使用hahalin 版主 的方式!        網海無涯,學無止境!
[<<] [1] [2] [>>]
系統時間:2024-04-27 14:56:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!