AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Query OnUpdate-Procedure zur Laufzeit
Thema durchsuchen
Ansicht
Themen-Optionen

Query OnUpdate-Procedure zur Laufzeit

Ein Thema von Ykcim · begonnen am 22. Dez 2016 · letzter Beitrag vom 23. Dez 2016
 
nahpets
(Gast)

n/a Beiträge
 
#13

AW: Query OnUpdate-Procedure zur Laufzeit

  Alt 22. Dez 2016, 11:47
Was ich nicht verstehe: Du hast einerseits dashier:
Delphi-Quellcode:
private
  procedure TicketAfterScroll(DataSet: TDataSet);
  procedure TicketAfterInsert (DataSet: TDataSet);
  //Die nachstehende Procedure möchte ich im Create der BeforeUpdateExecute-Ereignis der FMyQuery_Ticket zuweisen
  procedure TicketBeforeUpdate(Sender: TDataSet; var StatementTypes: TStatementTypes; var Params: TDAParams);
Und andererseits jenes:
Delphi-Quellcode:
  //Object-Procedure
  FMyQuery_Ticket.AfterScroll:=TicketAfterScroll;
  FMyQuery_Ticket.AfterInsert:=TicketAfterInsert;
  FMyQuery_Ticket.BeforeUpdateExecute:=Query_Ticket_Update; //Hier kommt der Fehler
Warum machst Du bei der dritten Zuweisung was anderes, als bei den ersten beiden Zuweisungen?
  FMyQuery_Ticket.BeforeUpdate:=TicketBeforeUpdate; //Hier kam der Fehler sollte Dein Problem beheben.
Falls jedoch TicketBeforeUpdate hier die falsche Routine sein sollte, dann musst Du Query_Ticket_Update ändern.
Damit Query_Ticket_Update an der von Dir gewünschten Stelle zuweisbar wird, müsste es vermutlich so aussehen:
procedure Query_Ticket_Update(Sender: TDataSet; var StatementTypes: TStatementTypes; var Params: TDAParams);
Allerdings erscheint mir das von der Programmlogik her dann nicht sinnvoll.

Vermutlich möchtest Du eher sowas:
Delphi-Quellcode:
  private
    procedure TicketAfterScroll(DataSet: TDataSet);
    procedure TicketAfterInsert (DataSet: TDataSet);
    //Die nachstehende Procedure möchte ich im Create der BeforeUpdateExecute-Ereignis der FMyQuery_Ticket zuweisen
    procedure TicketBeforeUpdate(Sender: TDataSet; var StatementTypes: TStatementTypes; var Params: TDAParams);

    procedure Query_Ticket_SQL;
    procedure Query_Ticket_Insert;
    procedure Query_Ticket_Update;

...

procedure TDBMySQL.Query_Ticket_Update;
begin
  FMyQuery_Ticket.SQLUpdate.Add('update ticket set '+
                                'ticket_thema= :ticket_thema, '+
                                'kategorie_id= :kategorie_id, '+
                                'ticket_eroeffnung= :eroeffnung, '+
                                'ticket_schliessung= :schliessung, '+
                                'status_id= :status_id, '+
                                'computer_id= :computer_id, '+
                                'deleted= :deleted '+
                                'where ticket_id= :ticket_id');
end;

//Hier sind die Einzelheiten der Query, die dem BeforeUpdateExecute-Ereignis zugewiesen werden soll
procedure TDBMySQL.TicketBeforeUpdate(Sender: TDataSet; var StatementTypes: TStatementTypes; var Params: TDAParams);
begin
  // Achtung, das geht so nur einmal.
  // Entweder FMyQuery_Ticket.SQLUpdate.Clear hierhin oder in die folgende Prozedur
  // oder nochmal die Programmlogik überdenken. Die ist noch nicht ganz schlüssig.
  Query_Ticket_Update;
  // Sender ist ein TDataSet, warum hier noch Sender as TDataSet?
  // (Sender as TDataSet).FieldByName('ticket_thema').AsString:=FMyDataSource_Ticket.DataSet.FieldByName('ticket_thema').AsString;
  Sender.FieldByName('ticket_thema').AsString:=FMyDataSource_Ticket.DataSet.FieldByName('ticket_thema').AsString;
  Sender.FieldByName('kategorie_id').AsInteger:=FMyDataSource_Ticket.DataSet.FieldByName('kategorie_id').AsInteger;
  Sender.FieldByName('ticket_eroeffnung').AsDateTime:=FMyDataSource_Ticket.DataSet.FieldByName('ticket_eroeffnung').AsDateTime;
  Sender.FieldByName('ticket_schliessung').AsDateTime:=FMyDataSource_Ticket.DataSet.FieldByName('ticket_schliessung').AsDateTime;
  Sender.FieldByName('status_id').AsInteger:=FMyDataSource_Ticket.DataSet.FieldByName('status_id').AsInteger;
  Sender.FieldByName('computer_id').AsString:=FMyDataSource_Ticket.DataSet.FieldByName('computer_id').AsString;
  Sender.FieldByName('ticket_thema').AsString:=FMyDataSource_Ticket.DataSet.FieldByName('ticket_thema').AsString;
  Sender.FieldByName('deleted').AsBoolean:=false;
end;
  Mit Zitat antworten Zitat
 


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: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-2025 by Thomas Breitkreuz