AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Informationen aus einem ClientDataSet auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Informationen aus einem ClientDataSet auslesen

Ein Thema von ChristianG · begonnen am 10. Jul 2014 · letzter Beitrag vom 11. Jul 2014
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:15
Das macht ja die Methode.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:20
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ChristianG

Registriert seit: 8. Jul 2014
97 Beiträge
 
Delphi XE6 Starter
 
#23

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:21
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.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:35
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#25

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:45
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?
Chris
  Mit Zitat antworten Zitat
ChristianG

Registriert seit: 8. Jul 2014
97 Beiträge
 
Delphi XE6 Starter
 
#26

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:49
Ja danke^^
Christian
  Mit Zitat antworten Zitat
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#27

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:51
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.
Chris
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:59
Ohne die XML-Datei zu kennen reine Spekulation
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ChristianG

Registriert seit: 8. Jul 2014
97 Beiträge
 
Delphi XE6 Starter
 
#29

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 12:08
Der Fehler ist, dass es 2 verschiedene Sitzrheien gibt...
Der preis kann sich unterscheiden, muss es aber nicht.
Also habe ich
cdsBezahlen.FieldByName('Sitzrheie').AsString := bnode.ChildNodes.FindNode('SeatingCategory').Text; eingefügt, um die Sitzrheien im Grid extra anzeigen zu lassen .
Daran habe ich nicht gedacht und zu dem Thema ID: Ja sie ist immer um 1 unterschiedlich
Christian
  Mit Zitat antworten Zitat
ChristianG

Registriert seit: 8. Jul 2014
97 Beiträge
 
Delphi XE6 Starter
 
#30

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 12:37
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?
Christian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    

 

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 17:39 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