Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Informationen aus einem ClientDataSet auslesen (https://www.delphipraxis.net/181047-informationen-aus-einem-clientdataset-auslesen.html)

mkinzler 11. Jul 2014 10:15

AW: Informationen aus einem ClientDataSet auslesen
 
Das macht ja die Methode.

Sir Rufo 11. Jul 2014 10:20

AW: Informationen aus einem ClientDataSet auslesen
 
Zitat:

Zitat von Koloss (Beitrag 1265181)
Zitat:

Zitat von mkinzler (Beitrag 1265179)
Du kannst der entsprechenden Event-Property eine entsprechende Methode zuweisen.

Und auch den Sender abfragen.

Siehe meinen Vorschlag und du kannst dir so einen Blähcode komplett sparen :)

ChristianG 11. Jul 2014 10:21

AW: Informationen aus einem ClientDataSet auslesen
 
Noch eine kurze Frage:
Ich habe ein Grid mit der Funktion value.
Aber in meinem ClientDataset sind zwei mal der gleiche Name und der gleiche Preis enthalten.
Wie schaffe ich es, dass die Daten nur einmal angezeigt werden?
Delphi-Quellcode:
if col = 0 then begin

    if cdsBezahlen.Locate('Position', Row, []) then
      value := cdsBezahlen.FieldByName('Name').AsString;


  end;

  if col = 1 then begin
   value := '0';
  end;
end;
Man braucht eine For-Schleife, die von dem ersten Value bis zum angezeigten Value zählt und die beiden vergleicht.
Aber wie?
PS: Für so eine kleine Frage finde ich soll man keinen neun Threat auf machen, weil eine antwort genügt.

baumina 11. Jul 2014 10:35

AW: Informationen aus einem ClientDataSet auslesen
 
Die Frage ist eher WARUM ist ein deinem ClientDataset ein und der selbe Datensatz zweimal drin. Kommt das so aus der XML-Datei? Und wenn ja, ist das die selbe ID? Und wenn ja, dann mach einfach kein Append, wenn eine ID nochmal kommt.

Photoner 11. Jul 2014 10:45

AW: Informationen aus einem ClientDataSet auslesen
 
Delphi-Quellcode:
 for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(i);

       for p := u-1 downto 0 do begin
         if
          (bnode.ChildNodes.FindNode('Name').Text = {...Name von Element mit Index "p"}) and (bnode.ChildNodes.FindNode('Name').Price = {...Preis von Element mit Index "p"})
         then
          break;
       end;

       if p>=0 then begin
        cdsBezahlen.Append;
        cdsBezahlen.FieldByName('Position').asInteger := i;
        cdsBezahlen.FieldByName('ID').AsString := bnode.ChildNodes.FindNode('ID').Text;
        cdsBezahlen.FieldByName('Name').AsString := bnode.ChildNodes.FindNode('Name').Text;
        cdsBezahlen.FieldByName('Kosten').AsString := bnode.ChildNodes.FindNode('Price').Text;
        cdsBezahlen.Post;
       end else continue;
Gleich verhindern dass es in die Liste kommt; Wie wäre es damit?

ChristianG 11. Jul 2014 10:49

AW: Informationen aus einem ClientDataSet auslesen
 
Ja danke^^

Photoner 11. Jul 2014 10:51

AW: Informationen aus einem ClientDataSet auslesen
 
Zitat:

Zitat von baumina (Beitrag 1265186)
Die Frage ist eher WARUM ist ein deinem ClientDataset ein und der selbe Datensatz zweimal drin. Kommt das so aus der XML-Datei? Und wenn ja, ist das die selbe ID? Und wenn ja, dann mach einfach kein Append, wenn eine ID nochmal kommt.

Es hieß nur gleicher Name und Preis. Die ID oder ein anderes Feld kann sich unterscheiden.
Jetzt fällt mir aber was auf:
Welches Feld soll man nun nehmen? Bei meinem Vorschlag wird einfach das erste genommen. Da kann gleich der nächste Fehler daraus resultieren. Vielleicht ist das ein uralter Wert der durch einen aktuelleren ersetzt worden ist.

baumina 11. Jul 2014 10:59

AW: Informationen aus einem ClientDataSet auslesen
 
Ohne die XML-Datei zu kennen reine Spekulation :)

ChristianG 11. Jul 2014 11:08

AW: Informationen aus einem ClientDataSet auslesen
 
Der Fehler ist, dass es 2 verschiedene Sitzrheien gibt...
Der preis kann sich unterscheiden, muss es aber nicht.
Also habe ich
Delphi-Quellcode:
cdsBezahlen.FieldByName('Sitzrheie').AsString := bnode.ChildNodes.FindNode('SeatingCategory').Text;
eingefügt, um die Sitzrheien im Grid extra anzeigen zu lassen :D.
Daran habe ich nicht gedacht und zu dem Thema ID: Ja sie ist immer um 1 unterschiedlich

ChristianG 11. Jul 2014 11:37

AW: Informationen aus einem ClientDataSet auslesen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1265177)
Zum generellen Ansatz des dynamischen Erzeugen von Controls, die mit irgendetwas interagieren sollen, bieten sich eigentlich Frames eher an. Der Code wird erheblich übersichtlicher.
Delphi-Quellcode:
TItemFrame = class( TFrame )
  Button1 : TButton;
  procedure Button1Click( Sender : TObject );
private
  FItem : TItem;
  procedure SetItem( const Value : TItem );
public
  property Item : TItem read FItem write SetItem;
end;

procedure TItemFrame.SetItem( const Value : TItem );
begin
  FItem := Value;
  Button1.Enabled := Assigned( FItem );
end;

procedure TItemFrame.Button1Click( Sender : TObject );
begin
  // Was auch immer nun mit dem Item machen
  DoSomethingWith( FItem );
  // oder wenn das Item etwas schlauer ist
  FItem.DoSomething;
end;
Und für die Erzeugung und Verwaltung
Delphi-Quellcode:
LItemFrames.Clear;
for LItem in FItems do
begin
  LItemFrame := TItemFrame.Create( nil );
  try
    LItemFrame.Item := LItem;

    LItemFrame.Parent := ItemsScrollBox; // halt den Container für die Items
    // Positionieren
    LItemFrame.Top := ...
    LItemFrame.Left := ...

    // In einer Liste merken
    FItemFrames.Add( LItemFrame );
    LItemFrame := nil;
  finally
    LItemFrame.Free;
  end;
end;
Das ist prinzipiell der gesamte Code um die Items darzustellen und auch mit Aktionen zu verknüpfen.

Werden die Aktionen umfangreicher, dann wird das Frame umfangreicher (mehr Buttons, mehr Controls, mehr Farbe, mehr BlingBling), der Code zur Verwaltung bleibt meistens exakt gleich

Wenn ich einen neuen Frame erstellen möchte kommt diese Meldung:
Die Unit"Unit1.pas" ist mit dem von diesem Projekt verwendeten Framework FMX nicht kompatibel.
Das Hinzufügen könnte zu Compiler-Fehlern oder unerwartetem Verhalten führen.Fortsetzen?
Was nun?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.
Seite 3 von 6     123 45     Letzte »    

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