AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?
Thema durchsuchen
Ansicht
Themen-Optionen

Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?

Ein Thema von nachtstreuner · begonnen am 9. Nov 2012 · letzter Beitrag vom 9. Nov 2012
Antwort Antwort
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#1

Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?

  Alt 9. Nov 2012, 11:33
Datenbank: SQL/ACCESS • Version: XE2 • Zugriff über: ADO
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;
Miniaturansicht angehängter Grafiken
fehler.png  
Alles wird gut -

Geändert von nachtstreuner ( 9. Nov 2012 um 11:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?

  Alt 9. Nov 2012, 11:38
Die Fehlermeldung wird bestimmt hier ausgelöst - also eine Zeile später!
frmDLS_erstellen.Close; // Ersetzen durch Close
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?

  Alt 9. Nov 2012, 11:42
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
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?

  Alt 9. Nov 2012, 11:51
Was passiert denn wenn Du im Datenmodul das SQL in die Query einträgst und zur Designzeit manuell Active änderst?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#5

GELÖST: Die Anwendung verwendet für die akt. Vorgang einen Wert vom falschen Typ ?

  Alt 9. Nov 2012, 12:06
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:
//------------------------------------------------------------------------------
// 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;
Nachdem der Befehl zum schliessen des Formulars kam, hatte das datensensitive Feld DBEdit14, keinen Wert mehr, wahr also leer.
Folglich musste die Abfrage darunter fehlschlagen. Die Selectabfrage konnte keinen Wert zurückliefern.

Den Code habe ich dann wie folgt geändert :

Delphi-Quellcode:
//------------------------------------------------------------------------------
// 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;
Zur Veranschaulichung siehe Grafik unten.
Miniaturansicht angehängter Grafiken
bild1.png  
Alles wird gut -

Geändert von TBx (19. Jul 2016 um 12:52 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 09:51 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