AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze in TStringlist einfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze in TStringlist einfügen

Ein Thema von Sternenmaedchen · begonnen am 10. Jan 2008 · letzter Beitrag vom 11. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Sternenmaedchen

Registriert seit: 10. Jan 2008
6 Beiträge
 
#1

Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 13:40
Datenbank: Paradox • Version: 7 • Zugriff über: SQL
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 )

PS: Dieser Beitrag ist ebenfalls im
DSDT Forum und im
Delphie Forum zu finden
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 13:44
Toll, ein riesige Internet und überall das gleiche M... udn dann nicht einmal verlinkt, was soll das?
Hier und hier und hier !
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Sternenmaedchen

Registriert seit: 10. Jan 2008
6 Beiträge
 
#3

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 14:00
Ä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.
  Mit Zitat antworten Zitat
marabu

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

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 14:08
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
  Mit Zitat antworten Zitat
Sternenmaedchen

Registriert seit: 10. Jan 2008
6 Beiträge
 
#5

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 14:12
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
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#6

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 14:13
Hallo Sternenmaedchen,
Zitat von Kroko1999:
Toll, ein riesige Internet und überall das gleiche M... udn dann nicht einmal verlinkt, was soll das?
Hier und hier und hier !
[OT]
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.
  Mit Zitat antworten Zitat
marabu

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

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 14:31
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:
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;
Die Vorgehensweise zur Erstellung einer (über recs voll gepufferten) CSV-Datei ist hier nur angedeutet.

Oder du liest dich mal in die Komponente TBatchMove ein. Damit kannst du die CSV-Datei fast ohne eigenen Code erstellen.

Freundliche Grüße
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#8

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 14:32
Also ich würde folgendermaßen vorgehen (obwohl der marabu gleich bestimmt mit einer besseren Lösung um die Ecke kommen wird)

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:
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;
Edit: ich sag's ja...

Edit2: Methodenname und abschl. 'End;' eingefügt
  Mit Zitat antworten Zitat
Sternenmaedchen

Registriert seit: 10. Jan 2008
6 Beiträge
 
#9

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 15:23
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
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#10

Re: Datensätze in TStringlist einfügen

  Alt 10. Jan 2008, 15:54
Zitat von Sternenmaedchen:
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.
Bei FieldByName übergibst sprichst Du ein Feld über seinen Namen an. In Deinem Fall wäre diese der Name des Feldes, welches den Aktivitätsstatus ggf. mit 'J' angibt.

Zitat von Sternenmaedchen:
FreeAndNil kennt er nicht...
Dann benutze stattdessen bitte
lstResult.Free;
Zitat von Sternenmaedchen:
Ihm fehlt auf einmal irgendwo ein "End."
Er sagt es sind zu viele Parameter ?!
Tschuldigung; hatte den Methodenrumpf nicht mit eingefügt - habe aber den Beitrag oben editiert.

Zitat von Sternenmaedchen:
Und bei der Variable der For-Schleife schimpft er auch
Was sagt er denn? 'i' sollte er eigentlich kennen

Zitat von Sternenmaedchen:
PS: es ist eine Ttable keine Tquery an dieser Stelle ich hatte mich verguckt
Schade, aber dann ist meine Lösung doch nicht so umsetzbar.
Das bedeutet, dass Du die komplette Ergebnismenge durchgehst, was vom Prinzip her nichts anderes ist - es dauert halt nur länger.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz