Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Anwendung reagiert während ausführen von SSIS Paket nicht (https://www.delphipraxis.net/106953-anwendung-reagiert-waehrend-ausfuehren-von-ssis-paket-nicht.html)

Boppe 19. Jan 2008 16:53


Anwendung reagiert während ausführen von SSIS Paket nicht
 
Hallo Zusammen!
Ich erstelle im Moment eine Anwendung die verschiedene Datenaufbereitungsjobs erledigt und anschließend die erstellten Daten per DTS auf einen anderen MSSQL Server überträgt. Soweit so gut!

Um die einzelnen Schritte für den Nutzer zu veranschaulichen werden aktueller Status und Ergebnisse in einem Grid ausgegeben. Leider reagiert während der Übertragung meine Hauptanwendung gar nicht mehr.

Hab mir überlegt das ganze mit Threads zu realiseren allerdings steh ich im Moment irgendwie im Wald und hab keine Ahnung wie ich anfangen soll.

Hat jemand ne Idee oder nen Ansatz?

Code:
uses DTSLib_TLB;
.
.
function DoSSISPackage(DTSXFile: string):DTSExecResult;
var
  pkg        : IDTSPackage90;
  app        : TApplication;
  pkg_result : DTSExecResult;
begin
  app := TApplication.Create(nil);
  pkg := app.LoadPackage(DTSXFile, True, nil);
  pkg_result := pkg.Execute_;
  app.Free;
  result := pkg_result;
end;

k4ni 19. Jan 2008 16:57

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
ich bin mir nicht sicher, aber versuch es mal mit:
Application.ProcessMessages;

Boppe 19. Jan 2008 17:01

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Naja ganz so einfach ist es nicht!

Application.ProcessMessages würde mir was bringen wenn ich die Funktion z.B. in einer Schleife ausführen würde. Das ausführen des Paketes ansich dauert ca. 10 Minuten

Bernhard Geyer 19. Jan 2008 18:52

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Schau dir doch mal die Beispiele zu Threads an.

Anschließend packst du den Code in die Execute-Methode des Threads. Ergänzt CoInitialize am Anfang und CoUninitialize am Ende, definierst den übergabeparameter DTSXFile als Property des Threads und schon sollte es klappen.

Boppe 19. Jan 2008 19:34

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Hallo Bernhard!
Besten Dank für die Antwort! Habe nun alles in einen Thread gepackt. Allerdings happert es noch mit den "CoInitialize". Was übergeb ich hier? Pointer!? Auf was?

Gruß
Chris

Bernhard Geyer 19. Jan 2008 19:47

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Probier erstmal
Delphi-Quellcode:
CoInitialize(nil);

Boppe 19. Jan 2008 20:02

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Hatte ich schon versucht.
Leider bringt das alles nichts. Meine Anwendung steht nach wie vor wenn Sie das Paket ausführt.

Hier nochmal der neue Quelltext mit Thread.

Delphi-Quellcode:
type
  TDTSThread = class(TThread)
  private
    FDTSXFile: string;
    procedure Execute; override;
    procedure SetDTSXFile(DTSXFile: string);
  protected
    property DTSXFile: string write SetDTSXFile;
  end;
.
.
.
procedure TDTSThread.Execute;
var
  DTSpkg    : IDTSPackage90;
  DTSApp    : TApplication;
  pkgResult : DTSExecResult;
  pkgEvents : IDTSEvents90;
begin
  CoInitialize(nil);
  DTSApp := TApplication.Create(nil);
  DTSpkg := DTSApp.LoadPackage(FDTSXFile, True, pkgEvents);
  pkgResult := DTSpkg.Execute(nil,nil,nil,nil,nil);
  DTSApp.Free;
  CoUninitialize();
end;
.
.
// Aufruf
DTSThread := TDTSThread.Create(True);
DTSThread.FDTSXFile := ExtractFilePath(Forms.Application.ExeName)+'\DTS\ExportDatenaufbereitung.dtsx';
DTSThread.Execute;
Hab es noch ein bisschen modifiziert, da ich zukünftig die Events mitloggen will.

Bernhard Geyer 19. Jan 2008 20:26

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
[quote="Boppe"]

Delphi-Quellcode:
DTSThread.Execute;
Autsch! Du führst die Execute-Methode im Hauptthread aus. Du solltest schon den Thread richtig starten (Aus dem Kopf: Suspended := False).

Apollonius 19. Jan 2008 20:31

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Eher DTSThread.Resume.

Boppe 19. Jan 2008 20:49

Re: Anwendung reagiert während ausführen von SSIS Paket nich
 
Ääääähhhhmm! :? tja was soll ich sagen.... :wall:
Ich glaube jede weitere Peinlichkeit spar ich mir für heute und sag einfach Danke! Funktioniert jetzt alles perfekt.

Gruß
Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.
Seite 1 von 2  1 2      

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