![]() |
Datenbank: Oracle • Version: 10g • Zugriff über: Bdp
Inhalt eines Dataset zur Laufzeit ändern
Moin Leute,
folgendes Problem: Ich möchte in meinem Programm den Inhalt einer ComboBox abhängig machen vom Inhalt einer TextBox. Also beim Verlassen der TextBox wird der Inhalt der TextBox genommen und damit nach Einträgen in der Datenbank gesucht. Konkret: Zu einer Bankleitzahl gibt es die jeweilige Bank in verschiedenen Orten. Die möglichen Orte möchte ich dann über eine ComboBox auswählen können. Das klappt soweit auch schon für die erste BLZ die ich in die Textbox tippe. Wenn ich dann aber eine andere eingebe, bleibt die ComboBox hinterher leer. Hier mein
Delphi-Quellcode:
Welchen Fehler mache ich?procedure LSFormFINANZAMT.TBBLZ_Leave(sender: System.Object; e: System.EventArgs); var BLZ : string; begin BLZ := (Sender as Textbox).Text; BdpDataAdapBANKNAME.Active := FALSE; if BLZ <> '' then begin with BdpDataAdapBANKNAME.SelectCommand do begin if Connection.State = System.Data.ConnectionState.Closed then Connection.Open; CommandText := 'SELECT ORT FROM LUG.S_BLZ WHERE BLZ = ' + BLZ + ' ORDER BY ORT'; ExecuteNonQuery; Connection.Close; end; end; BdpDataAdapBANKNAME.Active := TRUE; end; Gruß, Raphael |
Re: Inhalt eines Dataset zur Laufzeit ändern
evtl. ist das connection.close schuld.
|
Re: Inhalt eines Dataset zur Laufzeit ändern
Nein, das ist es leider nicht...
|
Re: Inhalt eines Dataset zur Laufzeit ändern
Klammere mal das
Delphi-Quellcode:
aus, mir scheint es auch so als wäre das der Fehler.
Connection.Close;
Keine Verbindung, keine Daten. |
Re: Inhalt eines Dataset zur Laufzeit ändern
Ich habe das ja inzwischen ausgeklammert, aber das scheint es nicht so sein.
Und wenn ich es drinne lasse, klappt das ja auch mit der ersten BLZ, aber wenn ich die dann ändere, also eine zweite eingebe, dann gehts eben nicht mehr... |
Re: Inhalt eines Dataset zur Laufzeit ändern
Ändere mal diese Zeile
Delphi-Quellcode:
CommandText := 'SELECT ORT FROM LUG.S_BLZ WHERE BLZ = ' + QuotedStr(BLZ) + ' ORDER BY ORT';
|
Re: Inhalt eines Dataset zur Laufzeit ändern
Warum arbeitest Du nicht mit einer Master-Detailbeziehung und lässt beide Tabellen offen statt bei jeder Anpassung der BLZ die Tabelle zu öffnen und zu schliessen?
SQL-Code:
Über die Master-Detailbeziehung werden dann alle die Orte angezeigt deren BLZ dem Wert der BLZ-Tabelle entspricht.
SELECT BLZ FROM BLZ_Tab ORDER BY BLZ
SELECT ORT FROM ORT_Tab |
Re: Inhalt eines Dataset zur Laufzeit ändern
Oder Du könntest auch nur einen Filter für die Tabelle setzen.
|
Re: Inhalt eines Dataset zur Laufzeit ändern
Zitat:
Das liefert die selben Ergebnisse... Zitat:
Die BLZ Tabelle bleibt ja unverändert. Der Nutzer tippt ja eine BLZ in die TextBox ein und erst dann durchsuche ich die BLZ-Tabelle, in welchen Orten diese Bank vorhanden ist. |
Re: Inhalt eines Dataset zur Laufzeit ändern
In diesem Fall etwas konkreter:
Dass beide Informationen in einer Tabelle stehen spielt m.E. keine Rolle, Du öffnest ja zwei verschiedene Abfragen und damit zwei verschiedene Datasets, etwa so:
SQL-Code:
Dass die Daten physisch in der gleichen Tabelle stehen spielt keine Rolle.
SELECT DISTINCT BLZ FROM Tabelle ORDER BY BLZ
SELECT DISTINCT ORT FROM Tabelle Bei der Auswahl der BLZ kannst Du auch eine DBCombobox einsetzen, damit kann der Benutzer auswählen statt eingeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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