![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: SQL
Datensätze in TStringlist einfügen
Hallo.
Ich bin mir nicht sicher ob dies der richtige Thread ist, aber ein Versuch ist es wert. Ich habe seit ein paar Tagen mit der Delphie Programmierung begonnen und habe ein kleines Anfängerproblem. Ich lese per wwquery Datensätze aus einer Paradox Tabelle aus und lasse diese in einem Datagrid ausgeben, sie können per checkbox ausgewählt werden. Diese möchte ich nun beim Klick auf einen Button in eine TStringliste eintragen lassen (allerdings nur die ausgewählten), um diese danach als Datei speichern zu können. Dies ist nötig, da diese Datei von einer weiteren Schnittstelle im Projekt benötigt wird. Kann mir jemand helfen? Das wäre sehr nett. Danke schonmal und einen schönen Tag noch :o) PS: Dieser Beitrag ist ebenfalls im ![]() ![]() |
Re: Datensätze in TStringlist einfügen
|
Re: Datensätze in TStringlist einfügen
Ähm entschuldigung dafür, aber musst du gleich so reagieren?
Meine Anfrage war höflich sowie nett gestellt und hat gleiches verdient. Ich werde einen entsprechenden Edit mit Links einfügen. Ich bin so gut wie nie in Foren aktiv und daher nicht sehr erfahren, daher danke ich dir für den Hinweis. Noch einmal sorry. |
Re: Datensätze in TStringlist einfügen
Herzlich willkommen in der Delphi-PRAXiS, Sternenmädchen.
Kroko hat das bestimmt nicht so böse gemeint wie es bei dir angekommen zu sein scheint. Verbirgt sich hinter deinem Datagrid ein TDBGrid? Ist die Schnittstelle zum fremden Projekt bereits spezifiziert? Werden die zu exportierenden Datensätze per Kriterium oder manuell ausgewählt? Freundliche Grüße vom marabu |
Re: Datensätze in TStringlist einfügen
Hallo Marabu vielen Dank für die Antwort.
Ja es handelt sich hierbei um TDB Grid speziell um ein TwwDBGrid (hat aber nur ein paar Funktionen mehr etc.) Ich frage die Daten aus der DB in einer Query mit SQL ab, Kriterium ist dass die in der TStringlist zu speichernden Daten per Checkbox ausgewählt sein müssen (bei Aktivität steht ein 'J' in einem entsprechenden Datenfeld) mir ist nur nicht klar wie ich die Daten nun in diese TStringliste bekomme. Mfg Sternenmädchen |
Re: Datensätze in TStringlist einfügen
Hallo Sternenmaedchen,
Zitat:
War Dein Mittagessen zu zäh? [/OT] Es kann nicht jeder wissen, dass Crossposts nicht gerne gesehen sind. Freue mich schon auf einen Fauxpas deinerseits. === Rest gelöscht, da Fragen bereits vom marabu aufgegriffen. |
Re: Datensätze in TStringlist einfügen
Wenn der CheckBox ein Datenfeld unterlegt ist, dann ist der Zugriff auf die Feldwerte der ausgewählten Datensätze einfach: Entweder du iterierst über den DataSet, ignorierst alle nicht relevanten Datensätze und überträgst die Feldwerte der gewünschten Datensätze in die StringList:
Delphi-Quellcode:
Die Vorgehensweise zur Erstellung einer (über recs voll gepufferten) CSV-Datei ist hier nur angedeutet.
procedure ExportFields(fields: TFields; recs: TStrings);
var i: Integer; begin with TStringList.Create do try for i := 0 to Pred(fields.Count) do Add(fields[i].AsString); finally Free; end; recs.Add(CommaText); end; with DBGrid.DataSource.DataSet do var bm: TBookMark; begin bm := GetBookmark; DisableControls; First; while not Eof do begin if FieldByName('CHECKED').AsBoolean then ExportFields(Fields); Next; end; GotoBookmark(bm); FreeBookmark(bm); EnableControls; end; Oder du liest dich mal in die Komponente TBatchMove ein. Damit kannst du die CSV-Datei fast ohne eigenen Code erstellen. Freundliche Grüße |
Re: Datensätze in TStringlist einfügen
Also ich würde folgendermaßen vorgehen (obwohl der marabu gleich bestimmt mit einer besseren Lösung um die Ecke kommen wird) :mrgreen:
Also - da Du Deine Daten ja sowieso per Query abfragst, kannst Du die Ergebnismenge ja schonmal eingrenzen, indem Du nur die Datensätze einfliessen lässt, in denen Dein Aktivitäten-Feld den Wert 'J' hat. Anschliessend gehst Du die Ergebnismenge der Query durch, setzt die einzelnen Felder je Datensatz zusammen und übergibst sie an Deine Stringliste. Das Ganze könnte in etwa so aussehen:
Delphi-Quellcode:
Edit: ich sag's ja...
Procedure TForm1.QueryToList;
Var sTemp: String; lstResult: TStringlist; i: Integer; Const cSeparator = ';'; Begin lstResult := TStringlist.Create; Try While Not DeinQuery.Eof Do Begin For i := 0 To DeinQuery.FieldCount - 1 Do Begin sTemp := sTemp + cSeparator + DeinQuery.Fields[i].AsString; End; lstResult.Add(sTemp); sTemp := ''; AdsTable1.Next; End; Finally FreeAndNil(lstResult); End; End; Edit2: Methodenname und abschl. 'End;' eingefügt |
Re: Datensätze in TStringlist einfügen
Ersteinmal vielen Dank euch beiden :)
Zu Marabu... ich benutze Delphie vers. 3 und irgendwie meint er er kennt "FieldByName" nicht... Ich weiß auch nicht wirklich was ich genau übergeben soll. Zu S-Off bei deiner Lösung bekomme ich leider nur Fehlermeldungen ?! FreeAndNil kennt er nicht... Ihm fehlt auf einmal irgendwo ein "End." Er sagt es sind zu viele Parameter ?! Und bei der Variable der For-Schleife schimpft er auch Woran kann das liegen? PS: es ist eine Ttable keine Tquery an dieser Stelle ich hatte mich verguckt |
Re: Datensätze in TStringlist einfügen
Zitat:
Zitat:
Delphi-Quellcode:
lstResult.Free;
Zitat:
Zitat:
Zitat:
Das bedeutet, dass Du die komplette Ergebnismenge durchgehst, was vom Prinzip her nichts anderes ist - es dauert halt nur länger. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz