2014-11-04 260 views
2

我需要我的程序從數據庫中登錄用戶。這需要一個潛水員號碼(如用戶名)和一個已經在數據庫中的密碼。不幸的是,我現在不知道SQL,寧願使用類似於我在這裏完成的技術。在運行時出現以下錯誤消息:adotblDiversInfo:無法對已關閉的數據集執行此操作。非常感謝你的幫助提前(: 這是我的代碼:登錄顯示錯誤消息

procedure TfrmHomeScreen.btnLogInClick(Sender: TObject); 
var 
    iDiverNumber : Integer; 
    sPassword, sKnownPassword : String; 
    bFlagDiverNumber, bFlagPassword, Result : Boolean; 
begin 
    iDiverNumber := StrToInt(ledDiverNumber.Text); 
    sPassword := ledPassword.Text; 
    with frmDM do 
    adotblDiversInfo.Filtered := False; 
    frmDM.adotblDiversInfo.Filter := 'Diver Number' + IntToStr(iDiverNumber); 
    frmDM.adotblDiversInfo.Filtered := True; 
    if frmDM.adotblDiversInfo.RecordCount = 0 then 
     ShowMessage(IntToStr(iDiverNumber) + ' cannot be found') 
    else 
     begin 
     sKnownPassword := frmDM.adotblDiversInfo['Password']; 
     if sKnownPassword = sPassword then 
      ShowMessage('Login successful') 
     else 
      ShowMessage('Incorrect password. Please try again'); 
     end; 
end; 
+1

你的問題與SQL無關。錯誤消息意味着您正在試圖對一個無效的數據集進行操作,直到您打開它(數據集)。你應該在你的問題中提及錯誤發生的位置,所以讀者不必猜測。順便說一句,「避免」像瘟疫一樣。 – MartynA 2014-11-04 16:08:31

+0

另外,你不應該聲明一個名爲'Result'的變量。即使它不是一個關鍵字,它爲功能提供了一個特殊的目的。在程序中聲明自己正在尋找混淆。 – 2014-11-04 16:27:30

+0

另外:你使用純文本密碼? – Birger 2014-11-04 16:40:14

回答

1

你得到的錯誤是因爲你忘了試圖訪問它之前打開該數據集使用frmDM.adoTblDiversInfo.Open;frmDM.adoTblDiversInfo.Active := True;嘗試使用表之前這樣做。

你的代碼可能是更簡單,速度更快,如果你稍微改變它,而是過濾整個數據集的,只是看你能不能Locate適當的記錄。

procedure TfrmHomeScreen.btnLogInClick(Sender: TObject); 
var 
    iDiverNumber : Integer; 
begin 
    if not frmDM.adoTblDiversInfo.Active then 
    frmDM.adoTblDiversInfo.Open; 

    iDiverNumber := StrToInt(ledDiverNumber.Text); 
    sPassword := ledPassword.Text; 
    if frmDM.adoTblDiversInfo.Locate('Diver Number', iDiverNumber, []) the 
    begin 
    if frmDM.adoTblDiversInfo['Password'] = ledPassword.Text then 
     ShowMessage('Login successful') 
    else 
     ShowMessage('Invalid password. Please try again.'); 
    end 
    else 
    ShowMessage(ledDiverNumber.Text); 
end; 
+0

非常感謝你這麼好!這非常有幫助 – Kelly 2014-11-04 20:44:03

+0

@kelly:我意識到這是你的第一個,但它是一個好主意進入哈比通過點擊「勾號」圖標,接受像Ken這樣有用的答案顯然是。接受答案會增加您自己的代表以及答案,所以可以幫助您清除一些限制因素,強加給新用戶可以做的事情。 – MartynA 2014-11-05 10:38:02