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
Antwort Antwort
Seite 2 von 2     12   
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Query OnUpdate-Procedure zur Laufzeit

  Alt 22. Dez 2016, 11:55
Ähm, TBx könnte recht haben, dass ich mich mit der Procedure vertan habe...

Das kann ich aber erst heute Abend testen, weil ich dann erst wieder die richtige Entwicklungsumgebung verfügbar habe...

Möglicherweise werde ich mich dann ganz kleinlaut melden...

Trotzdem wäre ich an einer Antwort interessiert, wie ich die Procedure in Create-Statement richtig zuweise...

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Query OnUpdate-Procedure zur Laufzeit

  Alt 22. Dez 2016, 11:58
Ich habe noch nie eine Signatur mitgegeben, wenn ich im Create-Statement einer Event-Procedure eine andere Procedure zugewiesen habe. Musst und darfst Du auch nicht. Die dort angegebene Methode muss aber die richtige Signatur haben, was bei der zugewiesenen nicht der Fall ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

AW: Query OnUpdate-Procedure zur Laufzeit

  Alt 22. Dez 2016, 12:06
Strg+Linksklick auf beide Seiten vom :=
dann landet man bei den Deklarationen und sieht ob es richtig aussieht.
$2B or not $2B
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#14

AW: Query OnUpdate-Procedure zur Laufzeit

  Alt 22. Dez 2016, 12: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
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Query OnUpdate-Procedure zur Laufzeit

  Alt 23. Dez 2016, 15:40
Hallo Zusammen,

erst einmal ein Zwischenstand: TBX hatte Recht und ich ... hatte die falsche Procedur angegeben . Mit der richtigen kam der Fehler nicht.

Leider funktioniert das Update dennoch nicht, was ich mir jetzt zwischen den Tagen mal ansehen werde.

Vielen Dank für die Unterstützung - im gesamten Jahr!

Allen schöne Weihnachten und ein gesegnetes Jahr 2017.

Gruß
Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:14 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