2012-08-08 23 views
0

我有一個數據庫,裏面有'用戶表'。在這個表格中,有列包含用戶信息(網站,尼克,jeton,郵件,sifre)。我正在嘗試基於信用系統制定計劃。任何用戶運行該程序,比如,如果用戶信用等於列表框中的站點數(我的意思是線數)用戶站點將出現在列表框中。否則,它不會出現。如何在任何情況下將列的值提取到列表框?

在數據庫中,「credits」列中的值必須等於listbox中的行數。例如,如果任何用戶的信用值爲4,並且列表框中有5行,則用戶站點將不會被添加到列表框中。但如果用戶的信用值是5或更高,他/她的網站將被添加(列出)在列表框中。

uyeler =表

缺口 =用戶名欄。

網站 =用戶網站名稱列。

jeton =用戶信用欄。

郵件 =用戶郵件列。

sifre =用戶密碼欄。

我試過這些;

MyQuery1.Close; 
MyQuery1.SQL.Text :='SELECT jeton, site FROM uyeler WHERE jeton > 0 ORDER BY site'; 
    MyQuery1.Open; 
    ListBox1.Items.Clear; 
    If (MyQuery1.IsEmpty) or (MyQuery1.FieldByName('jeton').AsString > IntToStr(Listbox1.Items.Count)) Then 
    Begin 
    MessageDlg('warning: you have not credit!', mtWarning,[mbOK],0) 
    End 
    Else 
    Begin 
    While not MyQuery1.Eof do 
    Begin 
    ListBox1.Items.Add(MyQuery1.Fields[1].AsString); 
    MyQuery1.Next; 
    end; 
MyQuery1.Close; 
End; 
+0

> *「如果任何用戶的信用值是4,並且有5條線在列表框中,用戶的網站將不會被添加到列表框。但是,如果用戶的信用值是4或更低時,他/她的網站將被添加(列出)在列表框中「*>這沒有意義,您需要的結果與* 4或更低的*和*'4'*不同。 – 2012-08-09 17:25:31

+0

@SertacAkyuz,Pardon,我現在編輯過。 – Ankara 2012-08-09 18:41:29

+0

我很難理解,但無論如何,對於初學者來說,它看起來像對特定用戶的學分感興趣,但是您的select語句將檢索所有* jeton> 0的記錄。您可能需要選擇該用戶的記錄(其中(nick = xyz)和(jeton> 0)),或者在查詢中找到該特定用戶的記錄。我建議您將DBGrid附加到您的查詢中,以便確保您的查詢正在檢索您打算的記錄。我可能會誤解。 – 2012-08-09 20:13:24

回答

0

如果我正確理解你。有一個網站列表框。如果運行該程序的用戶的信用額度等於列表框中的行數,則該用戶的網站將被添加到列表框中。此外,我正在假設一個用戶可以有很多網站。

首先改變你的sql查詢來返回基於用戶是否被發現的數據。即

將下面的代碼視爲僞代碼!

MyQuery1.SQL.Text :='SELECT jeton, site FROM uyeler WHERE nick =:nick and jeton > 0 ORDER BY site'; 
MyQuery.Params['nick'] = userName; //Check syntax as this line is meant as pseudo code 

int noOfUserCredits = MyQuery1.FieldByName('jeton'); 

if (noOfUserCredits >= listBox.lines.Count) 
begin 
    while not MyQuery1.Eof do 
    begin 
    ListBox1.Items.Add(MyQuery1.FieldByName('site').AsString); 
    MyQuery1.Next; 
    end; 
end else 
if (noOfUserCredits < listBox.lines.Count) 
begin 
    //Do stuff 
end else 
if ((noOfUserCredits == 0) or (MyQuery1.IsEmpty)) 
begin 
    MessageDlg('warning: you have not credit!', mtWarning,[mbOK],0); 
end; 
+0

這段代碼有很多錯誤。總計:9 – Ankara 2012-08-10 18:28:15

+0

我在不使用編譯器的情況下鍵入代碼來檢查語法是否正確。隨意改進語法。不過,我希望我的代碼中的大綱/算法可以幫助您找到問題的答案。 – Eminem 2012-08-10 18:47:26

相關問題