AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC Update durch TFDQuery
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC Update durch TFDQuery

Ein Thema von Stefan1286b · begonnen am 4. Okt 2020 · letzter Beitrag vom 5. Okt 2020
Antwort Antwort
Stefan1286b

Registriert seit: 6. Jan 2012
Ort: Dinklage
25 Beiträge
 
Delphi 11 Alexandria
 
#1

FireDAC Update durch TFDQuery

  Alt 4. Okt 2020, 12:09
Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC
Wenn Ich in Delphi (FMX) FireDAC eine Update einer Tabelle ausführen möchte Friert das ganze Programm ein. Es geht nichts mehr. Ich muss es killen.
Wenn ich eine andere Query welche die selbe Tabelle geöffnet hat auf Active := false setze funktioniert es. Die andere Query ist ReadOnly, aber das mach keinen Unterschied.
LockMode ist überall auf lmNone gestellt und sollte auch nur dann ein Problem sein, wenn Ich in einem anderen Query einen Record bearbeite, dass passiert aber nirgendwo.
In ADO war das noch nie ein Problem.

Code:
procedure TFrmMain.PopupMenuProjekteClick(Sender: TObject);
var
  q: TFDQuery;
begin
  if Sender.ClassNameIs('TMenuItem') and
    (FDQProjekte.RecordCount > GridProjekte.Selected) then
    with Sender as TMenuItem do
    begin
      q := TFDQuery.Create(Self);
      try
        FDQProjekte.RecNo := GridProjekte.Selected + 1;
        q.Connection := DoppData.FDConnection;
        q.SQL.Text := 'SELECT id,Status from dbo.UserProjekt where Id=' +
          FDQProjekteId.AsString;
        q.Active := true;
        q.First;
        q.Edit;
        q.FieldByName('Status').AsInteger :=Tag;
        q.Post;
        q.Active := false;
      finally
        q.free;
      end;
    end;
  UpdateFilter(true);
end;
Ja ich könnte es auch mit UPDATE lösen. Aber nächste Schritt sind Änderungen mit Steuerelementen. Dort wird dann auf jedenfall mit TFDQuery gearbeitet und dass Problem ist wieder da. Bei ADO ging es ohne Probleme.

Ich hatte es gestern schon bei entwickler-ecke.de gepostet (Da Delphi-Praxis gestern nicht erreichbar war.) da konnte mir aber noch nicht geholfen werden.
https://entwickler-ecke.de/viewtopic.php?p=718261#
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
679 Beiträge
 
Delphi 12 Athens
 
#2

AW: FireDAC Update durch TFDQuery

  Alt 4. Okt 2020, 13:46
Ich hatte es gestern schon bei entwickler-ecke.de gepostet (Da Delphi-Praxis gestern nicht erreichbar war.) da konnte mir aber noch nicht geholfen werden.
https://entwickler-ecke.de/viewtopic.php?p=718261#
Das Problem ist gelöst
Zitat von Stefan1286b:
Ich habe das Problem gelöst:

In der TFDConnection muss in FetchOptions CursorKind := ckStatic sein.

Gelesen in:
https://www.delphipraxis.net/190094-...mt-belegt.html
Roland
  Mit Zitat antworten Zitat
Stefan1286b

Registriert seit: 6. Jan 2012
Ort: Dinklage
25 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FireDAC Update durch TFDQuery

  Alt 4. Okt 2020, 17:21
Ich wollte auch gerade schreiben, dass das. Problem gelöst ist. Ist mir aber jemand zuvor gekommen.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: FireDAC Update durch TFDQuery

  Alt 5. Okt 2020, 06:40
Moin...
Auch wenn ich mich als alter Meckersack anhören sollte...

Man sollte:
1. kein WITH mehr verwenden!
2. die Query nicht mit einem Owner erzeugen aber mit Free wieder freigeben
Zitat:
q := TFDQuery.Create(Self); q.free;
3. kein SQL Statement ohne Parameter schreiben
Zitat:
'SELECT id,Status from dbo.UserProjekt where Id=' + FDQProjekteId.AsString;
4. nicht Logik mit GUI mischen (die GUI sollte die Queries nicht kennen) Datenbank "Operationen" gehören in die Logik, nicht in die GUI.

...jetzt geht es mir besser.
  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 22:38 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