AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Informationen aus einem ClientDataSet auslesen

Informationen aus einem ClientDataSet auslesen

Ein Thema von ChristianG · begonnen am 10. Jul 2014 · letzter Beitrag vom 11. Jul 2014
Antwort Antwort
Seite 1 von 6  1 23     Letzte » 
ChristianG

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

Informationen aus einem ClientDataSet auslesen

  Alt 10. Jul 2014, 13:42
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
Christian
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Informationen aus einem ClientDataSet auslesen

  Alt 10. Jul 2014, 16:11
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 10. Jul 2014, 16:43
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
Christian

Geändert von ChristianG (10. Jul 2014 um 16:48 Uhr)
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 10. Jul 2014, 16:51
Was ich noch vergessen habe ist, dass die beiden Buttons und das label automatisch generiert werden sollen. Weiß jemand wie ich dies realisiert bekomme?
Christian
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 07:53
Hat niemand die Antwort auf mein Problem??
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Informationen aus einem ClientDataSet auslesen

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

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 08:32
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
Mit freundlichen Grußen:
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 08:46
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.
Peter
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 08:55
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:
Christian
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#10

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:16
Code:
Button := TButton.Create(Self);
Button.Parent := self;
Button.Left := 10;
Button.Top := 10;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:48 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