AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr
Thema durchsuchen
Ansicht
Themen-Optionen

DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

Ein Thema von haentschman · begonnen am 26. Apr 2024 · letzter Beitrag vom 14. Mai 2024
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#1

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 26. Apr 2024, 11:48
Hallöle...
...
procedure TDMLUP.LoadArticle;
begin
dsReproPart.DataSet.Free;
dsReproPart.DataSet := FDatabase.CreateRepositoryPart(FArticleFavorite, FReceiptAddress);
end;
...
Ich vermute das Problem eher im Freigeben des DataSets und dann ein neues zuordnen.
Da wird wohl irgendwas zeitlich oder inhaltlich nicht mehr passen im DataController.

Ist es eine Option das DataSet nicht freizugeben und das bestehende einfach zu aktualisieren?


Und warum wird das DataSet überhaupt immer wieder erneuert, sind die Einträge im Popup abhängig von irgendwelchen Werten in der Datenzeile?
Wenn die Einträge im Popup immer gleich sind würde es doch reichen dies einmalig zu initialisieren.
Und auch bei Abhängigkeiten zur Datenzeile könnte man ja auch dahin gehen initial erstmal alles zu laden und dann beim Popup nach Bedarf zu filtern.

Geändert von lxo (26. Apr 2024 um 11:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 26. Apr 2024, 12:01
Zitat:
Ist es eine Option das DataSet nicht freizugeben und das bestehende einfach zu aktualisieren?
Im SQL laufen Berechnungen bezogen auf mehrere Tabellen abhänging von äußeren Parametern. (Kundenpreise entsprechend des Rechnungsnehmers) Mit Refresh kann ich die Parameter nicht tauschen...oder ich weiß es noch nicht.

Vorgabe: SQL nicht in der Query gespeichert. Ich probiere es mal aus die Query nicht neu zu erzeugen, sondern das SQL mit anderen Parametern anzupassen.

Danke...
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#3

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 26. Apr 2024, 12:07
Zitat:
Ist es eine Option das DataSet nicht freizugeben und das bestehende einfach zu aktualisieren?
Im SQL laufen Berechnungen bezogen auf mehrere Tabellen abhänging von äußeren Parametern. (Kundenpreise entsprechend des Rechnungsnehmers) Mit Refresh kann ich die Parameter nicht tauschen...oder ich weiß es noch nicht.

Vorgabe: SQL nicht in der Query gespeichert. Ich probiere es mal aus die Query nicht neu zu erzeugen, sondern das SQL mit anderen Parametern anzupassen.

Danke...
Also mit UniDAC kann ich einfach bei einem bereits geöffneten Query die Parameter neu setzen und dann Refresh aufrufen.
Hier mal ein Beispiel
Weiß nicht ob du das brauchst mit dem positionieren (locate), das habe ich in meinem Fall nur drin weil ich dort in eine andere Ansicht springe und die IDs gleich bleiben und ich mich somit wieder auf die alte Position stelle.
Delphi-Quellcode:

var
  lID: Integer;
begin
  <Query>.DisableControls;
  try
   lID := <Query>.FieldByName( 'ID').AsInteger;
   <Query>.ParamByName('PARAM').AsInteger := <NewValue>;
   <Query>.Refresh;
   <Query>.Locate( 'ID', lID, []);
  finally
    <Query>.EnableControls;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
717 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 26. Apr 2024, 13:27
Die Grids sind mittlerweile fürchterlich was Änderungen in Subtabellen angeht. Ich arbeite da fast nur noch mit Messages um dem Grid Zeit zu geben sich anzupassen.
Ich würde für solche Eingaben keine ExtendedLookupTable nehmen. Das machen bei mir modale Dialoge die den Grid und ein Freitextsuchfeld enthalten.
Das ergibt auch eine saubere Trennung. Aber vieleicht hast Du ja Kunden die keine 100%ig Führung brauchen um ordentlich zu arbeiten.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 26. Apr 2024, 14:51
Zitat:
Ich arbeite da fast nur noch mit Messages um dem Grid Zeit zu geben sich anzupassen.
...hast du auch schon mal dass Grid schwarz wenn du einen Dialog oder Form darüber öffnest? Hat DevExpress vor 2 Jahren eingebaut...ohne Lösung!
https://supportcenter.devexpress.com...wing-msgdialog
Zitat:
Ich würde für solche Eingaben keine ExtendedLookupTable nehmen
Das ist die Vorgaben "Eingabe" für die Artikelposition. Da wir verschiede Konstellationen der "Berechnung" haben, muß ich das vorher berechnen und in die Oberfläche fertig eintragen. Das Ergebnis der Auswahl kommt nur in EINE Tabelle.

Geändert von haentschman (26. Apr 2024 um 15:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
717 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 26. Apr 2024, 19:11
Zitat:
Ich arbeite da fast nur noch mit Messages um dem Grid Zeit zu geben sich anzupassen.
...hast du auch schon mal dass Grid schwarz wenn du einen Dialog oder Form darüber öffnest? Hat DevExpress vor 2 Jahren eingebaut...ohne Lösung!
Ja. War aber schonmal schlimmer. Das meißte habe ich geschafft durch verwenden von Messages/Windows Botschaften aus den Grid Eventhandlern heraus, abzuschaffen.

Zitat:
Ich würde für solche Eingaben keine ExtendedLookupTable nehmen
Das ist die Vorgaben "Eingabe" für die Artikelposition. Da wir verschiede Konstellationen der "Berechnung" haben, muß ich das vorher berechnen und in die Oberfläche fertig eintragen. Das Ergebnis der Auswahl kommt nur in EINE Tabelle.
Das ist ja eigentlich egal was man in die Felder füllt. Ich habe dafür einen Dialog mit Grid. Nach dem laden der Query erzeuge ich die Felder im Grid. Dann Nutzeransicht für die Ansicht laden falls das dort Sinn macht. Ich übergebe dem Dialog was für ein Feld ich als Antwort haben will. Via Freitextsuche kann der Nutzer die Ergebnisse filtern.

Generell würde ich die View im OnPopUp nicht ändern.
Besser wäre es das gesamte "Properties" Property auszutauschen. Dafür gibt es in den Columns des Grids ein Event.
Ich habe einen Fall wo ich drei verschiedene ButtonEdit in einem Editfeld anzeigen muss. Das klappt bisher (*knock on wood*) ganz gut.
Ein "TcxEditRepository" zum verwalten der Properties mit allen Details, ~GridViewField~GetProperties fürs tauschen.

Es würde mich wundern wenn dir das DevExpress nicht auch vorschlägt.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 14. Mai 2024, 07:25
Moin...

Update:
Heureka...ich habs.

Ich der Spalte "F1" (unsichtbar) eingeben, View geht auf, Markierung steht da wo sie sein soll...siehen Bild.

Problem:
Im Original wurde die Datenmenge immer wieder neu erzeugt. Nun habe die Datenmenge (DataSet) nur einmal erzeugt. Im OnPopup wird nur das SQL getauscht.
Delphi-Quellcode:
procedure TdmRepositories.rpiArticlePropertiesInitPopup(Sender: TObject); //umbenannt
begin
  DMLUP.LoadArticle;
  TToolsDevExpress.ExpandLevel(TcxGridTableView(rpiArticle.Properties.View), 0, True);
end;
...
procedure TDMLUP.LoadArticle;
begin
  if not Assigned(dsReproPart.DataSet) then
  begin
    dsReproPart.DataSet := FDatabase.CreateQuery;
  end;
  FDatabase.FilllDataSetRepositoryPart(TFDQuery(dsReproPart.DataSet), FArticleFavorite, FReceiptAddress);
end;
...
procedure TDatabase.FilllDataSetRepositoryPart(Qry: TFDQuery; Favorite: Boolean; ReceiptAddress: string);
begin
  Qry.SQL.Text := GetSQLByName('REPO_CHOICE_ARTICLE_ALL');
  Qry.ParamByName('ADR').AsString := ReceiptAddress;
  if Favorite then
  begin
    Qry.SQL.Add(GetSQLByName('REPO_CHOICE_ARTICLE_FAVORITE'));
  end;
  Qry.SQL.Add(GetSQLByName('REPO_CHOICE_ARTICLE_WHERE'));
  Qry.SQL.Add(GetSQLByName('REPO_CHOICE_ARTICLE_ORDER'));
  Qry.ParamByName('UID').AsInteger := FPreferences.CurrentUser.ID;
  Qry.Open;
end;
...Danke fürs Zuhören.
Angehängte Grafiken
Dateityp: png Pos.PNG (107,5 KB, 14x aufgerufen)

Geändert von haentschman (14. Mai 2024 um 07:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
717 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: DevExpress: "AutoSearch" funktioniert nach Änderung vom Repository nicht mehr

  Alt 14. Mai 2024, 08:47
Moin...

Update:
Heureka...ich habs.
...

Danke fürs Zuhören.

Ne ne ne. In Post 6 wurde dir das schon gesagt! Hier wurde nicht zugehört, sondern dein Problem benannt!
Aber Du hast offensichtlich nicht zugehört
Ich vermute das Problem eher im Freigeben des DataSets und dann ein neues zuordnen.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  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 19:28 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