![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery, TDataSource
Kunden auf Rechnungsform eingeben/anzeigen
Hallo,
ich möchte auf der Rechnungsform den KundenNamen in ein TEdit eintragen und wenn nötig suchen lassen. Gebe ich z.B. "Mü" für "Müller" ein, dann sollte sich beim OnExit des TEdits die Kundenübersicht öffnen, mit den Namen aus der KundenTabelle, sortiert nach "Mü.." Bei dem folgenden Code bekomme ich allerdings die Meldung "Parameter 'suche' nicht gefunden":
Delphi-Quellcode:
Wer weiß Bescheid? Vielen Dank für Eure Hilfe!
procedure TFRechnungen.EditMatchExit(Sender: TObject);
begin with FKunden.QueryKunden do begin SQL.Text := 'SELECT * FROM Kunden WHERE (NName like : suche) OR (VName) like : suche)'; ParamByName('suche').asString : = EditMatch.Text +'%'; Open; Gruß Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Versuchs mal so:
Delphi-Quellcode:
SQL.Text := 'SELECT * FROM Kunden WHERE (NName like :suche) OR
(VName like :suche)'; |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Danke mkinzler für den Hinweis. Hat geklappt!
Folgende Fragen gäb's noch: Wie bitte könnte ich nur für diesen Vorgang das Fenster der Kundenübersicht verkleinern? Aus der Kundenübersicht möchte ich einen Kunden per Klick auswählen und seine Daten auf der Rechnungsform in die Felder EditNName, EditVName EditStrasse usw. eingetragen lassen. Gruß Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo Lombi,
meinst du mit Verkleinern das Minimieren des Fensters Kundenübersicht? Ich würde das Fenster modal anzeigen, dann hast du dieses Problem gar nicht. Nach dem Auswählen des Datensatzes wird das Fenster automatisch geschlossen, wenn du es willst. Grüße vom marabu |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo marabu,
ich meine nicht das Minimieren der Kundenübersicht. Normalerweise werden die Forms in voller Bildschirmgröße dargestellt. Beim OnExit des EditMatch wird die KundenListe (FKundenListe.Show) mit den Treffern gezeigt. Bei dieser Übersicht wollte ich eben nicht den ganzen Bildschirm ausfüllen. Mit Height/Width-Einstellung der Form scheint's zu funktionieren. Zitat:
Zitat:
Was ist bitte zu tun? Gruß Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo Lombi,
die Übernahme der Kundendaten könntest du im Ereignis OnDblClick() des DBGrid vornehmen. Nach erfolgreicher Übernahme kannst du dann ModalResult auf mrOK setzen und dein modaler Auswahldialog wird geschlossen. Die Dimensionierung der Form über die Eigenschaften Height und Width machst du schon richtig. marabu |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Schönen guten Morgen marabu!
Zitat:
staben einbezogen werden, z.b. statt nach "Meier" möchte ich nach "meier" suchen und trotzdem alle "Meier, MEIER" als Treffer erhalten. Bis dann und viele Grüße Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Guten Morgen Lombi,
du kannst die Zeichenketten mit der LOCALSQL-Funktion UPPER() normieren:
SQL-Code:
Grüße vom marabu
SELECT * FROM Kunden WHERE UPPER(NName) LIKE :suche OR UPPER(VName) LIKE :suche
|
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo marabu,
Zitat:
Beste Grüße Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Ist der Suchstring auch Uppercase?
|
Re: Kunden auf Rechnungsform eingeben/anzeigen
Entschuldigung für meinen Schnellschuß von soeben. Da ich in erster Linie
nach "meier" (klein) suche, muß der Code selbstverständlich so lauten:
Delphi-Quellcode:
Danke nochmals!
SELECT * FROM Kunden WHERE LOWER(NName) LIKE :suche OR LOWER(VName) LIKE :suche OR UPPER(NName) LIKE :suche OR UPPER(VName) LIKE :suche;
Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Am besten wandelst du alles in Groß oder Kleinbuchstaben um:
SQL-Code:
SELECT * FROM Kunden WHERE LOWER(NName) LIKE LOWER(:suche) OR LOWER(VName) LIKE LOWER(:suche);
|
Brauche ich UPPER bei Groß- oder Kleinbuchstaben gar nicht mehr zu deklarieren?
Muß ich eigentlich nach meinem SQL.Text noch ParamCheck := True angeben oder kann das wegfallen? Zitat:
Delphi-Quellcode:
Leider immer noch keine Datenübernahme in EditMatch auf Form Rechnung.
procedure TFKundenListe.DBGridKundenDblClick(Sender: TObject);
begin if ModalResult = mrOK then FRechnungen.EditMatch.Text := FKunden.EditMatch.Text; Close; end; Gruß Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Zitat:
z.B. Wert in DB Suchstring Maier maier MAIER mAiEr wird zu maier maier maier maier Zitat:
|
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo,
Zitat:
Delphi-Quellcode:
Leider immer noch keine Datenübernahme in EditMatch auf Form Rechnung.
procedure TFKundenListe.DBGridKundenDblClick(Sender: TObject);
begin if ModalResult = mrOK then FRechnungen.EditMatch.Text := FKunden.EditMatch.Text; Close; end; Wer hilft mir bitte? Gruß Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Füge mal ein
Delphi-Quellcode:
ein.
FRechnungen.Update;
|
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo Lombi,
Delphi-Quellcode:
erst musst du die Daten übernehmen, dann schließt du das Fenster indem du ModalResult auf mrOK setzt. Die Anzeige im anderen Fenster müsste durch die Zuweisung eigentlich automatisch aktualisiert worden sein.
procedure TFKundenListe.DBGridKundenDblClick(Sender: TObject);
begin FRechnungen.EditMatch.Text := FKunden.EditMatch.Text; ModalResult := mrOK; end; Grüße vom marabu |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Hallo LOMBI,
ich würde folgende Vorgehensweise empfehlen: auf dem Rechnungsformular einen Button 'Kundensuche' plazieren mit dem OnClickEreignis
Code:
In der (allgemein verwendbaren) Form FKundenListe diese um ein EingabeFeld 'EditSuch' erweitern und hier am besten im OnKeyPress (sofern Key=#13 -> RETURN-Taste) die Suche starten. Egal, ob nun exakt ein Kunde gefunden wurde oder gar mehrere, per Doppelclick in das DBGrid übergibst Du den ausgewählten Kunden dann an das Rechnungsformular:
procedure TFRechnung.ButtonKundenSucheClick(Sender: TObject);
begin //--ist die Form schon vorhanden? if not Assigned(FKundenListe) then Application.CreateForm(TFKundenListe, FKundenListe); //--KundenListe Modal anzeigen if FKundenListe.ShowModal = mrOK then begin FRechnung.EditNName.Text := FKundenListe.qryKunden.FieldByName('NName').Text; FRechnung.EditVName.Text := FKundenListe.qryKunden.FieldByName('VName').Text; //.. end; //--> qryKunden steht für die Suchabfrage nach Kunden end;
Code:
Die Suche sollte immer erst dann gestartet werden, wenn das Eingabefeld mit RETURN abgeschlossen wurde, um unnötige Suchvorgänge bei jedem Tastendruck zu sparen...
procedure TFKundenListe.DBGridKundenDblClick(Sender: TObject);
begin ModalResult = mrOK ; end; Das nur mal so als Denkanstoß ;-) Viellcht hilft Dir das weiter.. |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Herzlichen Dank an Euch!
Hier ist mein Ergebnis:
Delphi-Quellcode:
ModalResult := mrOK reicht allein nicht, um die KundenListe zu schließen.
procedure TFKundenListe.DBGridKundenDblClick(Sender: TObject);
begin FRechnungen.EditMatch.Text := FKunden.QueryKunden.FieldByName('NName').Text; ModalResult := mrOK; Close; end; Die Forms sind bei mir mit Form.Show und nicht mit Form.ShowModal geöffnet und deshalb "Close". Beste Grüße Lombi |
Re: Kunden auf Rechnungsform eingeben/anzeigen
Zitat:
Delphi-Quellcode:
ersetzen.
FRechnungen.Update;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 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