AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Inhalt eines Dataset zur Laufzeit ändern

Inhalt eines Dataset zur Laufzeit ändern

Ein Thema von Raffigator · begonnen am 12. Mär 2007 · letzter Beitrag vom 12. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2   
Raffigator

Registriert seit: 5. Mär 2007
Ort: Wedel
46 Beiträge
 
Delphi 2006 Professional
 
#1

Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 13:15
Datenbank: Oracle • Version: 10g • Zugriff über: Bdp
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:

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;
Welchen Fehler mache ich?

Gruß,
Raphael
Raphael
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 13:17
evtl. ist das connection.close schuld.
  Mit Zitat antworten Zitat
Raffigator

Registriert seit: 5. Mär 2007
Ort: Wedel
46 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 13:26
Nein, das ist es leider nicht...
Raphael
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:04
Klammere mal das
Connection.Close; aus, mir scheint es auch so als wäre das der Fehler.

Keine Verbindung, keine Daten.
Uwe
  Mit Zitat antworten Zitat
Raffigator

Registriert seit: 5. Mär 2007
Ort: Wedel
46 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:07
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...
Raphael
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:22
Ändere mal diese Zeile
CommandText := 'SELECT ORT FROM LUG.S_BLZ WHERE BLZ = ' + QuotedStr(BLZ) + ' ORDER BY ORT';
Uwe
  Mit Zitat antworten Zitat
JohannesK

Registriert seit: 17. Jul 2003
Ort: Abtwil
118 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:24
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:
SELECT BLZ FROM BLZ_Tab ORDER BY BLZ
SELECT ORT FROM ORT_Tab
Über die Master-Detailbeziehung werden dann alle die Orte angezeigt deren BLZ dem Wert der BLZ-Tabelle entspricht.
mit freundlichem Gruss

So einfach wie möglich. Aber nicht einfacher.
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:27
Oder Du könntest auch nur einen Filter für die Tabelle setzen.
Uwe
  Mit Zitat antworten Zitat
Raffigator

Registriert seit: 5. Mär 2007
Ort: Wedel
46 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:37
Zitat von uwewo:
Ändere mal diese Zeile
CommandText := 'SELECT ORT FROM LUG.S_BLZ WHERE BLZ = ' + QuotedStr(BLZ) + ' ORDER BY ORT';

Das liefert die selben Ergebnisse...



Zitat von JohannesK:
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:
SELECT BLZ FROM BLZ_Tab ORDER BY BLZ
SELECT ORT FROM ORT_Tab
Über die Master-Detailbeziehung werden dann alle die Orte angezeigt deren BLZ dem Wert der BLZ-Tabelle entspricht.
Hier sind aber Ort und BLZ in einer Tabelle abgelegt (leider nicht normalisiert)...oder verstehe ich da jetzt was falsch?
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.
Raphael
  Mit Zitat antworten Zitat
JohannesK

Registriert seit: 17. Jul 2003
Ort: Abtwil
118 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Inhalt eines Dataset zur Laufzeit ändern

  Alt 12. Mär 2007, 14:44
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:
SELECT DISTINCT BLZ FROM Tabelle ORDER BY BLZ
SELECT DISTINCT ORT FROM Tabelle
Dass die Daten physisch in der gleichen Tabelle stehen spielt keine Rolle.

Bei der Auswahl der BLZ kannst Du auch eine DBCombobox einsetzen, damit kann der Benutzer auswählen statt eingeben.
mit freundlichem Gruss

So einfach wie möglich. Aber nicht einfacher.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:29 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