【问题标题】:How to get values from a field and assign to a TStringList?如何从字段中获取值并分配给 TStringList?
【发布时间】:2017-05-10 07:57:48
【问题描述】:

如何从下图中获取所有用户名值并将其转换为TStringList、字符串或TMemo

我尝试了以下代码,但没有成功。

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

【问题讨论】:

  • 我尝试了这个,但是错误... with q3 do var txResul:stringlist begin Close; SQL.清除; SQL.Add('SELECT*FROM user');打开;下一个;结尾; txtResult.Add(q1.FieldByName('username').AsString);
  • 不要使用“with”!它节省了最少的时间,而且很容易导致错误。顺便说一句,您是指 q3 还是 q1?
  • Anton,不要使用 cmets 向您的问题添加信息。通过使用 edit link 将该信息添加到实际问题来解决您的问题。
  • 对不起,我是新手
  • 这就是为什么我告诉你如何正确地做到这一点。 ;) 顺便说一句,您还应该注意实际的错误消息 - 它提供了非常重要的线索。不要告诉我们“您遇到错误”,而是告诉我们实际的错误信息。从您的代码注释看来,您似乎试图在方法with q3 do var txResul:stringlist begin 的中间声明一个变量。德尔福不允许这样做。所有变量都必须在方法的开头声明。

标签: mysql delphi delphi-xe tstringlist tmemo


【解决方案1】:

假设您的屏幕截图是您调用的数据集,请执行以下操作:

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;

你可以这样使用它

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

顺便说一句,如果您将 GetUserNames 的第二个参数更改为 TStrings,如 GetUserNames(DataSet : TDataSet; Strings : TStrings),您可以直接将 Memo1.Lines 传递给它。

【讨论】:

  • 我可以把它添加到备忘录中吗兄弟?
  • 另外一件有用的事情是在数据集中为初始位置添加书签,并在启用控件之前返回该位置。否则每次调用GetUserNames 时,网格都会移动到最后一行。
  • @CraigYoung,我同意你的看法。在某些情况下,添加书签是个好主意。但正如我所看到的,我的猜测是 OP 根本不使用 TDBGrid,如果他这样做了,他就不会使用备忘录。
猜你喜欢
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多