AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Combobox und Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Combobox und Datenbank

Ein Thema von Bruce86 · begonnen am 6. Nov 2006 · letzter Beitrag vom 7. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#1

Combobox und Datenbank

  Alt 6. Nov 2006, 18:15
Datenbank: Paradox • Version: 7 • Zugriff über: per Combobox
Hallo

Habe da mal ne Frage! Habe eine Datenbank erstellt!
Habe eine Combobox in der die Namen der Spieler stehen! In der Datenbank stehen weitere Daten zu den Spielern, wie Nachname, Spielerposition, Einsätze, Gelbe und Rote Karten etc.! Wollte nun mal fragen wie ich es realisieren kann, dass, wenn ich auf Den Namen in der Combobox klicke, die Daten aus der Datenbank gelesen werden und die Daten in das entsprechende Edit eingetragen werden! Dies soll also dann passieren, wenn ich auf den Namen in der Combobox klicke!
Habe dafür noch eine Image im Anhang damit ihr wisst wie das so aussehen soll!
Wäre schön wenn ihr mir da helfen könntet! Mit nem Quelltext oder vielleicht einer Anwendung von euch, die ihr mir vielleicht posten könnt oder per mail senden könnt! Wäre echt super!!!

Vielen Dank im Vorraus

Euer Bruce86
Miniaturansicht angehängter Grafiken
vorlage_169.jpg  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 18:22
Nimm am Besten ne DBLookupComboBox.
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 19:01
Hi,

wenn die ComboBox als Selektor für deine Datensätze herhalten soll, dann würde ich mir beim Befüllen der ComboBox.Items den Schlüssel des Spieler-Datensatzes merken. Das geht mit der Methode AddObject(). Angenommen es gibt ein eindeutiges Feld NICKNAME:

Delphi-Quellcode:
 
begin
  with ComboBox do
  begin
    Items.Clear;
    Query.SQL.Text := 'SELECT id, nickname FROM tbl ORDER BY nickname';
    Query.Open;
    while not Query.Eof do
    begin
      Items.AddObject(Query.FieldByName('NICKNAME').AsString, Pointer(Query.FieldByName('ID').AsInteger));
      Query.Next;
    end;
    Query.Close;
  end;
end;
Wenn du dann noch das Ereignis OnChange der ComboBox bedienst, dann kannst du deine Edit-Felder füllen:

Delphi-Quellcode:
procedure TDemoForm.ComboBox1Change(Sender: TObject);
begin
  with Sender as TComboBox do
    if (ItemIndex <> -1) then
    begin
      Query.SQL.Text := 'SELECT * FROM spieler WHERE id = :id';
      Query.Params.ParamByName('id').AsInteger := Integer(Items.Objects[ItemIndex]);
      Query.Open;
      NachnameEdit.Text := Query.FieldByName('NACHNAME').AsString;
      // ...
      Query.Close;
    end;
end;
Allerdings kannst du dir das Leben auch leichter machen, wenn du die datensensitiven Controls (TDBEdit) verwendest. Insbesondere, wenn du die Daten nicht nur Anzeigen, sondern auch verändern möchtest.

Getippt und nicht getestet.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 19:46
wenn man eine datenmenge öffnet und diese dann der reihe nach durchlaufen will, sollte man den zeiger auf den ersten datensatz setzen per First().

Delphi-Quellcode:
begin
  with ComboBox do
  begin
    Items.Clear;
    Query.SQL.Text := 'SELECT id, nickname FROM tbl ORDER BY nickname';
    Query.Open;
    Query.First;
    while not Query.Eof do
    begin
      Items.AddObject(Query.FieldByName('NICKNAME').AsString, Pointer(Query.FieldByName('ID').AsInteger));
      Query.Next;
    end;
    Query.Close;
  end;
end;
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 20:33
Zitat von computer-glossar.de:
.. sollte man den zeiger auf den ersten datensatz setzen per First().
Dann aber besser gleich richtig. Close -> Datenmenge zusammenstellen -> Open. Dadurch wird sichergestellt, daß die Datenmenge auch stimmt und First wird überflüssig. Ist die Datenmenge bereits geöffnet, dann kommt auch, egal wo, keine Fehlermeldung.
Gruß
Hansa
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#6

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 20:35
Zitat von computer-glossar.de:
wenn man eine datenmenge öffnet und diese dann der reihe nach durchlaufen will, sollte man den zeiger auf den ersten datensatz setzen per First().
Wenn ich mich nicht irre, wird der Datensatzzeiger doch automatisch nach dem Öffnen einer Query (oder auch Tabelle) auf den ersten Satz gestellt, so dass hier das .First() nicht unbedingt notwendig ist Anders natürlich, wenn die Datenmenge bereits offen ist und schon einige Satzverschiebungen durchgeführt wurden und dann irgendwo im Prog nochmals die gesamte Abfragemenge durchlaufen werden soll. Da macht ein First() auf jeden Fall Sinn...
  Mit Zitat antworten Zitat
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#7

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 22:05
Versuche mich nochmal zu erklären!

Also wenn ich auf den Namen in der Combobox klicke dann soll gesagt werden lade Daten aus der Datenbank für den Namen, der angeklickt ist! Dann soll gesagt werden - schreibe Daten in das dafür vorgesehene Edit!

Wenn ich den Index der Combobox auf 0 und Aktiv des Table auf True setze ist doch sowieso der erste Spieler geladen!

Mit geht es allein um die Realisierung von:

Wie sage ich den Programm wenn ich auf einen Namen in der Combobox klicke - LADE DATEN AUS DER DATENBANK FÜR DEN NUN AKTIVEN(angeklickten) NAMEN???

und wie realisiere ich, dass das Programm weiß dass es die ausgelesenen Daten in das jeweils dafür vorgesehene Edit schreibt???

Euer Bruce86
  Mit Zitat antworten Zitat
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#8

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 22:06
Und gleich nochmal ne Frage! Wie funktioniert das Mit der DBLookupCombobox!

Wie geht man mit dieser um? Gibt es dafür ein Tutorial?

Euer Bruce86
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Combobox und Datenbank

  Alt 6. Nov 2006, 22:41
Zitat von marabu:
...Allerdings kannst du dir das Leben auch leichter machen, wenn du die datensensitiven Controls (TDBEdit) verwendest...
So gehen die Meinungen eben auseinander. Ich gehe eher vom Gegenteil aus. Für diesen Fall denke ich : Finger weg von DB-Controls.

Lese jetzt nur gerade : Paradox ? Damit ist das Thema für mich vorerst erledigt. Tip : FieldByName in der Hilfe nachlesen.
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Combobox und Datenbank

  Alt 7. Nov 2006, 08:27
Aber hallo,

Zitat von computer-glossar.de:
.. sollte man den zeiger auf den ersten datensatz setzen per First()
das macht schon die Methode Open().

Zitat von Hansa:
Dann aber besser gleich richtig. Close -> Datenmenge zusammenstellen ...
Die Zuweisung eines Statements an die Eigenschaft SQL schließt den DataSet.

@Bruce: Lass dich nicht verwirren. Wenn du dein aktuelles Problem mit Paradox gelöst hast, ist es früh genug für eine Umschulung.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:32 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