TDBGrid vs Endlosformular

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

TDBGrid vs Endlosformular

Beitrag von charlytango »

Hi,
ich erhoffe mir von der hoffentlich folgenden Diskussion eine Entscheidungshilfe wie ich eine bestimmte Art der Datenerfassung angehen könnte. Im wesentlichen steht Grid gegen eine Art Endlosformular im Access-Typ (TForms in einer TScrollbox zum Beispiel)

Aufgabe: Bequeme, schnelle und möglichst fehlervermeidende Erfassung von Kursen eines neuen Geschäftsjahres (Namen, Start- und Endzeiten, Uhrzeiten, Gruppenzuordnungen etc etc. - etwa 16 Attribute)

Im Kursverwaltungs-Programm habe ich dafür ein umfangreiches Formular mit viel Eingabevalidierung angeboten das sich als zu sperrig und langsam erwies.

Aktuell erfolgt die Erfassung in einer Excel-Tabelle (die praktisch keine logische Validierung hat). Über Export in CSV Datei und Import kommen die Daten in die DB.
Ist naturgemäß auch sehr fehleranfällig und zeitraubend.

Nun suche ich nach einer Lösung irgendwie dazwischen. Bequeme und schnelle Eingabe wie in Excel und trotzdem ein Mindestmaß an Validierung.

Diskutiert werden sollen die Vor- und Nachteile der beiden im ersten Ansatz angerissenen Varianten und die Möglichkeiten wie man das vernünftig umsetzt.

Als Eingabefelder sollen echte Lookup-Comboboxen (angezeigter Text und im Feld steht dann Key) und auch Buttons (zum Aufruf erweiterter Funktionen) sowie vernünftige Eingabefeler für Datum und getrennt dazu Uhrzeit möglich sein.

Bin auch offen für andere Vorschläge. Für bessere Ideen gibt es keinen Abgabeschluss 8) . Auch Demos und Beispiele sind sehr willkommen.

Die Herausforderungen für mich sehe ich beim Grid im Einbau der für mich wichtigen Komponenten (und deren Suche -- das werden wohl eher welche aus dem Rx Paket sein) und bei der TScrollbox in der Verwaltung der Forms und deren Datenbankanbindung.

Ring frei zur nächsten Runde :D

THX

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: TDBGrid vs Endlosformular

Beitrag von Soner »

Ich würde gleich DBGrid benutzen, weil die Benutzer schon Excel verwenden. Die müssen dann nicht viel neues lernen. Außerdem ist die Benutzung der Tabellen sehr einfach und schnell. Man kann auch die Tabelle leichter um Spalten erweitern.
Ich habe unser Buchhaltungsprogramm als DBGrid umgesetzt, jeder kann es sehr schnell benutzen. Es übernimmt sogar die Daten von der Zeile die aktiv war, bevor man "+" geklickt hat, dann muss man meistens nur noch Datum, Belegnummer und Betrag öndern.

Du musst gar nicht RX-Komponenten nehmen, das alles kannst du mit "Data Controls" erledigen. Du muss nur bei DBGrid achten, dass du den Zeilencursor in den Griff bekommst, weil es wild umher springt, nach dem man eine Zeile hinzugefügt hat. Wenn aktuelle Zeile die ganz unten war plötzlich irgendwo ist, verwirrt und nervt den Benutzer.

Viel Glück.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: TDBGrid vs Endlosformular

Beitrag von af0815 »

Ich würde hier sogar ein normales Grid einem DBGrid vorziehen. Oder auch fpSpreadsheet, wenn man Berechnungsfunktionen wie in eine Spreadshettprogramm haben will/braucht + die komfortabeln Import/Exportfunktionen.

Normales Grid deswegen, weil ich das viel flexibler binden kann und den Datentransport von der DB her und hin komplett unter Kontrolle habe. Damit kann ich auch mal schnell nur Teilbereiche aus der Tabelle verwenden und es ist mir auch komplett egal wie das in der DB ist.

Hat Vor- und Nachteile, wenn ich mir das bei meinen Designs ansehe, haben die VT gewonnen :-) Kann bei dir anders sein. Generell verwende ich so weinig wie möglich an Fremdkomponenten, ganz einfach um damit Problemen bei Versionswechsel aus dem Weg zu gehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PascalDragon
Beiträge: 829
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: TDBGrid vs Endlosformular

Beitrag von PascalDragon »

charlytango hat geschrieben:
So 4. Jun 2023, 10:38
ich erhoffe mir von der hoffentlich folgenden Diskussion eine Entscheidungshilfe wie ich eine bestimmte Art der Datenerfassung angehen könnte. Im wesentlichen steht Grid gegen eine Art Endlosformular im Access-Typ (TForms in einer TScrollbox zum Beispiel)
Du könntest dir TDBControlGrid vom IBX Paket anschauen. das würde quasi deinem zweiten Ansatz entsprechen.
FPC Compiler Entwickler

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: TDBGrid vs Endlosformular

Beitrag von Soner »

PascalDragon hat geschrieben:
Mo 5. Jun 2023, 22:04
charlytango hat geschrieben:
So 4. Jun 2023, 10:38
ich erhoffe mir von der hoffentlich folgenden Diskussion eine Entscheidungshilfe wie ich eine bestimmte Art der Datenerfassung angehen könnte. Im wesentlichen steht Grid gegen eine Art Endlosformular im Access-Typ (TForms in einer TScrollbox zum Beispiel)
Du könntest dir TDBControlGrid vom IBX Paket anschauen. das würde quasi deinem zweiten Ansatz entsprechen.
Er hat die gleiche Frage im englischen Forum gestellt, dort hat jemand für DBControls angepasste TDBControlGrid Version Vorgeschlagen.
Tony's original version ist ja nur für IBX.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid vs Endlosformular

Beitrag von charlytango »

Danke für eure Antworten, da beweist sich wieder mal die Qualität des Forums. Trotz eigener Suche habe ich diese Komponenten und Möglichkeiten nicht gefunden.

Ich fasse mal zusammen welche Varianten genannt wurden:

1 - TDBGrid by Soner
2 - TStringgrid by af0815
3 - ggfs auch VirtualTreeview (VT) by af0815
4 - fpSpreadsheet by af0815 auch im OPM
5 - TDBControlGrid vom IBX Paket by PascalDragon
6 - DB Control Grid by dsiders (engl Forum) auch aus OPM (DBTreeViewAndDBCntrlGrid)


Sollten noch andere Vorschläge kommen werde ich hier ergänzen.
Da hab ich jedenfalls einiges zu testen :wink:

Edit 8.6.23:
Die in Punkt 5 und 6 genannten DBCtrlGrids stammen aus der gleichen Quelle und wurden unterschiedlich weiter entwickelt.
Unashameably hacked from DBGrid.Pas (Copyright (C) 2003 Jesus Reyes Aguilar.)
by Tony Whyman (tony@mwasoftware.co.uk) .Additional source code is
Copyright (c) McCallum Whyman Associates Ltd (trading as MWA Software) 2015.

Sie heißen auch gleich weshalb beide nicht gleichzeitig installierbar sind.
Der Code ist ebenfalls recht unterschiedlich. Ich kann jedenfalls nicht erkennen welcher davon besser ist.
Zuletzt geändert von charlytango am Do 8. Jun 2023, 10:16, insgesamt 2-mal geändert.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid vs Endlosformular

Beitrag von charlytango »

Grrr....

ist immer wieder das selbe -- kaum versucht man irgend eine Demo mit Daten aus einer DB zu öffnen brauchts irgend eine Datenbank die ich nicht habe und auch nicht installieren will oder kann.

Warum zum wrkstsf??!@@ (*) wird nicht zumindest ein SQL-Script beigelegt mit dem die nötigen Tabellen leicht erzeugt werden können?

Weiß irgend jemand wo ich so ein script für die Firebird Beispiel-DB downloaden kann?
Die hier ist es schonmal nicht.


(*) vom Forum angepasster Fluch

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: TDBGrid vs Endlosformular

Beitrag von Soner »

charlytango hat geschrieben:
Di 6. Jun 2023, 10:54
...
Weiß irgend jemand wo ich so ein script für die Firebird Beispiel-DB downloaden kann?
Die hier ist es schonmal nicht.
...
Employee-Datenbank-Beispiel liegt schon im Ordner "Firebird/examples/empbuild " fertig.

Falls du für FireBird Client brauchst, dann nehme Flamerobin oder EMS-SQLManager.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid vs Endlosformular

Beitrag von charlytango »

Soner hat geschrieben:
Di 6. Jun 2023, 18:52
Employee-Datenbank-Beispiel liegt schon im Ordner "Firebird/examples/empbuild " fertig.
Ja, weiß ich. Aber ich kann und will Firebird auf diesem Rechner nicht installieren und komme demnach nicht zu Demo-Daten.
Weiß jemand wo es ein SQL Script gibt das die employee-DB samt den Demo-Daten erzeugt?
Idealerweise diejenige die das Package DBTreeViewAndDBCntrlGrid verwendet?

An mein DBMS passe ich das schon an aber ohne Script kann ich nur raten

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

Re: TDBGrid vs Endlosformular

Beitrag von wp_xyz »

DBCntrlGrid hat nichts mit Firebird zu tun. In der Anlage findest du ein kleines Projekt, das einen TBufDataset verwendet. Daraus kriegt man eine Ahnung, was das Ding kann.

Prinzip:
- DBCntrlGrid wie üblich über DataSource mit dem Dataset verbinden.
- Dann einen Container für die DB-sensitiven Controls aufs Formular setzen - ich habe ein Panel genommen, wahrscheinlich geht auch ein Frame.
- In dem Container die DB-sensitiven Controls so anordnen wie man möchte. Jedes Control via Datasource mit dem Dataset verbinden, und natürlich auch das DataField ausfüllen.
- Den Container als ActivePanel im DBCntrlGrid eintragen.
- Ich denke, das war's schon.
- Beim Start gab es aber bei mir das Problem, dass nur die erste Zeile mit Controls gefüllt war. Erst beim Scrollen mit Hilfe eines zusätzlichen DBGrid kamen die anderen Zeilen. Kurzerhand bin ich dann nach dem Öffnen des Dataset mit Dataset.Last kurz ans Ende und mit Dataset.First wieder zurück an den Anfang gesprungen.

Mich irritiert ein bisschen, dass die Controls in dem nicht-aktiven Zeilen im Win95-stil gezeichnet werden - das sollte man sich mal näher ansehen. Weiterhin ist mir nicht klar, wie man die Farbe der aktiven Zeile beeinflussen kann. Aber das sind Feinheiten - im Prinzip funktioniert es.

P.S.
Ach ja: damit man das Projekt compilieren kann, muss natürlich das DBCntrlGrid installiert sein (ist im OPM).

Noch ein P.S.
Das es sich nur um 1 Unit handelt, habe ich die DBCntrlGrid-Unit ins Projekt kopiert, und die Instanz zur Laufzeit erzeugt. Damit kann man das beigefügte "no-install"-Projekt auch ohne Installation verwenden.
Dateianhänge
dbcntrlgrid_simple_test_no_install.zip
(18.03 KiB) 58-mal heruntergeladen
dbcntrlgrid_simple_test.zip
(2.79 KiB) 56-mal heruntergeladen

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid vs Endlosformular

Beitrag von charlytango »

wp_xyz hat geschrieben:
Mi 7. Jun 2023, 17:39
DBCntrlGrid hat nichts mit Firebird zu tun. In der Anlage findest du ein kleines Projekt, das einen TBufDataset verwendet. Daraus kriegt man eine Ahnung, was das Ding kann.
Herzlichen Dank für deine Arbeit - Ganz großes Kino.
Große Verbeugung im spanischen Hofzerimoniell ;-)

Beide Demos laufen gut - danke.

Dass der DBCntrlGrid nix mit Firebird zu tun hat war mir klar, ich wollte die Demo zum laufen bringen die auch einen DBTree (Für mich immer noch auf der TODO-Liste) hatte -- daher suche ich noch immer noch die Firebird BeispielDB als SQL-Script (auch für künftge Situationen)

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

Re: TDBGrid vs Endlosformular

Beitrag von wp_xyz »

charlytango hat geschrieben:
Do 8. Jun 2023, 09:17
daher suche ich noch immer noch die Firebird BeispielDB als SQL-Script (auch für künftge Situationen)
Gut, ich kenne mich mit den SQL-Datenbanken nicht so aus. Aber bist du sicher, dass so ein Script nicht im SQL-Dialekt des Ersteller-DB-System geschrieben ist, also wirklich universell verwendbar ist? Was ist denn das Datenbank-System, das du verwendest?

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid vs Endlosformular

Beitrag von charlytango »

Natürlich haben unterschiedliche Hersteller ihre eigenen Dialekte.
wen man sich halbwegs am SQL95 Standard anhält kann man schon scrips bauen die auf mehreren DBMS laufen.
Für Testdaten geht es ja "nur" darum Tabellen zu erstellen und diese mit INSERT zu befüllen.
Ich benutze derzeit MySQL/MariaDB und SQLite, gelegentlich auch MSSQL.

Mir würde schon irgendein Script reichen dem ich seine Eigenheiten dann auch abtrainieren kann.

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: TDBGrid vs Endlosformular

Beitrag von Soner »

charlytango hat geschrieben:
Mi 7. Jun 2023, 16:01
Soner hat geschrieben:
Di 6. Jun 2023, 18:52
Employee-Datenbank-Beispiel liegt schon im Ordner "Firebird/examples/empbuild " fertig.
Ja, weiß ich. Aber ich kann und will Firebird auf diesem Rechner nicht installieren und komme demnach nicht zu Demo-Daten.
Weiß jemand wo es ein SQL Script gibt das die employee-DB samt den Demo-Daten erzeugt?
Idealerweise diejenige die das Package DBTreeViewAndDBCntrlGrid verwendet?

An mein DBMS passe ich das schon an aber ohne Script kann ich nur raten
Es gibt von Firebird auch Zip-Version mann muss es einfach, entpackten.
Wenn du Firebird als Superclassic-Server starten möchtest, dann starte es so:
C:\Firebird_2_5-x64\bin\fb_inet_server.exe -a -m
(Ich verwende noch FB 2.5.)
Standardbenutzer: SYSDBA
Standardpasswort: masterkey

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBGrid vs Endlosformular

Beitrag von charlytango »

danke, sehe ich mir Montag an.

Antworten