![]() |
Datenbank: SQL/ACCESS • Version: XE2 • Zugriff über: ADO
Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphifreunde,
ich benötige mal wieder Eure Hilfe. Ich bekomme beim Schließen eines Formulars folgende Fehlermeldung: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ Hier mal der Code-Schnipsel
Code:
//------------------------------------------------------------------------------
// Das Formular wird angezeigt //------------------------------------------------------------------------------ procedure TfrmDLS_erstellen.FormShow(Sender: TObject); begin ed_Versender.Text := Anmeldung.Vorname + ' ' + Anmeldung.Zuname; DataModul.ADOQueryFirma.SQL.Clear; DataModul.ADOQueryFirma.SQL.Text := 'SELECT * FROM DLS_Kunden order by Name asc' ; DataModul.ADOQueryFirma.Active := true; Ansprechzaehler := 0; DataModul.AdoQueryNRKreis.Active := true; end; //---------------------------------------------------------------------------- // Das Formular soll über den Button (ENDE) geschlossen werden //---------------------------------------------------------------------------- procedure TfrmDLS_erstellen.AdvGlowButton5Click(Sender: TObject); begin DataModul.AdoQueryNRKreis.active := false; DataModul.AdoQuery_Ansprechpartner.active := false; DataModul.ADOQueryFirma.active := false; // und genau an dieser Stelle kommt die Fehlermeldung frmDLS_erstellen.Close; end; //------------------------------------------------------------------------------ // Das Formular wird geschlossen //------------------------------------------------------------------------------ procedure TfrmDLS_erstellen.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; if self = frmDLS_erstellen then frmDLS_erstellen :=nil; end; |
AW: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?
Die Fehlermeldung wird bestimmt hier ausgelöst - also eine Zeile später!
Delphi-Quellcode:
frmDLS_erstellen.Close; // Ersetzen durch Close
|
AW: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?
Hallo Union,
danke für die Antwort, leider nicht... Habe die Änderung mal durchgeführt und getestet. Im Debugger wird die Fehlermeldung genau in der vomn mir beschriebenen Zeile ausgelöst
Code:
DataModul.ADOQueryFirma.active := false; // und genau an dieser Stelle kommt die Fehlermeldung
|
AW: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?
Was passiert denn wenn Du im Datenmodul das SQL in die Query einträgst und zur Designzeit manuell Active änderst?
|
GELÖST: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Union,
danke für den Hinweis. Ich habe soeben das Problem gelöst. Die Ursache hierfür lag ganz woanderst, und möchte Euch auch die Lösung nicht vorenthalten Hier der fehlerbehaftete Code:
Delphi-Quellcode:
Nachdem der Befehl zum schliessen des Formulars kam, hatte das datensensitive Feld DBEdit14, keinen Wert mehr, wahr also leer.
//------------------------------------------------------------------------------
// Neue Anfrage, wenn Kunde gewechselt wird, Ansprechpartner aktualisieren //------------------------------------------------------------------------------ procedure TfrmDLS_erstellen.DBEdit1Change(Sender: TObject); begin With dataModul do begin if DBEdit14.Text <> '' then AdoQuery_Ansprechpartner.SQL.Clear; AdoQuery_Ansprechpartner.SQL.Text := 'SELECT * from DLS_KDAnsprech '+ 'WHERE DLS_KDAnsprech.KLFDNR = :sKLFDNR order by Name asc'; AdoQuery_Ansprechpartner.Parameters.ParamByName('sKLFDNR').Value := DBEdit14.Text; AdoQuery_Ansprechpartner.Active := true; end; end; Folglich musste die Abfrage darunter fehlschlagen. Die Selectabfrage konnte keinen Wert zurückliefern. Den Code habe ich dann wie folgt geändert :
Delphi-Quellcode:
Zur Veranschaulichung siehe Grafik unten.
//------------------------------------------------------------------------------
// Neue Anfrage, wenn Kunde gewechselt wird, Ansprechpartner aktualisieren //------------------------------------------------------------------------------ procedure TfrmDLS_erstellen.DBEdit1Change(Sender: TObject); begin With dataModul do begin if DBEdit14.Text <> '' then begin // hier begin eingefügt AdoQuery_Ansprechpartner.SQL.Clear; AdoQuery_Ansprechpartner.SQL.Text := 'SELECT * from DLS_KDAnsprech '+ 'WHERE DLS_KDAnsprech.KLFDNR = :sKLFDNR order by Name asc'; AdoQuery_Ansprechpartner.Parameters.ParamByName('sKLFDNR').Value := DBEdit14.Text; AdoQuery_Ansprechpartner.Active := true; end; // hier end eingefügt end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 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 by Thomas Breitkreuz