Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datenbankeinträge durch einen listbox-klick anzeigen lassen (https://www.delphipraxis.net/136696-datenbankeintraege-durch-einen-listbox-klick-anzeigen-lassen.html)

Ouou 6. Jul 2009 10:39


Datenbankeinträge durch einen listbox-klick anzeigen lassen
 
Hallo miteinander,

ich hätte mal eine frage und zwar besitzte ich eine listbox, in der verschiedene einträge sind. nun möchte ich wenn ich auf die einzelnen einträge der listbox klicke die werte die in meiner datenbank sind in den vorhanden dbedit feldern anzeigen lassen.

kann mir einer helfen wie ich durch einen klick auf die einträge der listbox diese werte in den dbedits anzeigen lassen kann? ich kommme einfach nicht darauf.

danke schon mal für die hilfe.

mfg

DeddyH 6. Jul 2009 10:45

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Das müsste über eine parametrisierte Query zu machen sein. Angenommen, in Deiner Listbox stehen Namen, dann könnte das so gehen:
Delphi-Quellcode:
Query.Close;
Query.SQL.Text := 'SELECT Feld1,Feld2 FROM Tabelle WHERE Name = :name';
Query.ParamByName('name').Value := ListBox.Items[ListBox.ItemIndex];
Query.Open;
Das SQL musst Du natürlich nicht jedesmal neu zuweisen, sondern kannst das auch zur Designtime fest eintragen (samt Parameter).

Ouou 6. Jul 2009 10:51

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
hmm mein fehler, ich hätte noch dazu schreiben solln, dass ich mit einer paradox datenbank arbeite (ich weiss paradox sollte man nicht mehr verwenden usw...). will aber erstmal mit ner paradox anfangen, und mich weiter vorarbeiten. wie läuft des denn dann ab wenn man das mit paradox macht?

mkinzler 6. Jul 2009 11:20

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Genauso.

Ouou 6. Jul 2009 11:28

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Und wie parametisiere ich query das es nicht mehr ein nichtdeklarierter bezeichner ist?

mkinzler 6. Jul 2009 11:33

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Wie hast du die TQuery-Instanz genannt?

Ouou 6. Jul 2009 11:42

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
also ich habe es bis jetzt mit einer TTable gemacht und nicht mit einer TQuery. Funktioniert es genauso wie mit einer TTable?

mkinzler 6. Jul 2009 11:45

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Der Zugriff ja. Man gibt allerdings eine SQL-Abfrage statt dem Tabellennamen an.

Ouou 6. Jul 2009 11:47

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
man benötigt aber trotzdem eine TTable oder? weisst du wo man des nachschauen(nachlesen) kann für die SQL-Abfrage?

Sherlock 6. Jul 2009 11:57

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
http://databases.about.com/od/sql/a/sqlfundamentals.htm

Sherlock

mkinzler 6. Jul 2009 12:18

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
http://www.delphi-treff.de/tutorials...ittene/page/6/

DeddyH 6. Jul 2009 12:26

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Du brauchst keine TTable, die TQuery übernimmt die Aufgabe komplett. Du musst diese also statt der Table als Dataset angeben, dann funktioniert das auch.

Ouou 6. Jul 2009 12:46

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Zitat:

Du brauchst keine TTable, die TQuery übernimmt die Aufgabe komplett. Du musst diese also statt der Table als Dataset angeben, dann funktioniert das auch.
hab jetzt die TTable entfernt. Kann aber bei Dataset nichts zuweissen...?

DeddyH 6. Jul 2009 12:51

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Du hast doch eine Datasource, oder? Da stand vorher als Dataset die TTable drin, da muss nun die TQuery rein.

Ouou 6. Jul 2009 12:54

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
ja genau aber jetzt kann ich nichts mehr auswählen bei dataset. es gibt keine möglichkeit. das feld ist leer

Ouou 6. Jul 2009 12:55

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
ok jetzt hab ich es. jetzt steht query innen...

Ouou 6. Jul 2009 13:15

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Delphi-Quellcode:
Query1.Close;
    Query1.SQL.Text := 'SELECT Programmierer FROM KFZ.DB WHERE Programmierer = :Programmierer';
    Query1.ParamByName('Programmierer').Value := ListBox1.Items[ListBox1.ItemIndex];
    Query1.Open;
hab des jetzt mal so gemacht. bei jedem klick auf einen eintrag der listbox kommt bei mir aber eine debugger-exception. (Das Feld Kurzbeschreibung wurde nicht gefunden.)Obwohl es vorhanden ist.

DeddyH 6. Jul 2009 13:19

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Du fragst das Feld ja auch gar nicht ab.
Delphi-Quellcode:
Query1.Close;
    Query1.SQL.Text := 'SELECT Programmierer, Kurzbezeichnung FROM KFZ.DB WHERE Programmierer = :Programmierer';
    Query1.ParamByName('Programmierer').Value := ListBox1.Items[ListBox1.ItemIndex];
    Query1.Open;

Ouou 6. Jul 2009 13:28

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
ahh :wall: . ja ok hab jetzt alle felder abgefragt und es kommt keine meldung mehr. bei der TQuery muss die Eigenschaft active auf true sein beim kompilieren oder? weil wenn ich sie auf true setzten will kommt ein fehler mit: Quer1: Keine SQL-Anweisung verfügbar.

DeddyH 6. Jul 2009 13:33

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Du kannst Active zur Designtime nur dann true setzen, wenn Du in der SQL-Eigenschaft auch valides SQL eingetragen hast. Aber durch das "Open" zur Laufzeit erzielst Du denselben Effekt.

Ouou 6. Jul 2009 13:36

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
achso ok. aber ein problem hab ich jetzt noch und zwar, dass es auf dem klick bei einem eintrag der listbox angezeigt wird. also hier der Programmierer...

wird bis jetzt nicht angezeigt.

DeddyH 6. Jul 2009 13:51

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Stimmen denn die ganzen Zuweisungen (Datasource, Dataset, Datafield, etc.)?

Ouou 6. Jul 2009 14:03

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
bei der TDataSource:

Eigenschaft von Dataset: Quer1

Datasource von dataset hat keine zuweisung. kann man auch nichts auswählen.

bei der TQuery:

Eigenschaft Datasource hat auch keine zweisung. da kann man auch nichts auswählen.

wüsste jetzt nicht was da fehlen sollte...

bei databasename von TQuery und TDatasource habe ich jeweils den pfad angegeben wo ich mein Projekt und die db gespeichert habe.

DeddyH 6. Jul 2009 14:08

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Und beim DBEdit sind Datasource und DataField zugewiesen?

Ouou 6. Jul 2009 14:13

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
ja ist auch alles zugewiesen. wenn ich bei einem dbedit feld auf datafield klicke steht zwar das zugewiesene drinnen aber kommt eine fehlermeldung wo steht: Quer1: keine sql-anweisung verfügbar

DeddyH 6. Jul 2009 14:22

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Es steht ja auch nichts im SQL des Queries. Du musst Datafield nach dem Aktivieren des Queries zuweisen.

Ouou 6. Jul 2009 14:29

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
kannst du mir bitte sagen wie des geht? :gruebel:

DeddyH 6. Jul 2009 14:56

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Ich versuch' s mal (ich nutze die ganzen datensensitiven Eingabefelder normalerweise nicht):
Delphi-Quellcode:
Query1.Close;
Query1.SQL.Text := 'SELECT Programmierer, Kurzbezeichnung FROM KFZ.DB WHERE Programmierer = :Programmierer';
Query1.ParamByName('Programmierer').Value := ListBox1.Items[ListBox1.ItemIndex];
Query1.Open;
DBEdit.DataField := 'Kurzbezeichnung';

Ouou 6. Jul 2009 15:00

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Funktioniert nicht da DBEdit ein nichtdeklarierter Bezeichner ist

DeddyH 6. Jul 2009 15:01

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
*grmpf* Ich kann doch nicht wissen, wie Du Deine Komponenten benennst, Du musst da schon den richtigen Namen eintragen.

Ouou 6. Jul 2009 15:05

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
jo sry kleiner scherz am rande :lol: . das klappt leider nicht. es wird im dbedit feld nichts angezeigt. hab alle einträge durchgeklickt... ich verzweifel noch :evil:

mkinzler 6. Jul 2009 15:10

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Häng das Programm doch mal an

Ouou 7. Jul 2009 07:25

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Liste der Anhänge anzeigen (Anzahl: 1)
Morgen,

hatte es gestern nicht mehr geschafft das programm anzuhängen. hier ist es hoffe es hilft.

mfg

mkinzler 7. Jul 2009 07:48

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Dreh mal die Reihenfolge um:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
    Query1.Close;
    Query1.SQL.Text := 'SELECT Programmierer, Kurzbeschreibung, MailProgrammierer, Status, Prioritaet, Anmerkungen, Tester, MailTester, StatusTester, PrioritaetTester, AnmerkungenTester, Bugnummer, Datum, Uhrzeit, Fehlermeldung FROM KFZ.DB WHERE Programmierer = :Programmierer';
    Query1.ParamByName('Programmierer').Value := ListBox1.Items[ListBox1.ItemIndex];
    Query1.Open;
    DBProgrammierer.DataSource     := dsKFZ;
    DBProgrammierer.DataField      := 'Programmierer';
    DBMailProgrammierer.DataSource := dsKFZ;
    DBMailProgrammierer.DataField  := 'MailProgrammierer';
    DBStatus.DataSource            := dsKFZ;
    DBStatus.DataField             := 'Status';
    DBPrioritaet.DataSource        := dsKFZ;
    DBPrioritaet.DataField         := 'Prioritaet';
    DBAnmerkungen.DataSource       := dsKFZ;
    DBAnmerkungen.DataField        := 'Anmerkungen';
    DBBugnummer.DataSource         := dsKFZ;
    DBBugnummer.DataField          := 'Bugnummer';
    DBDatum.DataSource             := dsKFZ;
    DBDatum.DataField              := 'Datum';
    DBUhrzeit.DataSource           := dsKFZ;
    DBUhrzeit.DataField            := 'Uhrzeit';
    DBTester.DataSource            := dsKFZ;
    DBTester.DataField             := 'Tester';
    DBMailTester.DataSource        := dsKFZ;
    DBMailTester.DataField         := 'MailTester';
    DBStatusTester.DataSource      := dsKFZ;
    DBStatusTester.DataField       := 'StatusTester';
    DBPrioritaetTester.DataSource  := dsKFZ;
    DBPrioritaetTester.DataField   := 'PrioritaetTester';
    DBAnmerkungenTester.DataSource := dsKFZ;
    DBAnmerkungenTester.DataField  := 'AnmerkungenTester';
    DBFehlermeldung.DataSource     := dsKFZ;
    DBFehlermeldung.DataField      := 'Fehlermeldung';
    DBKurzbeschreibung.DataSource  := dsKFZ;
    DBKurzbeschreibung.DataField   := 'Kurzbeschreibung';
    DBProgrammierer.DataField := 'Programmierer';

end;
Aber wie schon geschrieben, kannst du die Abfrage auch direkt in der IDE setzen

Ouou 7. Jul 2009 08:01

Re: Datenbankeinträge durch einen listbox-klick anzeigen las
 
Also es wird immer noch nichts angezeigt wenn ich auf einen eintrag in der Listbox klicke. Ich versteh es nicht müsste doch normal so passen alles :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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