Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Tabellenfelder in einen String kopieren

  Alt 2. Mär 2007, 09:53
Hallo,

die von dir gewünschte Umformung dient wahrscheinlich der Darstellung deiner Daten. Auch wenn dir SQL gewisse Operatoren und Funktionen zur Verfügung stellt um eine solche Umformung vorzunehmen, solltest du diesen Weg nur dann gehen, wenn die Daten ohne weitere Verarbeitung auch genau so ausgegeben werden sollen. Oft ist es "besser" solche Textumformungen nicht mit SQL zu erledigen, da sie eigentlich der Präsentationsschicht deiner Anwendung zugerechnet werden:

Delphi-Quellcode:
procedure FetchNamedValues(ds: TCustomADODataSet; s: TStrings);
var
  i: Integer;
begin
  s.Clear;
  with ds do
    for i := 0 to Pred(FieldCount) do
      if Fields[i].IsNull then
        Continue
      else
      if Fields[i].IsBlob then
        s.Values[Fields[i].FieldName] := BlobToStr(Fields[i] as TBlobField, True)
      else
        s.Values[Fields[i].FieldName] := Fields[i].AsString;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
const
  NVS = ':';
var
  s: TStrings;
  line: string;
begin
  s := TStringList.Create;
  s.NameValueSeparator := NVS;
  FetchNamedValues(query, s);
  line := StringReplace(Trim(s.Text), sLineBreak, ', ', [rfReplaceAll]);
  line := StringReplace(line, NVS, NVS + ' ', [rfReplaceAll]);
  ShowMessage(line);
  s.Free;
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat