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

關於Login與Access的問題

缺席
kj68215
初階會員


發表:47
回覆:91
積分:27
註冊:2003-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-09 22:43:38 IP:218.174.xxx.xxx 未訂閱
小弟對資料庫以及密碼驗證並不太熟悉,所以想請問各位... 如何用login的認證動作? (1)id&passowrd驗證成功後即呼叫出Form2的工作視窗. P.S:Form2出現的同時,login這個Form1視窗會消失. (2)若驗證不成功則出現Message訊息視窗並return,以作提示! 這裡有小弟上傳的小demo程式↓ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46237 ----------------------- 請多多指教啦!!^^
------
-----------------------
請多多指教啦!!^^
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-10 23:52:16 IP:203.204.xxx.xxx 未訂閱
kj68215, 您好 下載您的Project之後, 發現並未有任何程式碼, 不知您是否上傳了錯誤的Project? 還是您真只是做好了畫面, 而程式碼是要請大家幫忙。    若是前者請重新上傳, 若是後者我想愛莫能助,(至少對我來說是如此) 人必自助而後人助 或許說的話重了些, 但希望您能先自己找過解決方法, 也自己練習過, 碰到無法解決的問題時, 再請大家幫忙, 而不是把問題丟給大家, 自己什麼都不做只等答案。 ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
kj68215
初階會員


發表:47
回覆:91
積分:27
註冊:2003-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-11 18:11:58 IP:218.174.xxx.xxx 未訂閱
阿~裡面沒有code嗎? 可能我搞錯檔案了! 拍say! 我會在重新上傳! ----------------------- 請多多指教啦!!^^
------
-----------------------
請多多指教啦!!^^
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-16 14:29:04 IP:61.221.xxx.xxx 未訂閱
kj68215, 您好 我做了部分修改,如下
[Unit1.cpp]
bool loginTF;
void __fastcall TfmLogin::Button1Click(TObject *Sender)
{
AnsiString sID,sPassword;
sID=Edit1->Text;
if (sID.Length()==0)
{
   MessageDlg("用戶名或密碼錯誤!", mtInformation, TMsgDlgButtons() << mbOK, 0);
   loginTF = false;
   return;
}
sPassword=Edit2->Text;
AnsiString sQuery;
sQuery="SELECT id FROM ClientUser WHERE id=" sID " and password='" sPassword "'";
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(sQuery);
Query1->Active=true;
if(Query1->RecordCount==0)
{
   MessageDlg("用戶名或密碼錯誤!", mtInformation, TMsgDlgButtons() << mbOK, 0);
   loginTF = false;
   return;
}
Query1->Close();
ModalResult=mrOk;
loginTF = true;
}
//---------------------------------------------------------------------------    [Unit2.cpp]
extern bool loginTF;
void __fastcall TForm2::FormCreate(TObject *Sender)
{
   if(!fmLogin)
      fmLogin = new TfmLogin(this);
   fmLogin->ShowModal();
   if(!loginTF)
      Application->Terminate();
}
//---------------------------------------------------------------------------
以上紅色部分為修改或增加的部分, 另外,請注意藍色部分不需要單引號(''), 因其DataType為數字。 再則,必須將Unit1設為Available forms, 預設值為Auto-create-forms, 設定步驟:[Project]-->[Options]-->[Forms] ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
kj68215
初階會員


發表:47
回覆:91
積分:27
註冊:2003-08-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-21 02:21:44 IP:61.219.xxx.xxx 未訂閱
感謝tech_state的幫忙. 小弟後來嘗試著自己去debug. 也找出了一些問題. 原因是我未在控制台的"BDE Administrator"建立access檔案的連結動作. 難怪怎麼寫都不會成功! 不過以小資料量的話,小弟就改用ADO去做,簡單方便! 一樣也可以達到目的! 這是我改用>> < class="code"> //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TfmLogin *fmLogin; //--------------------------------------------------------------------------- __fastcall TfmLogin::TfmLogin(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TfmLogin::Button1Click(TObject *Sender) { AnsiString sID,sPassword; sID=Edit1->Text; sPassword=Edit2->Text; if (sID.Length()==0 && sPassword.Length()==0) { MessageDlg("請輸入帳號或密碼錯誤!", mtError, TMsgDlgButtons() << mbOK, 0); return; } AnsiString sQuery; sQuery="SELECT id FROM ClientUser WHERE id=" sID " and password='" sPassword "'"; ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(sQuery); ADOQuery1->Active=true; if(ADOQuery1->RecordCount!=0) MessageDlg("登入成功!", mtConfirmation, TMsgDlgButtons() << mbOK, 0); else MessageDlg("錯誤:請輸入正確的帳號或密碼!", mtError, TMsgDlgButtons() << mbOK, 0); ADOQuery1->Close(); ModalResult=mrOk; } //--------------------------------------------------------------------------- void __fastcall TfmLogin::Button2Click(TObject *Sender) { Edit1->Clear(); Edit2->Clear(); } //--------------------------------------------------------------------------- (a)在ADOConnection1元件,屬性ConnectionString"選擇"如下↓ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Project\Classrom\DB\UserDB.mdb;Persist Security Info=False P.S:要注意的是D:\Project\Classrom\DB\UserDB.mdb這個路徑,改一下UserDB.mdb的存放路徑即可! (b)在ADOQuery1元件,屬性SQL我寫成如下↓ select id,password from ClientUser where id=911308001 and password='s001' 我想,若要改成Client端應用,應該也是可以從這些寫法來套用並加以修改,即可完成! ※此有demo檔案可供下載↓ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46828 P.S:若有寫不夠好的地方,歡迎大家能夠用力指教! 發表人 -
------
-----------------------
請多多指教啦!!^^
kj68215
初階會員


發表:47
回覆:91
積分:27
註冊:2003-08-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-21 03:06:14 IP:61.219.xxx.xxx 未訂閱
另外補充一點,就是若發生INDY60.bpi問題時,可以參考以下文章↓ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25182 Indy 9.0下載↓ http://www.nevrona.com/Indy/download/Borland.html ----------------------- 請多多指教啦!!^^
------
-----------------------
請多多指教啦!!^^
系統時間:2024-04-27 23:12:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!