Delphi-PRAXiS
Seite 1 von 6  1 23     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)

ChristianG 10. Jul 2014 13:42

Informationen aus einem ClientDataSet auslesen
 
Hallo DPler,
Ich schreibe gerade ein Programm, welches XML Daten herausliest.
Delphi-Quellcode:
 for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(i);

       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;
Jetzt habe ich mehrere Buttons, womit ich die die Anzahl von einem Produkt ändern möchte. Jedoch hat jeder Name eigene Kosten, was dazu führt, dass ich den Namen,z.B 'Banane' mit einer If-Anweisung abfragen muss.
Ein Beispiel: Wenn der Name 'Banane' ist sollen die Kosten herausgelesen werden.
Ich weiß wie man dies in einer Schleife macht, aber nicht wie ich dies mit Buttons programmieren soll.

Kann mir jemand Tipps geben?

Mit freundlichen Grüßen

p80286 10. Jul 2014 16:11

AW: Informationen aus einem ClientDataSet auslesen
 
Zitat:

Zitat von ChristianG (Beitrag 1265059)
Jetzt habe ich mehrere Buttons, womit ich die die Anzahl von einem Produkt ändern möchte. Jedoch hat jeder Name eigene Kosten, was dazu führt, dass ich den Namen,z.B 'Banane' mit einer If-Anweisung abfragen muss.
Ein Beispiel: Wenn der Name 'Banane' ist sollen die Kosten herausgelesen werden.
Ich weiß wie man dies in einer Schleife macht, aber nicht wie ich dies mit Buttons programmieren soll.

Kofferklauen ging gerade im Verkehrslärm unter!
Könntest Du versuchen, das nochmals zu formulieren?
(Falls Deutsch nicht Deine Muttersprache ist, vllt. in Englisch?)

Gruß
K-H

ChristianG 10. Jul 2014 16:43

AW: Informationen aus einem ClientDataSet auslesen
 
Ich versuche es einmal richtig zu formulieren.
Ich schreibe mit Delphi XE6 eine APP für ein Kino, welches schon die Images und die Titel mithilfe eines Grids ausgibt. Danach wird man weitergeleitet.Dies geschieht mit einem Tabcontrol und mehreren Tabitems. In dem neuen TabItem werden alle Vorstellungen mit Datum und Uhrzeit in einem Grid ausgegeben. Wenn man auf das Grid klickt wird man in ein Login weitergeleitet, wo man sich regestrieren oder einloggen kann.Wenn man auf den Button Anmelden klickt soll mithilfe eines Clientdatasets eine ID,der Name der Kosten,die Position und die Kosten geladen werden. Die Daten bekomme ich aus dem Internet. Mein Problem besteht jetzt darin, dass wenn ich auf ein neues Tabcontrol weitergeleitet werde, mithilfe eines Buttons die Kosten ermitteln möchte, die im Client DataSet vorhanden sind. Dafür brauche ich den Namen(z.B 'standard'), mit dem ich diese Kosten für eine Standartkarte herauslesen kann.Dies soll alles Dynamisch verlaufen,bzw. wenn ich auf den Button klicke.Ich schicke einfach den Quelltext mit, den ich für die Anmeldung geschrieben habe.
Delphi-Quellcode:
procedure TAppseite1.btnAnmeldenClick(Sender: TObject);
var
login         : Boolean;
lURL,bURL     : String;
lOutput,bOutput: String;
i,u           : Integer;
lnode,bnode   : IXMLNode;
lbenutzername : String;
lpasswort     : String;
benutzername  : String;
passwort      : String;
postdata      : TStringlist;
SessionID     : String;
begin
  XMLlogin := NewXMLDocument;
  postdata := TStringList.Create;
  passwort := edPasswort.Text;
  benutzername := edBenutzername.Text;
   lURL := 'http://kinobox.net:11800/1.0/logins?apikey=2013dolphinV8';

   postdata.Add('loginname=' + benutzername);
   postdata.Add('password=' + passwort)    ;

   try
    lOutput := idHTTP1.Post(lURL,postdata);
   except
    on e:exception do begin
     showmessage('Login fehlgeschlagen' );
     exit;
    end;
   end;

   XMLlogin.XML.Text := lOutput;
   XMLlogin.Active := true;

   IdHTTP1.ConnectTimeout := 3000;
   IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.2; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';

   lnode := XMLlogin.DocumentElement.ChildNodes.FindNode('SessionID');
   SessionID := lnode.Text;

  showmessage('Login erfolgreich');
  postdata.Free;

    XMLbezahlen  := newXMLDocument;
    bURL   := 'http://kinobox.net:11800/1.0/shows/' + InttoStr(ShowID) + '/tickets?apikey=2013dolphinV8';
    bOutput := idHTTP1.Get(bURL);

    XMLbezahlen.XML.Text := bOutput;
    XMLbezahlen.Active := true;

    IdHTTP1.ConnectTimeout := 3000;
    IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.2; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';

     for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(u);

       cdsBezahlen.Append;
       cdsBezahlen.FieldByName('Position').asInteger := u;
       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;

  TabItem5.Visible := true;
  TabItem5.Enabled := true;
  TabItem2.Visible := false;
  TabItem2.Enabled := false;
  Tabcontrol1.ActiveTab := TabItem5;
  Tabcontrol1.TabIndex := TabItem5.Index;
  lblSessionID.Text := SessionID;
end;
Bis hierhin läuft alles.
Jetzt stelle ich mir auch noch die Frage, wie ich es realisieren soll,dass mein Programm automatisch die 'Namen' generieren soll. Dies brauche ich zum Beispiel, wenn die Seite ein Angebot macht. (Beispiel: Alle 8 Jährigen kommen für 6 Euro in diesen Film: Name:'spezialangebot',u:7,Kosten:8,ID:...). Es sollen 2 Buttons und ein label erstellt werden. (Button1:zurück,Label1:0,Button2:vor)Wenn ich auf Button 2 gehe, soll Label1 auf 1 gehen, der Name lokalisiert werden und der Preis herausgelesen werden. Wie bekomme ich dies hin
Ich hoffe das reicht dir an Informationen
Mit freundlichen Grüßen

ChristianG 10. Jul 2014 16:51

AW: Informationen aus einem ClientDataSet auslesen
 
Was ich noch vergessen habe ist, dass die beiden Buttons und das label automatisch generiert werden sollen. Weiß jemand wie ich dies realisiert bekomme?

ChristianG 11. Jul 2014 07:53

AW: Informationen aus einem ClientDataSet auslesen
 
Hat niemand die Antwort auf mein Problem??

Jasocul 11. Jul 2014 08:23

AW: Informationen aus einem ClientDataSet auslesen
 
Ich habe mir dein Problem jetzt mehrere male durchgelesen und verstehe das Problem nicht.
Ich schreibe mal, was ich bisher meine verstanden zu haben.

Du hast ein ClientDataSet. Das wird von dir selbst gefüllt.
Dort stehen alle Daten drin, die du benötigst.
Du willst auf einen Button klicken und dann einen bestimmten Datensatz bekommen.

Was hindert dich daran, diesen Datensatz im ClientDataSet zu finden?
Das hat nichts mit Schleifen zu tun. Man muss nur wissen, wie man mit einem ClientDataSet umgeht. Oder habe ich immer noch nichts von dem verstanden, was du eigentlich möchtest?

ChristianG 11. Jul 2014 08:32

AW: Informationen aus einem ClientDataSet auslesen
 
Delphi-Quellcode:
XMLlogin := NewXMLDocument;
  postdata := TStringList.Create;
  passwort := edPasswort.Text;
  benutzername := edBenutzername.Text;
   lURL := 'http://kinobox.net:11800/1.0/logins?apikey=2013dolphinV8';
Ich hole die Daten aus dem Internet.

Ich habe die Namen und die Preise , die im Client DataSet stehen. Jetzt möchte ich z.B durch ein Grid die Namen ausgeben.Zu jeder Zeile sollen automatisch 2 Buttons gesetzt werden. Das Grid ist so aufgebaut : Button1(Muss automatisch erstellt weren)-Name-Anzahl-Button2(Muss automatisch erstellt werden). Zuerst möchte ich die Buttons automatisch generieren.Also wenn Rowcount 20 ist sollen 40 Buttons automatisch erzeugt werden. Wie geht das?
Ich versuche mal die Aufgabe Step by Step zu lösen.
Hast du mein Problem jetzt verstanden?
Danke für deine Hilfe :wink:
Mit freundlichen Grußen:

Jasocul 11. Jul 2014 08:46

AW: Informationen aus einem ClientDataSet auslesen
 
Das ist machbar, aber relativ aufwändig.
Spätestens wenn du mehr Datensätze hast, als auf den Bildschirm passen, musst du auch noch das Scrollen im Grid berücksichtigen und die Buttons entsprechend löschen und neu erstellen oder die Positionen mit-scrollen. Wie schon geschrieben: Machbar aber wenn es nicht verpflichtend ist, würde ich es lassen. Vielleicht gibt es aber auch irgendwo eine Grid-Komponente, die diese Funktionalität von Haus aus mitbringt. Müsstest du dann mal googeln.

Eventuell kannst du auch zwei Dummy-Spalten im Grid anlegen, die du wie Buttons aussehen lässt. Beim OnClick des Grids musst du dann prüfen, ob eine diese Spalten angeklickt wurde und entsprechend reagieren. Das hätte auch den Vorteil, dass du gleich auf dem richtigen Datensatz stehst.

Oder mache es wie in den meisten Anwendungen. Erstelle einfach 2 Button unter oder neben dem Grid und verwende nur diese beiden. Nachteil: Der Anwender muss zweimal klicken. Einmal den Datensatz auswählen und dann den entsprechenden Button.

ChristianG 11. Jul 2014 08:55

AW: Informationen aus einem ClientDataSet auslesen
 
Dies soll eine App werden, was bedeutet,dass diese gut aussehen muss aber auch sehr einfach zu bedienen sein muss. Also muss ich es mit 2 Buttons machen. Die Anzahl der Namen wird auch nicht Größer als 7 werden, was heißt, dass alles auf den Bildschirm passt. Wie setzt man das mit dem automatischen generieren um? Kannst du mir das erklären?
Danke für deine schnelle Antwort.
Mit freundlichen Grüßen:

Koloss 11. Jul 2014 09:16

AW: Informationen aus einem ClientDataSet auslesen
 
Code:
Button := TButton.Create(Self);
Button.Parent := self;
Button.Left := 10;
Button.Top := 10;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 1 von 6  1 23     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