Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zu einer DB Komponente (https://www.delphipraxis.net/138536-frage-zu-einer-db-komponente.html)

Baly 12. Aug 2009 08:31


Frage zu einer DB Komponente
 
Morgen liebe Delphianer

Habe mich nun auch mal in der Delphi-Praxis angemeldet weil ich bei meinem Projekt festhänge und mir die sonstigen Einträge im Forum leider keine Infos geben.

Ich programmierer gerade ein Programm zur Bugerkennung zum Auslesen der Fehler. Auf der linken Seite besitze ich eine DBLookuplist Komponente, wo ich neue Datensätze mit einem DBNavigator hinzufügen oder wieder entfernen kann, wo verschiedene Versionen von den Bugs aufgelistet werden. Nun sollte bei einem Klick auf eine Version, die in der DBLookuplist Komponente steht mir in anderen DBEdit-Feldern die restlichen Informationen liefern.

Da liegt aber jetzt das Problem und zwar wenn ich auf einen Eintrag in der DBLookuplist Komponente klicke wird mir aber nichts angezeigt. Anders wie bei einer ganz normalen DBListbox.

Nun zu meiner Frage: Gibt es eine Property für die DBLookuplist Komponente oder andere Möglichkeiten, sodass man durch einen Klick die Infos angezeigt bekommt oder geht das einfach bei dieser Komponente nicht?

Danke für eure Mühe schonmal.

MFG euer Baly

Sherlock 12. Aug 2009 08:36

Re: Frage zu einer DB Komponente
 
Die LookupListe ist fast wie eine normale Liste. Bei der Lookupliste kannst Du halt die auswählbaren Items aus einer Tabelle holen. Das ausgewählte Item wird dann in den aktuellen Satz gespeichert. Damit wirst Du eigentlich eher nicht den Datensatzzeiger bewegen. Etwas Eigeneinsatz muss da schon kommen, im OnChange zum Beispiel. Da kannst Du dann ein Locate mit dem ausgewählten Item machen.

Sherlock

mkinzler 12. Aug 2009 08:44

Re: Frage zu einer DB Komponente
 
Eine DBLookupList hat 2 Datenmengen, eine als Quelle und eine als Ziel

BTW. Ich werde den Beitrag in den Bereich Datenbanken verschieben. Dann kannst du dort durch Editieren des 1. Beitrages weitere Informationen zum verwendeten DBMS usw. ergänzen

DP-Maintenance 12. Aug 2009 08:44

DP-Maintenance
 
Dieses Thema wurde von "mkinzler" von "Sonstige Fragen zu Delphi" nach "Datenbanken" verschoben.
Geht um Datenbanken

Baly 12. Aug 2009 09:19

Re: Frage zu einer DB Komponente
 
Es müsste doch auch so klappen oder nicht?

Delphi-Quellcode:
procedure TForm1.DBLookupList1Click(Sender: TObject);
begin
      DBStatusProgrammierer.DataSource     := DataSource1;
      DBStatusProgrammierer.DataField      := 'Status Pro.';
      DBPrioritaetProgrammierer.DataSource := DataSource1;
      DBPrioritaetProgrammierer.DataField  := 'Priorität Pro.';
      DBAnmerkungenProgrammierer.DataSource := DataSource1;
      DBAnmerkungenProgrammierer.DataField := 'Anmerkungen Pro.';
      DBLookupList1.DataSource             := DataSource1;
      DBLookupList1.DataField              := 'Versionen';
  end;
Hier spuckt der Compiler dann eine Exception der Klasse EInvalidOperation raus:

"Kann doppelte Datasource und LookupSource nicht benutzten"

mkinzler 12. Aug 2009 09:25

Re: Frage zu einer DB Komponente
 
Die Zuweisung der DataSourcen muss vorher gemacht werden
ListSource und DataSource müssen verschieden sein

Baly 12. Aug 2009 09:41

Re: Frage zu einer DB Komponente
 
Wie meinst du des das die Zuweisung der DataSourcen vorher gemacht werden muss? Und woher bekommt man Listsource? Per Property?

mkinzler 12. Aug 2009 09:49

Re: Frage zu einer DB Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Man legt die im OI fest

Baly 12. Aug 2009 09:55

Re: Frage zu einer DB Komponente
 
Ok du hast jetzt DBLookuplistBox gemeint. Ich benutze nur eine DBLookuplist. Sollte ich lieber eine DBLookuplistBox verwenden?

mkinzler 12. Aug 2009 10:00

Re: Frage zu einer DB Komponente
 
Die entsprechenden Eigenschaften sollten identisch sein

Baly 12. Aug 2009 10:03

Re: Frage zu einer DB Komponente
 
Und wie sollen die veschieden sein? Soll ich da noch eine weitere Datasource Komponente einfügen? Sonst kann ich ja sonst datasource nichts zuweissen

Baly 13. Aug 2009 07:51

Re: Frage zu einer DB Komponente
 
Moin liebe dp´ler

habe mal alles mögliche rumprobiert...

Ich komme einfach nicht darauf wie ich durch einen Klick es anzeigen lasse.

Delphi-Quellcode:
procedure TForm1.DBLookupList1Click(Sender: TObject);
begin
      DBBugnummer.DataSource               := DataSource1;
      DBBugnummer.DataField                := 'Bugnummer';
      DBDatum.DataSource                   := DataSource1;
      DBDatum.DataField                    := 'Datum/Uhrzeit';
      DBTester.DataSource                  := DataSource1;
      DBTester.DataField                   := 'Tester';
      DBMailTester.DataSource              := DataSource1;
      DBMailTester.DataField               := 'E-Mail Tester';
      DBStatusTester.DataSource            := DataSource1;
      DBStatusTester.DataField             := 'Status Tester';
      DBPrioritaetTester.DataSource        := DataSource1;
      DBPrioritaetTester.DataField         := 'Priorität Tester';
      DBAnmerkungenTester.DataSource       := DataSource1;
      DBAnmerkungenTester.DataField        := 'Anmerkungen Tester';
      DBFehlermeldung.DataSource           := DataSource1;
      DBFehlermeldung.DataField            := 'Fehlermeldung';
      DBFehlerangaben.DataSource           := DataSource1;
      DBFehlerangaben.DataField            := 'Fehlerangaben';
      DBProgrammierer.DataSource           := DataSource1;
      DBProgrammierer.DataField            := 'Programmierer';
      DBMailProgrammierer.DataSource       := DataSource1;
      DBMailProgrammierer.DataField        := 'E-Mail Pro.';
      DBStatusProgrammierer.DataSource     := DataSource1;
      DBStatusProgrammierer.DataField      := 'Status Pro.';
      DBPrioritaetProgrammierer.DataSource := DataSource1;
      DBPrioritaetProgrammierer.DataField  := 'Priorität Pro.';
      DBAnmerkungenProgrammierer.DataSource := DataSource1;
      DBAnmerkungenProgrammierer.DataField := 'Anmerkungen Pro.';
      DBLookupList1.LookupSource           := DataSource1;
      DBLookupList1.LookupField            := 'Versionen';

      Table1.Locate('ID', DBLookupList1.FieldCount + 1 , []);

end;
Müsste aber schon die richtige richtung einschlagen oder seh ich das falsch :gruebel: ?

mfg Baly

Sherlock 13. Aug 2009 08:41

Re: Frage zu einer DB Komponente
 
Ich kann mir nicht helfen, aber alleine vom hinsehen erscheint mir das nicht richtig. Vielleicht erklärst Du nochmal (in einfacheren Worten, ohne Benennung konkreter Komponenten) was Du eigentlich willst. :gruebel:

Sherlock

Baly 13. Aug 2009 08:53

Re: Frage zu einer DB Komponente
 
Ich will das wenn ich auf einen Eintrag in der Liste klicke, mir die Daten in anderen Feldern angezeigt werden sollen. Bis jetzt klappt das ja nicht, mir wird kein Eintrag in den anderen Feldern (DB-Edits) angezeigt wenn ich auf einen Eintrag in der Liste (DBLookuplist) klicke.

Hoffe es war soweit verständlich

Sherlock 13. Aug 2009 09:06

Re: Frage zu einer DB Komponente
 
OK, dann würde ich das eher so machen, daß die Liste als DBGrid angezeigt wird. Wenn Du dort eine Zeiel anklickst, wird der Satzzeiger des DataSets entsprechend dorthin bewegt, die Details sollten dann automatisch entsprechend gefüllt werden.

Sherlock

Baly 13. Aug 2009 09:29

Re: Frage zu einer DB Komponente
 
Oh man tausend dank dir Sherlock :-D .

Wie ich einfach mir zu viele Gedanken gemacht habe und mit einer DBGrid alles wunderbar klappt. Danke nochmal

MFG Baly

Stevie 13. Aug 2009 09:59

Re: Frage zu einer DB Komponente
 
Eine LookupList dient dazu, für das dementsprechende Feld (DataSource, DataField) nur eine feste Anzahl an Werten zu erlauben, bzw vorzuschlagen (LookupSource, LookupField).
Beispiel: du willst einen neuen Bug eintragen, welchen du als harmlos, normal oder kritisch einstufen kannst. Dann würde sich eine LookupList anbieten, in welcher du die unterschiedlichen Stati vordefinierst und aus diesen für das Feld Bugstatus auswählen kannst.

Wenn du hier im Forum unter Profil die Delphi Version auswählst, mit der du arbeitest ist das im Grunde auch eine LookupList (genau genommen eine LookupCombobox).


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz