2016-12-25 85 views
-2

如何從下面的圖像中獲取所有用戶名值,並且可以將它們轉換爲TStringList,字符串或TMemo如何從字段獲取值並分配給TStringList?

enter image description here

我嘗試下面的代碼,但沒有奏效。

with q3 do 
    var txResul:stringlist 
    begin 
    Close; 
    SQL.Clear; 
    SQL.Add('SELECT*FROM user'); 
    Open; 
    Next; 
    end; 
    txtResult.Add(q1.FieldByName('username').AsString); 
+0

我嘗試這個,但錯誤...與q3做 var txResul:stringlist begin Close; SQL.Clear; SQL.Add('SELECT * FROM user'); SQL.Add('SELECT * FROM user'); 開放; 接下來; 結束; txtResult.Add(q1.FieldByName('username').AsString); –

+3

請勿使用「with」!它節省了最少的時間,並容易導致錯誤。順便說一句你是指q3還是q1? – MartynA

+1

安東,請勿使用註釋向您的問題添加信息。通過使用[編輯鏈接](http://stackoverflow.com/posts/41321306/edit)將該信息添加到實際問題來修復您的問題。 –

回答

6

假設你的截圖就是你所謂做這樣的事情的數據集:

procedure GetUserNames(DataSet : TDataSet; StringList : TStringList); 
var 
    Field : TField; 
begin 
    Field := DataSet.FieldByName('username'); 
    StringList.BeginUpdate;  
    try 
    DataSet.DisableControls; 
    try 
     DataSet.First; 
     while not DataSet.Eof do begin 
     StringList.Add(Field.AsString); 
     DataSet.Next; 
     end; 
    finally 
     DataSet.EnableControls; 
    end; 
    finally 
    StringList.EndUpdate; 
    end; 
end; 

,如果你改變GetUserNames的第二個參數,您可以使用它像這樣

procedure TForm1.GetUsers; 
var 
    TL : StringList; 
begin 
    TL := StringList.Create; 
    try 
    GetUserNames(MyTable, TL); 
    Memo1.Lines.Text := TL.Text; 
    finally 
    TL.Free; 
    end; 
end; 

順便說一句,轉換爲TStrings,如GetUserNames(DataSet : TDataSet; Strings : TStrings),您可以直接將Memo1.Lines傳遞給它。

+0

我可以將它添加到備忘錄兄弟? –

+0

好的......它的工作。感謝mastah @MartynA –

+2

一個額外的有用的事情是將數據集中的初始位置加入書籤並在啓用控件之前返回到該位置。否則,每次調用GetUserNames時,網格都會移動到最後一行。 –

相關問題