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

請問關於ComboBox與資料庫的連結問題....

尚未結案
iimumi
一般會員


發表:9
回覆:11
積分:4
註冊:2004-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-26 19:16:39 IP:192.192.xxx.xxx 未訂閱
請問小弟若想要將"SP"這個使用者新增到ComboBox裡且密碼為1234(edit輸入) 要怎麼做呢? 下面這段程式就是小弟目前要修改的程式,(只能使用Administrator) 裡面有些疑問希望大大們幫忙 感謝    (資料庫裡已有Username:Administrator  Password:mine   FLAG=0 ,                       SP             Password:1234   FLAG=-1)     
 
void __fastcall TFormLogin::BitBtnLoginClick(TObject *Sender)
{
   if (EditPassword->Text == "")
   {
     MessageBox(NULL, "密碼不正確,請重新輸入!", "登入",64);
     return;
   }       FormMain->ADOQueryINFO->ConnectionString =   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=INFO.mdb;Persist Security Info=False;Jet OLEDB:Database Password=mine";       FormMain->ADOQueryINFO->SQL->Text = "SELECT * FROM USER_INFO WHERE UserName = 'Administrator' OR FLAG = -1";    請問上面這段是不是有問題呢? 因為小弟run的結果並沒有出現SP這個使用者
而且是否UserName跟FLAG不應該寫在一起呢?       FormMain->ADOQueryINFO->Open();
   FormMain->ADOQueryINFO->First();       for (int i = 0; i < FormMain->ADOQueryINFO->RecordCount; i  )
   {
     if (FormMain->ADOQueryINFO->Fields->FieldByName("FLAG")->AsInteger == 0)
          Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
          FormMain->ADOQueryINFO->Next();
   }
   FormMain->ADOQueryINFO->First();
   FormMain->ADOQueryINFO->Close();    
若要達成小弟一開始提的問題要怎麼修改呢? 請大大們指教 感謝 發表人 - iimumi 於 2005/05/26 19:18:07 發表人 - iimumi 於 2005/05/26 19:39:04
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-26 21:17:12 IP:218.19.xxx.xxx 未訂閱
iimumi 您好:    您貼上來的程式敘述好像是在作 "檢核" 動作,而與 "新增項目至 ComboBox" 這個動作無關吧?
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-27 08:46:29 IP:202.181.xxx.xxx 未訂閱
Dear iimumi:    參考如下:
ComboBox1->Items->Add(ADOQueryINFO->Fields->FieldByName("UserName")->AsString;
if your value in UserName_Field is "SP"
iimumi
一般會員


發表:9
回覆:11
積分:4
註冊:2004-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-27 14:57:03 IP:192.192.xxx.xxx 未訂閱
引言: iimumi 您好: 您貼上來的程式敘述好像是在作 "檢核" 動作,而與 "新增項目至 ComboBox" 這個動作無關吧?
感謝大大的回覆,小弟本來以為SP已新增至資料庫故使用SQL指上去即可 即這段 "
 FormMain->ADOQueryINFO->SQL->Text = "SELECT * FROM USER_INFO WHERE UserName = 'Administrator' OR FLAG = -1;
小弟雖已在Combobox屬性那(Item)增加了SP這個選項, 但SP密碼依然是要打"mine"才能過 小弟不懂的是若想要在ComboBox新增一個"SP"這個使用者但密碼是要打資料庫裡與"SP"對應的"1234"要如何做呢? 還有就是小弟不太懂上面那行程式碼的意思,為什麼要用
'Administrator'OR FLAG = -1 
但是實際上run的結果卻只有Administrator可使用呢? 感謝大大賜教
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-27 15:24:44 IP:218.19.xxx.xxx 未訂閱
iimumi 您好:    您的意思是說其實您已經將資料加到 ComboBox 裡去了,現在的問題是檢核的程序未能達到您的預期是嗎?    我大致上看了您的程式敘述,好像是因為下列以紅色標示的那一段,所以檢核的密碼是取用 FLAG 為 0 者的:
   for (int i = 0; i < FormMain->ADOQueryINFO->RecordCount; i  )
   {
     if (FormMain->ADOQueryINFO->Fields->FieldByName("FLAG")->AsInteger == 0)
          Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
          FormMain->ADOQueryINFO->Next();
   }
而依據您提供的資料來看,FLAG 為 0 者正好是 Administrator,這大概就是為何僅有 Administrator 可使用的原因。 至於為何設定 UserName = 'Administrator' OR FLAG = -1 這樣的條件,依據條件來看可解釋為: UserName 是 Administrator,或者 FLAG 是 -1 的用戶才符合條件。 如果您的問題重點是在 "讓用戶 SP 也能使用密碼 1234 通過比對" 的動作,那麼在比對的那一段就必須要修改掉,您應該在後續的那個 for loop 中比對的是 UserName 是否與操作者輸入或選取的用戶名稱相同?如果相同就擷取對應的密碼來比對,試試看吧。 發表人 - RedSnow 於 2005/05/27 15:34:56
iimumi
一般會員


發表:9
回覆:11
積分:4
註冊:2004-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-10 14:45:27 IP:192.192.xxx.xxx 未訂閱
感謝大大之前幫小弟解惑關於Combobox與密碼登入的問題 小弟後來被叫去做別的事因此遲至現在才道謝真是抱歉,小弟想冒昧再度請教大大關於之前大大所說的    " UserName 是否與操作者輸入或選取的用戶名稱相同?如果相同就擷取密碼來比對"    這段小弟是用    
    if (FormMain->ADOQueryINFO->Fields->FieldByName("FLAG")->AsInteger == 0)
{
Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
FormMain->ADOQueryINFO->Next();
}
else
if(FormMain->ADOQueryINFO->Fields->FieldByName("FLAG")->AsInteger == -1)
{
Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
FormMain->ADOQueryINFO->Next();    
小弟的做法是用FLAG來區分"Administrator" 和"SP" 在此小弟不懂的是要如何指定到單一想要的 欄位(即Administrator) 然後又對應到密碼 呢? 因小弟上述的做法只能對應到一整個欄位 例如"->FieldByName("Password")"並非 單獨對應到想要的使用者 請問大大要如何做到想要的效果呢? 還有再次打擾實在非常抱歉,祝順心^^
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-10 15:58:20 IP:218.19.xxx.xxx 未訂閱
iimumi 您好:
引言:小弟的做法是用FLAG來區分"Administrator" 和"SP" 在此小弟不懂的是要如何指定到單一想要的 欄位(即Administrator) 然後又對應到密碼 呢?
您這次貼上來的程式敘述:
if (FormMain->ADOQueryINFO->Fields->FieldByName("FLAG")->AsInteger == 0) {
    Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
    FormMain->ADOQueryINFO->Next();
} else if(FormMain->ADOQueryINFO->Fields->FieldByName("FLAG")->AsInteger == -1) {
    Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
    FormMain->ADOQueryINFO->Next();
}
是有點怪,因為以您早先給的條件來看,FLAG 僅有 0 與 -1 這兩種值,那麼您上述的判斷式無論是在 FLAG == 0 或是 FLAG == -1 時,做的動作都是一樣的,那麼上述的敘述就等於下列的設定:
Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString;
FormMain->ADOQueryINFO->Next();
那兩個判斷式等於是沒用途,如果您要使用 FLAG 來指定過濾條件為 "僅能 Administrator 能通過",那麼您就應該使用 FLAG == 0 那一段判斷式,而不應該多加上 FLAG == -1 那段判斷式,否則無論是 Administrator (FLAG = 0) 或是 SP (FLAG = -1) 都會取得 Password 的設定值,而通過其後的相關處理程序。
引言:因小弟上述的做法只能對應到一整個欄位 例如"->FieldByName("Password")"並非 單獨對應到想要的使用者
這一段的意思我看不太明白,可否請您換個方式說明一下?如果您能夠將整個動作前後相關的動作與狀況都加以描述一下,而不是僅貼出程式的某一段敘述的話,應該對問題的說明會有幫助的 (我現在已經弄不清楚您到底是要讓所有人都可以通過密碼檢核?還是要限制成僅讓某一個特定對象通過檢核?)。
iimumi
一般會員


發表:9
回覆:11
積分:4
註冊:2004-07-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-17 15:42:11 IP:192.192.xxx.xxx 未訂閱
感謝大大的幫忙,小弟後來弄出來了^^ 程式如下  
FormMain->ADOQueryINFO->ConnectionString =   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=INFO.mdb;Persist Security Info=False;Jet OLEDB:Database Password=mine";
   FormMain->ADOQueryINFO->SQL->Text = "SELECT * FROM USER_INFO WHERE UserName ='" S "'";
   FormMain->ADOQueryINFO->Open();
   FormMain->ADOQueryINFO->First();       Password = FormMain->ADOQueryINFO->Fields->FieldByName("Password")->AsString; 
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-17 16:39:36 IP:218.19.xxx.xxx 未訂閱
iimumi 您好:    恭喜、恭喜,很高興知道您解決了問題,祝您順心~      7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-05-04 5:17:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!