請問關於ComboBox與資料庫的連結問題.... |
尚未結案
|
iimumi
一般會員 發表:9 回覆:11 積分:4 註冊:2004-07-06 發送簡訊給我 |
請問小弟若想要將"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 發送簡訊給我 |
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
|
iimumi
一般會員 發表:9 回覆:11 積分:4 註冊:2004-07-06 發送簡訊給我 |
引言: 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 發送簡訊給我 |
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 發送簡訊給我 |
感謝大大之前幫小弟解惑關於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 發送簡訊給我 |
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 發送簡訊給我 |
感謝大大的幫忙,小弟後來弄出來了^^ 程式如下
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |