2016-12-25 2 views
-2

아래 이미지에서 모든 사용자 이름 값을 얻고이를 TStringList 문자열 또는 TMemo으로 변환 할 수 있습니까? 필드에서 값을 가져와 TStringList에 할당하는 방법은 무엇입니까?

enter image description here

나는 다음 코드를 시도했지만 작동하지 않았다. 당신이 GetUserNames의 두 번째 매개 변수를 변경 한 경우

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; 

당신은 BTW,이

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

처럼 사용할 수 있습니다 : 스크린 샷을 가정

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 닫기; SQL.Clear; SQL.Add ('SELECT * FROM user'); 열기; 다음; 끝; txtResult.Add (q1.FieldByName ('username') .AsString); –

+3

"함께"사용하지 마십시오! 최소한의 시간을 절약하고 쉽게 실수로 이어집니다. Btw는 q3 또는 q1을 의미 했습니까? – MartynA

+1

Anton, 댓글을 사용하여 질문에 정보를 추가하지 마십시오. 실제 질문에 해당 정보를 추가하려면 [edit link] (http://stackoverflow.com/posts/41321306/edit)를 사용하여 질문을 수정하십시오. –

답변

6

는이 같은 일을 할 전화 데이터 세트입니다 GetUserNames(DataSet : TDataSet; Strings : TStrings) 에서처럼 TStrings에 Memo1.Lines를 직접 전달할 수 있습니다.

+0

메모 브로에 추가 할 수 있습니까? –

+0

ok ... 그 일. thanks mastah @MartynA –

+2

할 일은 데이터 집합의 초기 위치를 책갈피에 추가하고 컨트롤을 활성화하기 전에 해당 위치로 돌아 오는 것입니다. 그렇지 않으면'GetUserNames'가 호출 될 때마다 격자가 마지막 행으로 이동합니다. –

관련 문제