AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX] trace/breakpoint trap (5)

Ein Thema von Devil1925 · begonnen am 27. Nov 2017 · letzter Beitrag vom 27. Nov 2017
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: [FMX] trace/breakpoint trap (5)

  Alt 27. Nov 2017, 09:27
Wie ist es denn so?

Delphi-Quellcode:
  TLoadingThread = class(TThread)
  private
    FQueryCallback: TProc<TUniQuery>;
    FThreadQuery: TUniQuery;
    FThreadFilter, FThreadStation: String;
    FThreadConn: TUniConnection;
    procedure Reset;
  protected
    procedure Execute; override;
  public
    constructor Create(const AQueryCallback: TProc<TUniQuery>);
    property Filter: String read FThreadFilter write FThreadFilter;
    property Station: String read FThreadStation write FThreadStation;
    procedure DoSync;
  end;

implementation

procedure TLoadingThread.Execute;
var
  SQLFormula: string;
begin
  inherited;

  Reset;
  FThreadConn := TUniConnection.Create(nil);
  try
    FThreadConn.ProviderName := 'SQL Server';
    FThreadConn.Server := MSSQLHost;
    FThreadConn.Username := MSSQLUser;
    FThreadConn.Password := MSSQLPass;
    FThreadConn.Database := MSSQLDB;
    try
      SQLFormula := 'if Object_ID(''MOBILE_Kunden_' + FThreadStation + #39 + ') is not null Drop Table MOBILE_Kunden_' +
        FThreadStation;
      SQLExec(FThreadConn, SQLFormula);

      SQLFormula := 'Select distinct Kunden_Nr as kdn, Sortierfeld as Sortierfeld_Vorschau, Name1 as Name1_Vorschau, Strasse as Strasse_Vorschau, PLZ as PLZ_Vorschau, Ort as Ort_Vorschau, 1 as Selected into MOBILE_Kunden_'
        + FThreadStation + ' from Kundenst where ' + FThreadFilter;
      SQLExec(FThreadConn, SQLFormula);

      SQLFormula := 'Select name1_Vorschau as Name1, kdn, Sortierfeld_Vorschau as sortierfeld, Strasse_Vorschau as strasse, PLZ_Vorschau as plz, Ort_Vorschau as ort, selected from Mobile_Kunden_'
        + FThreadStation + ' order by Sortierfeld';

      FThreadQuery := GetQuery(FThreadConn, SQLFormula);

      DoSync;
    except
      on E: Exception do
      begin
        // das ist eigentlich nicht so schön, zum Entwicklen reicht's aber!
        ShowMessage(E.ClassName + ' error raised, with message : ' + E.Message);
      end;
    end;
  finally
    Reset;
  end;
end;

constructor TLoadingThread.Create(const AQueryCallback: TProc<TUniQuery>);
begin
  inherited Create(False);
  FQueryCallback := AQueryCallback;
end;

procedure TLoadingThread.DoSync;
begin
  if Assigned(FQueryCallback) then
    Synchronize(FQueryCallback(FThreadQuery));
end;

procedure TLoadingThread.Reset;
begin
  if Assigned(FThreadQuery) then
  begin
    FThreadQuery.Free;
    FThreadQuery := nil;
  end;
  if Assigned(FThreadConn) then
  begin
    FThreadConn.Free;
    FThreadConn := nil;
  end;
end;

procedure TFrmKundenwahl.OnQueryCallback(AQuery: TUniQuery);
begin
  // Diese Callback hier musste dann per TLoadingThread.Create(Self.OnQueryCallback); übergeben
  Self.L_Treffer.Text := IntToStr(AQuery.RecordCount) + ' Treffer';

  AQuery.AfterScroll := Self.QueryAfterScroll;

  Self.BS_Vorschau.DataSet.Assign(AQuery);
  Self.BS_Vorschau.DataSet.Open;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: [FMX] trace/breakpoint trap (5)

  Alt 27. Nov 2017, 11:01
Jetzt bekomme ich den Fehler
Code:
E2250 Es gibt keine überladene Version von 'Synchronize', die man mit diesen Argumenten aufrufen kann
Mein Wissens stand besagt mir, dass man synchronize nur eine Methode ohne Parameter übergeben kann... kann aber auch sein dass ich mich irre.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: [FMX] trace/breakpoint trap (5)

  Alt 27. Nov 2017, 11:57
Jetzt bekomme ich den Fehler
Code:
E2250 Es gibt keine überladene Version von 'Synchronize', die man mit diesen Argumenten aufrufen kann
Mein Wissens stand besagt mir, dass man synchronize nur eine Methode ohne Parameter übergeben kann... kann aber auch sein dass ich mich irre.
So ein bisschen Eigeninitiative...

Delphi-Quellcode:
procedure TLoadingThread.DoSync;
begin
  if Assigned(FQueryCallback) then
    Synchronize(
      procedure
      begin
        FQueryCallback(FThreadQuery)
      end);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: [FMX] trace/breakpoint trap (5)

  Alt 27. Nov 2017, 14:05
Entschuldigung, da stand ich etwas auf dem Schlauch (war wohl definitiv Zeit für die Mittagspause).

Vielen Dank, dass du mir trotzdem geantwortet hast.jetzt funktioniert es!
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  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 17:27 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