Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE? (https://www.delphipraxis.net/181322-fahrzeughersteller-auswaehlen-und-die-dazu-gehoerigen-modelle-filtern-aber-wie.html)

sammynrw 6. Aug 2014 11:13

Datenbank: MySQL • Version: 5. • Zugriff über: MyDac

Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Hallo Freunde,

Ich brauche mal einen Ideen Ansatz wie ich die Fahrzeugmodelle anzeigen lasse aus der MySQL Datenbank nach dem ich den Fahrzeughersteller Ausgewählt habe.

Ich hatte mal ein Thema darüber gefunden ... finde ihn leider nicht mehr :(

Dejan Vu 6. Aug 2014 11:20

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
In welcher Form stellst Du dir die Ideen vor? Queries? UI-Design? Wireframe?

sammynrw 6. Aug 2014 11:22

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Ich arbeite mit MyDac Komponenten für die MySql Verarbeitung. Und 2 DBLookupComboBoxen nehme ich damit die Daten angezeigt werden.

Nur das mit dem Filtern geht nicht :(

Captnemo 6. Aug 2014 11:25

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Code:
Tabelle "Hersteller"

ID | Herstellername
---+---------------
1  | Audi
2  | Mercedes
3  | BMW

Tabelle "Modelle"

ID | HerstID | Modell
---+---------+-------
1  | 1       | A8
2  | 1       | A6
3  | 2       | C200
usw.
SQL='Select * from Modelle where HerstID=1'
Jetzt erhältst du nur die Audimodelle.

Kenn jetzt deine Tabellen nicht.

Was war jetzt die Frage? Nach dem SQL-Syntax, oder wie man das in Delphi macht?

Captnemo 6. Aug 2014 11:28

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267671)
Ich arbeite mit MyDac Komponenten für die MySql Verarbeitung. Und 2 DBLookupComboBoxen nehme ich damit die Daten angezeigt werden.

Nur das mit dem Filtern geht nicht :(

Ich nehme jetzt mal an 1. Combobox mit Hersteller, und dann je nach dem was gewählt ist, die 2. Combobox mit Modell?

Dann nach der Auswahl der 1. Combobox mit einer SQL-Query die 2. Combobox bestücken.

Darlo 6. Aug 2014 11:28

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Im OnChange vielleicht
Delphi-Quellcode:
SELECT modell FROM fahrzeuge WHERE herstellerID = X

sammynrw 6. Aug 2014 11:29

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Diese Variante habe ich ausprobiert ... da bekomme ich aber einen syntax fehler ....

Delphi-Quellcode:
MyQuery4.FilterSQL := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

Darlo 6. Aug 2014 11:30

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267677)
Diese Variante habe ich ausprobiert ... da bekomme ich aber einen syntax fehler ....

Delphi-Quellcode:
MyQuery4.FilterSQL := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

Delphi-Quellcode:
MyQuery4.SQL.Text:= 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

sammynrw 6. Aug 2014 11:30

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von Captnemo (Beitrag 1267675)
Zitat:

Zitat von sammynrw (Beitrag 1267671)
Ich arbeite mit MyDac Komponenten für die MySql Verarbeitung. Und 2 DBLookupComboBoxen nehme ich damit die Daten angezeigt werden.

Nur das mit dem Filtern geht nicht :(

Ich nehme jetzt mal an 1. Combobox mit Hersteller, und dann je nach dem was gewählt ist, die 2. Combobox mit Modell?

Dann nach der Auswahl der 1. Combobox mit einer SQL-Query die 2. Combobox bestücken.


Genauso wollte ich das machen .... aber irgendwo habe ich einen Geistige Sperre :(

sammynrw 6. Aug 2014 11:31

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von Darlo (Beitrag 1267678)
Zitat:

Zitat von sammynrw (Beitrag 1267677)
Diese Variante habe ich ausprobiert ... da bekomme ich aber einen syntax fehler ....

Delphi-Quellcode:
MyQuery4.FilterSQL := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

Delphi-Quellcode:
MyQuery4.SQL.Text:= 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';


ich probiere das mal aus :-D:-D

sammynrw 6. Aug 2014 11:34

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267680)
Zitat:

Zitat von Darlo (Beitrag 1267678)
Zitat:

Zitat von sammynrw (Beitrag 1267677)
Diese Variante habe ich ausprobiert ... da bekomme ich aber einen syntax fehler ....

Delphi-Quellcode:
MyQuery4.FilterSQL := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

Delphi-Quellcode:
MyQuery4.SQL.Text:= 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';


ich probiere das mal aus :-D:-D

Jetzt wird die DBLookupComboBox Deaktiviert .... keine Auswahl mehr vorhanden

Captnemo 6. Aug 2014 11:35

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267677)
Diese Variante habe ich ausprobiert ... da bekomme ich aber einen syntax fehler ....

Delphi-Quellcode:
MyQuery4.FilterSQL := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

Bin jetzt nicht sicher, aber ich nehme mal an, dass bei MyDAC FilterSQL bedeutet, dass in der Ergebnismenge der SQL-Abfrage gefiltert werden soll.

Statt MyQuery4.FilterSQL nimm MyQuery4.SQL.Text. Dann bekommst du in der Ergebnismenge auch nur das zurück, was du benötigst und die Filterung übernimmt richtigerweise der SQL-Server.

Captnemo 6. Aug 2014 11:36

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267681)
Zitat:

Zitat von sammynrw (Beitrag 1267680)
Zitat:

Zitat von Darlo (Beitrag 1267678)
Zitat:

Zitat von sammynrw (Beitrag 1267677)
Diese Variante habe ich ausprobiert ... da bekomme ich aber einen syntax fehler ....

Delphi-Quellcode:
MyQuery4.FilterSQL := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

Delphi-Quellcode:
MyQuery4.SQL.Text:= 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';


ich probiere das mal aus :-D:-D

Jetzt wird die DBLookupComboBox Deaktiviert .... keine Auswahl mehr vorhanden

Wie wär's mal mit mehr Code-Zeilen? Was du überhaupt so machst.

sammynrw 6. Aug 2014 11:42

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Ich möchte bei Auswählen des Hersteller in der 2. DBLookupcombobox die Modelle angezeigt bekommen.

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

end;
I

Captnemo 6. Aug 2014 11:44

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267686)
Ich möchte bei Auswählen des Hersteller in der 2. DBLookupcombobox die Modelle angezeigt bekommen.

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

end;
I

Du musst natürlich das Query auch auch active setzen ;-)

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';
MyQuery4.active := True;

end;

Darlo 6. Aug 2014 11:45

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Wie wäre es wenn Du das "Select" auch ausführst ;-)

Darlo 6. Aug 2014 11:46

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
@ Captnemo:
Da wir eh zur selben Zeit inhaltlich das selbe schreiben darfst Du jetzt übernehmen ;-)

sammynrw 6. Aug 2014 11:46

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von Captnemo (Beitrag 1267688)
Zitat:

Zitat von sammynrw (Beitrag 1267686)
Ich möchte bei Auswählen des Hersteller in der 2. DBLookupcombobox die Modelle angezeigt bekommen.

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

end;
I

Du musst natürlich das Query auch auch active setzen ;-)

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';
MyQuery4.active := True;

end;


OOOOHHHHH MAAANNNNNN :wall: .... das warst die ganze zeit .... Vielen dank für deine hilfe

Captnemo 6. Aug 2014 11:47

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von Darlo (Beitrag 1267690)
@ Captnemo:
Da wir eh zur selben Zeit inhaltlich das selbe schreiben darfst Du jetzt übernehmen ;-)

Sorry ;-)

Darlo 6. Aug 2014 11:49

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267691)
OOOOHHHHH MAAANNNNNN :wall: .... das warst die ganze zeit .... Vielen dank für deine hilfe

Nicht ganz, FilterSql war auch nicht optimal ;-)

Captnemo 6. Aug 2014 11:54

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von sammynrw (Beitrag 1267691)
Zitat:

Zitat von Captnemo (Beitrag 1267688)
Zitat:

Zitat von sammynrw (Beitrag 1267686)
Ich möchte bei Auswählen des Hersteller in der 2. DBLookupcombobox die Modelle angezeigt bekommen.

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

end;
I

Du musst natürlich das Query auch auch active setzen ;-)

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';
MyQuery4.active := True;

end;


OOOOHHHHH MAAANNNNNN :wall: .... das warst die ganze zeit .... Vielen dank für deine hilfe

Besser ist es, wenn du im Query mit Parametern arbeitest. Also in etwas so:

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin
  MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = :markenID';
  MyQuery4.Parameters.parseSQL(MyQuery4.SQL.Text, True);
  MyQuery4.Parameters.ParamValues['markenID']:=Marken_ID; //<- Anstelle von Marken_ID musst du
                                                           //   narürlich eine Variable nehmen, in
                                                           //   die ID deines ausgewählten Herstellers
                                                           //   seht.
  MyQuery4.active := True;
end;
Wenn du mit umfangreicheren Abfragen arbeitest, dann macht das durch aus Sinn.
Noch wesentlich komfortabler (und meiner Meinung nach übersichtlicher) wird das, wenn du dir dafür eine Klasse erzeugst, die das für dich macht.

sammynrw 6. Aug 2014 12:57

AW: Fahrzeughersteller Auswählen und die dazu gehörigen Modelle Filtern ... aber WIE?
 
Zitat:

Zitat von Captnemo (Beitrag 1267696)
Zitat:

Zitat von sammynrw (Beitrag 1267691)
Zitat:

Zitat von Captnemo (Beitrag 1267688)
Zitat:

Zitat von sammynrw (Beitrag 1267686)
Ich möchte bei Auswählen des Hersteller in der 2. DBLookupcombobox die Modelle angezeigt bekommen.

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';

end;
I

Du musst natürlich das Query auch auch active setzen ;-)

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin

MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = 140';
MyQuery4.active := True;

end;


OOOOHHHHH MAAANNNNNN :wall: .... das warst die ganze zeit .... Vielen dank für deine hilfe

Besser ist es, wenn du im Query mit Parametern arbeitest. Also in etwas so:

Delphi-Quellcode:
procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
begin
  MyQuery4.SQL.Text := 'SELECT * FROM fahrzeug_modelle WHERE marken_id = :markenID';
  MyQuery4.Parameters.parseSQL(MyQuery4.SQL.Text, True);
  MyQuery4.Parameters.ParamValues['markenID']:=Marken_ID; //<- Anstelle von Marken_ID musst du
                                                           //   narürlich eine Variable nehmen, in
                                                           //   die ID deines ausgewählten Herstellers
                                                           //   seht.
  MyQuery4.active := True;
end;
Wenn du mit umfangreicheren Abfragen arbeitest, dann macht das durch aus Sinn.
Noch wesentlich komfortabler (und meiner Meinung nach übersichtlicher) wird das, wenn du dir dafür eine Klasse erzeugst, die das für dich macht.

Dann muss ich mich mit diesem Thema noch mehr beschäftigen ... vielen dank für eure hilfe


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