[gelöst] RX-Tools: Problem mit Footer bei TRxDBGrid

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Judas
Beiträge: 15
Registriert: Mo 26. Mär 2012, 14:36

[gelöst] RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von Judas »

Lazarus 2.0.8
SQLite
Windows 10 64bit

SQLite3Connection
SQLtransaction
TSQLquery
TRxDBGrid



Moin, zusammen.

Ich versuche mich gerade an der Programmierung einer Anwendung mit Lazarus 2.0.8. Als darunterliegendes Datenbanksystem verwende ich SQLite3.

In dieser Anwendung gibt es u.a. zwei Tabellen (tblMembers, tblShares) in einer 1:n Relation. Diese beiden Tabellen werden in einem Fenster in zwei Grids (TRxDBGrid) dargestellt. Im Grid für die tblShares werden die Beiträge eines Mitglieds dargestellt. Über die Spalte (numerisch) mit den Beiträgen möchte ich die Beitragssumme im Footer (fvtsum) darstellen.

Das Ganze funktioniert auch in den Fällen, wo für ein Mitglied mehr als zwei Beitragszahlungen vorhanden sind. Bei nur einer Tabellenzeile bekomme ich die Fehlermeldung:

'Project myproject1 released Exception Class "External: SIGSEGV'

Bild


Hätte jemand hier eine Idee, woran das liegen könnte?

Zu den RX-Tools habe ich leider keine Dokumentation gefunden. Hilfreich wäre auch die eine oder andere Beispielanwendung.

Für jeden Hinweis wäre ich dankbar.

Liebe Grüße
Zuletzt geändert von Judas am Do 4. Jun 2020, 23:17, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von wp_xyz »

Klingt nach Bug... Ich denke, du wird die Frage im internationalen Forum posten müssen, da ist der Maintainer der RX Libs gelegentlich zu sehen. Oder du postest das Problem gleich im Bug-Tracker, Rubrik Lazarus-CCR. Es ist wichtig, dass du ein kleines Testprojekt mit einer einfachen Datenbank beifügst, so dass der Fehler reproduziert werden kann.

Judas
Beiträge: 15
Registriert: Mo 26. Mär 2012, 14:36

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von Judas »

@wp_xyz

"Klingt nach Bug..."

Mhhh, das klingt also nicht nach der schnellen Lösung. :-( Mangels anderer Vorschläge werde ich also den von dir vorgeschlagenen Weg gehen. Allerdings wundert mich, dass ein solcher - nicht sonderlich exotischer - Bug noch nicht gefixt sein sollte.

Mögen die Inspirationen mit euch sein
und bleibt gesund.

Liebe Grüße

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von af0815 »

Laut der Fehlermeldung kann das aber auch im Bufferd-Dataset Bereich liegen. Am besten, wie schon vorgeschlagen ein Beispiel machen, dann kann man das auch besser verorten.

Weil die Fhelmeldung entsteht in einem Bereich wo die Record Nummer geholt werden sollte. Das hat jetzt nicht unbedingt mit den RX-Tools zu tun.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von wp_xyz »

Genau. Vielleicht: Wenn du das Beispiel fertig hast, kannst du es ja mal zuerst hier posten, bevor du dir die Arbeit mit dem englischen Bug-Report machst. Vielleicht finden die Alteingesessenen hier ja auch den Fehler.

Judas
Beiträge: 15
Registriert: Mo 26. Mär 2012, 14:36

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von Judas »

Moin, zusammen.

So, jetzt hätte ich es. Mein eigentliches Projekt, in dem ich das erste Mal mit dem beschriebenen Fehler konfrontiert wurde, wäre etwas zu umfangreich, um es hier hochzuladen. Daher habe ich das von mir an anderer Stelle schon einmal verwendete Beispielprogramm 'guitarclub' etwas modifiziert und die Tabelle 'Guitars' um das Feld 'Price' erweitert. Bei mehreren Gitarren eines Besitzer sollte im Footer des Grids mit den Gitarrenbezeichnungen die Summe aller Einzelpreise angezeigt werden.

In der jetzt hochgeladenen Variante tritt der Fehler nicht auf. Erst, wenn im Grid mit den Gitarrenbezeichnungen der Footer aktiviert wird, passiert's: wenn man durch das obere Grid mit den Namen scrollt, taucht der bereits beschriebene Fehler auf.

Vielleicht ist hier ja jemand, der etwas Licht in das Dunkel meines Unwissens bringen kann.
2020-05-14 GuitarClub.7z
(14.95 KiB) 130-mal heruntergeladen
Bleibt allesamt gesund.
Liebe Grüße

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von af0815 »

Ich kann den Fehler grundlegend nachvollziehen, nachdem ich allerdings nichts mit den RX-Komponenten am Hut habe werde ich dort nicht tiefer gehen.
Bei mir tritt der Fehler innerhalb von Rx hier auf

Code: Alles auswählen

procedure TRxDBGrid.CalcStatTotals;
  .....
  SavePos:=DHS.RecNo;
  .....
Allerdings nicht gleich beim Start, sondern erst dann wenn in Members der Datensatz gewechselt wird.
Der CallStack zeigt folgendes bei mir - Auszugsweise
#0 BUFDATASET$_$TDOUBLELINKEDBUFINDEX_$__$$_GETRECNO$$LONGINT at :0
#1 BUFDATASET$_$TCUSTOMBUFDATASET_$__$$_GETRECNO$$LONGINT at :0
#2 TRXDBGRID__CALCSTATTOTALS(<error reading variable>) at .\rxdb\rxdbgrid.pas:5988
#3 TRXDBGRID__LAYOUTCHANGED(<error reading variable>) at .\rxdb\rxdbgrid.pas:7137
#4 TCUSTOMDBGRID__ONLAYOUTCHANGED(0x48c4a78, <error reading variable>) at dbgrids.pas:1065
#5 TCOMPONENTDATALINK__LAYOUTCHANGED(<error reading variable>) at dbgrids.pas:4071
#6 DB$_$TDATALINK_$__$$_DATAEVENT$TDATAEVENT$LONGINT at :0
#7 DB$_$TDATASOURCE_$__$$_DISTRIBUTEEVENT$TDATAEVENT$LONGINT at :0
.....
Der hat Probleme die Position zu finden, kann sein, das es ein Problem ist mit dem fehlenden PK und der Verwendung von Varchar.

------

Eine DB braucht man nicht direkt lesen können, das ist nur Bequemlichkeit für den Programmierer und führt zu schlechten Designs. Wenn du in der DB was lesen willst, dann lege dir eine View an, dann kannst du dir die Daten anzeigen wie du willst. Das Design sollte für den Server optimal passen.

Was mir allgemein auffällt im Design (Das meiste merkt man erst wenn es zu spät ist):
*) Jede Tabelle benötigt einen Primärschlüssel (PK), wenn irgendwie möglich integer oder einen nativ für diesen Zweck vorgesehenen Wert. (automatische PK sind nicht böse)String bzw. Varchar sind für mich denkbar ungeeignet -> Betriebssicherheit und Effizienz
*) Daraus folgt Primär und Fremdschlüssel (FK) sollten wie oben sein und damit auch die Tabellen verknüpft werden (als Master/Detail oder auch als Join im SQL)
*) Werte wenn möglich als Integer oder Numerisch, sowenig Konvertierungen wie möglich
*) Sortierungen hinterlege ich im DB-System mit entsprechend Sortierindex (abhängig DB System) - Achtung sollte man auch gut überlegen. Können beim Schreiben/Ändern/Löschen Performance kosten. Gilt auch hier, das was nötig ist und Sinn macht.

Von meiner Seite her teste ich nicht weiter, da ich wie gesagt nichts mit den Rx Komponenten am Hut habe und auch nicht erwarte das die mit dem DB-Design IMHO sauber funktionieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Judas
Beiträge: 15
Registriert: Mo 26. Mär 2012, 14:36

Re: RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von Judas »

Moin, zusammen.

Alexs, der Maintainer der RX-Tools hat ein Update bereitgestellt: revision 7476.

Das Problem ist damit behoben.

Danke für eure Anteilnahme.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [gelöst] RX-Tools: Problem mit Footer bei TRxDBGrid

Beitrag von af0815 »

Danke für die Rückmeldung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten