Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQLite Datenbank Datenabfrage (https://www.delphipraxis.net/202210-sqlite-datenbank-datenabfrage.html)

CodingNoob 9. Okt 2019 13:34

Datenbank: Sqlite • Version: 3 • Zugriff über: FireDAC

SQLite Datenbank Datenabfrage
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin Moin,

ich sitze gerade an einem Projekt mit einer Datenbank die Adressen speichern und auch wieder ausgeben soll. Die Datenbank sowie die Verbindung stehen.
Meine nächsten Schritte wären jetzt, ein kleines 'Suchfenster' zu porgrammieren wo man beispielsweise den Vornamen eingibt und die Abfrage einen Kontakt ausgibt.
Nun möchte ich das ganze nicht über ein Grid ausgeben lassen sondern möchte, dass Name, Vorname, Strasse etc. in die dafür vorgesehenen Editfeldern wieder erscheint.
Leider hat mich mein googeln nicht so weit gebracht wie ich es gerne hätte.

So nun zu meiner Frage:
Was würdet Ihr mir empfehlen wie ich an die ganze Sache rangehe.

Bin noch relativ unbeholfen was die Programmierung in Delphi angeht, aber was nicht ist kann ja noch werden.
Deswegen bitte ich um ein bisschen Nachsicht.


Projekt-Infos:
1 Datenmodul (siehe Bild)
1 Form zum ausgeben und eintragen der Daten (siehe Bild)
LiveBindings zu den einzelnen edits wurde erledigt.
Geräteübergreifende Anwendung
Arbeit mit FireDAC
Abreit mit Sqlite

Ich bedanke mich schon mal im voraus für Tipps, Tricks und Hilfe.
LG

p80286 9. Okt 2019 17:36

AW: SQLite Datenbank Datenabfrage
 
Wenn ich Dir raten darf, pack das Suchergebnis in ein Grid (oder ähnliche Komponente) da oft zwei oder mehr Datensätze als Ergebnis zurück kommen. Dann wählst Du den Datensatz aus, mit dem du weiterarbeiten willst und füllst die entsprechenden EditFelder.
Ohne diesen Zwischenschritt verliert man leicht den Überblick und editiert den falschen Datensatz.

Gruß
K-H

Der schöne Günther 9. Okt 2019 18:13

AW: SQLite Datenbank Datenabfrage
 
Ist es auch Vorgabe dass es ein FMX ("FireMonkey")-Projekt sein muss? Oder kann es auch VCL sein?

CodingNoob 10. Okt 2019 09:16

AW: SQLite Datenbank Datenabfrage
 
Ja es sollte schon ein FMX Projekt sein, da ich das ganze später auch als App verwenden will.
Soll ich das Grid dann als extra form davor machen oder reicht das eigentlich auch aus, wenn ich die an die linke seite packe, da den Datensatz auswähle und
er mir dann auf der rechten Seite angezeigt wird.?

Leider kann ich unter FMX-Projekten nicht das klassische DB-Grid verwenden, reicht an der Stelle auch ein normales TGrid oder TStringGrid, oder funktioniert das damit eher nicht so.
Muss leider so dumm Fragen, da ich mich in dem ganzen noch nicht so auskenne. Falls ihr Tutorials oder ähnliches noch in der Rückhand habt, wäre ich euch dankbar die hier mal zu verlinken.

Grüße

jobo 10. Okt 2019 10:16

AW: SQLite Datenbank Datenabfrage
 
Das hat jetzt weniger mit der Technik zu tun, aber wenn es FMX ist, soll es dann auf mobile Devices laufen?
Wenn ja:
- Grids auf Mobile Devices sind nicht so angesagt / brauchbar, je nach Größe
- für Datenzugriff ist u.U. auch nicht der klassische Weg zu wählen

Wenn Du kurz darstellst, was der Plan ist, kann das sicher hilfreich sein.

CodingNoob 10. Okt 2019 12:58

AW: SQLite Datenbank Datenabfrage
 
Also zu meinem Plan:

Das Programm soll eigentlich in 3 oder 4 Modulen aufgeteilelt werden. Allgemein soll das Programm zur Immob. Überwachung (für den kleinen Mann) dienen.
Das erste Modul an dem Ich gerade sitze, soll das Adress Modul sein, wo die Adressen der Mieter als auch der Handwerker hinterlegt sind.
Das zweite Modul dient zur Kostenüberwachung rund um die Immob, welche dem später verlinkten Mieter zugeordnet werden kann.
Das dritte Modul ist der Mieterkontakt bzw Handwerkerkontakt, wo später dann über vorgefertigte Schriftstücke kontakt aufgenommen werden und auch der Auftragsverlauf gut einsehbar ist.
Ich schätze mal das vierte Modul wird eine weitere Datenbank sein, bei der die Infos zur Immob. hinterlegt werden.
Mein Wunsch ist es dann später, dass man Immobilie und Mieter verlinken kann und das alles relativ einfach und übersichtlich gehalten wird.

Das ganze möchte ich erstmal für die zwei Großen Betriebssysteme bereitstellen. Später so war meine Überlegung kann man dies in noch vereinfachterer Form aufs Handy bringen.

Habe hier jetzt mal versucht ganz grob meinen Plan zu erfassen.

Gruß

p80286 10. Okt 2019 14:02

AW: SQLite Datenbank Datenabfrage
 
Liest sich doch ganz gut, nur "kleiner Mann" ist ein quantitativer, kein qualitativer Unterschied. Von daher ist der Aufwand beinahe der gleiche für die Programmierung.
Gleiches gilt ür die "vereinfachte" Version für Handy/Tablet.

Gruß
K-H

jobo 10. Okt 2019 14:04

AW: SQLite Datenbank Datenabfrage
 
Zitat:

Zitat von CodingNoob (Beitrag 1449441)
Das ganze möchte ich erstmal für die zwei Großen Betriebssysteme bereitstellen. Später so war meine Überlegung kann man dies in noch vereinfachterer Form aufs Handy bringen.

Ok, die großen Betriebssysteme Windows und macOS? Also ein System primär für PC und MAC?
Wie hast Du Dir die Datenhaltung vorgestellt, besonders in Hinblick auf Smartphones?

CodingNoob 10. Okt 2019 14:54

AW: SQLite Datenbank Datenabfrage
 
Ja primär würde ich sagen, das dass ganze erstmal auf Windows und macOS laufen soll. Was das Thema Smartphone angeht, würde ich das erstmal hinten anstellen.
Zur Datenhaltung bin ich leider noch auf keinen grünen Zweig gekommen. Habe das ganze jetzt erstmal mit einer SQlite Datenbank probiert die Adressverwaltung zu realisieren.
Was könnt ihr mir in diesem Fall denn empfehlen bzw. wo würdet ihr mir abraten von.

TurboMagic 10. Okt 2019 21:48

AW: SQLite Datenbank Datenabfrage
 
Wenn du SQLite benutzt dann ist's auf jeden Fall portabel genug,
so dass es auch unter Android und vermutlich iOS läuft.

Da deine Anwendung auch keine Mehrbenutzer Anwendung zu sein scheint,
dürfte SQLite für deine Anwendung ok sein.

Rollo62 11. Okt 2019 06:08

AW: SQLite Datenbank Datenabfrage
 
Ja da kann ich TurboMagic nur zustimmen.
Sqlite läuft direkt auf iOS und Android, und ist dort vom OS vorinstalliert.
Sqlite ist IMHO die am einfachsten nutzbare DB bei Multiplattform.

CodingNoob 16. Okt 2019 15:06

AW: SQLite Datenbank Datenabfrage
 
Moin Moin,
hab jetzt fast alles soweit, dass die Datenbank im Hintergrund läuft. Auch mit den Bindings hat alles geklappt.
Jedoch habe ich jetzt das Problem, dass bei der Eingabe von Daten in das Edit-Feld Mietverhältnisstart, die Fehlermeldung auftritt:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt ImmoControl.exe ist eine Exception der Klasse EFDException mit der Meldung '[FireDAC][DatS]-2. Objekt [MIETVERHÄLTNISSTART] nicht gefunden' aufgetreten.
---------------------------

Ich hab eigentlich nichts anders gemacht bei dem Feld als bei anderen. Habt ihr eine Idee wie ich den Fehler beheben kann?
Dem Anschein nach existiert das Objekt Mietverhältnisstart ja gar nicht bzw. kann nicht gefunden werden, wie die Meldung schon sagt.

Grüße

Rollo62 16. Okt 2019 15:22

AW: SQLite Datenbank Datenabfrage
 
Ich weiss jetzt nicht was "Mietverhältnisstart " bei Dir genau ist, das Ziel-Objekt ?
Es hört sich für mich danach an als wäre die DB Connected und Aktiv im Designer,
und beim Start ist die DB schon da bevor deine Forms geladen sind.

Könnte das sein ?
Ich würde immer empfehlen die DB erst dann auf Connected zu schalten im MainForm.OnShow Event (oder noch etwas verzögert danach oder Aktivierung von Hand),
damit sicher Alles vorbereitet ist.

CodingNoob 16. Okt 2019 15:34

AW: SQLite Datenbank Datenabfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab jetzt nicht genau verstanden was du mit Zielobjekt meintest, aber unter Mietverhältnisstart wird auch nur ein einfaches Datum wie der Geburtstag gespeichert.
Die DB wird bei mir geöffnet wenn das Datamodul erstellt wird.

Mein Quellcode hab ich mal in Anhang gepackt.

Rollo62 16. Okt 2019 17:18

AW: SQLite Datenbank Datenabfrage
 
Du schreibst etwas von LiveBindings, da hast Du doch ein irgendein Ziel für das Binding.
"Mietverhältnis" könnte ein Edit sein, es ist jedenfalls nicht "tblMietverhältnisField" in deinem Code.
Könnte es sein das gewünschte Zielobjekt für das Livebinding noch nicht erzeugt ist (nil) ?

Zitat:

Die DB wird bei mir geöffnet wenn das Datamodul erstellt wird.
Ich meinte ja schon das die DB besser erst dann gestartet wird wenn alle Ziel-Objekte (Forms, o.ä.) erzeugt sind.

jobo 17. Okt 2019 06:28

AW: SQLite Datenbank Datenabfrage
 
Ist das ein Tinder Clone? "Meine Ex hat 'n Neuen, jetzt suche ich ein neues Mietverhältnis in der Nachbarschaft!"
;)

Also ernst: Vielleicht ein Encoding Problem bei den Feldnamen?
Wie wärs mit "Mietbeginn"?
Gibt es funktionierende Feldbezeichner mit non ASCII Zeichen?

Rollo62 17. Okt 2019 06:40

AW: SQLite Datenbank Datenabfrage
 
Wie wäre es mit ein bischen Sourecode ?
Ansonsten bleibt es hartes Rätselraten.

CodingNoob 17. Okt 2019 08:32

AW: SQLite Datenbank Datenabfrage
 
Liste der Anhänge anzeigen (Anzahl: 5)
Moin Moin,
im Anhang habe ich jetzt alles, was ich bis jetzt zustande bekommen habe. Der Quellcode sowie die Live-Bindings.
Habt ein bisschen Nachsicht mit mir als Anfänger noch.
Bin leider auch noch nicht viel weiter gekommen.

Grüße

tshubaka 17. Okt 2019 12:47

AW: SQLite Datenbank Datenabfrage
 
Hallo,
ich tippe da auf das ä.
schreib den Namen des Feldes nicht MIETVERHÄLTNISSTART sondern MIETVERHAELTNISSTART

Grüsse

CodingNoob 17. Okt 2019 13:37

AW: SQLite Datenbank Datenabfrage
 
Servus,
nachdem ich mühsam heute alles nochmal getestet habe und erneuert habe, funktioniert es doch nun endlich.
Woran es genau gelegen hat, kann ich nichts sagen.
Trotzdem vielen Dank für die schnellen Antworten.
Mein nächster Schritt jetzt, wäre die suche nach Adressen zu programmieren. Habt ihr dazu Tipps oder Hinweise die zu beachten wären ?

Grüße

TurboMagic 19. Okt 2019 00:41

AW: SQLite Datenbank Datenabfrage
 
Select SQL statement mit where Klausel benutzen und die dort
abgefragten Werte mittels Parameter angeben um die DB optimiert zu benutzen und
SQL-Injection zu verhindern.

Beispiel:
select Spalte1, Spalte2
from Tabelle1
where Kundennummer = :kdnr

:kdnr ist dann ein parameter, der mittels .Params.ParamByName('kdnr').AsString := 4711;

gesetzt werden muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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