Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Welche Aufgabe hat ein Dataset u. wie setzt man es ein? (https://www.delphipraxis.net/90550-welche-aufgabe-hat-ein-dataset-u-wie-setzt-man-es-ein.html)

DelphiManiac 19. Apr 2007 12:12

Datenbank: Firebird • Version: 2.0 • Zugriff über: ZEOS Lib

Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Hallo,

ich habe eine generelle Frage zum Thema Dataset.

Ich bin dabei eine Datenbankanwendung mit einem Frontend zu entwickeln,

zur Eingabe von Kunden und Rechnungserstellung, also was sehr triviales, wenn man schon viel mit Datenbanken entwickelt hat.

Meine Erfahrungen beschränken sich jedoch auf PHP + MySQL und Access, was den DB-Teil betrifft.
Also ich nutze als Backend eine Firebird DB.

Nun meine Frage, wie kann ich am besten eine Oberfläche zur Erfassung neuer Kunden erstellen und diese ansteueren.
Sollte ich hier ein Dataset nehmen?

Wenn ja was macht den das Dataset genau?
.. Nach meinem Verständnis ist das ein Dataset:
--> Es speichert Daten tabellarisch und hält die Daten ohne aktive Datenbankverbindung lokal im Dataset.
--> Man kann die Daten änderen und zurück an die DB schicken

Ist das soweit richtig, könntet ihr mir dahingegen 2-3 Zeilen Quellcode für das Verständnis coden?

Danke euch

mkinzler 19. Apr 2007 12:37

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Zitat:

.. Nach meinem Verständnis ist das ein Dataset:
--> Es speichert Daten tabellarisch und hält die Daten ohne aktive Datenbankverbindung lokal im Dataset.
Nein. Du meinst vielleicht TClientDataSet.
Zitat:

--> Man kann die Daten änderen und zurück an die DB schicken
Wenn du ein ClientDataSet meinst jein. Ein DataSet ist direkt mit dem DBMS verknüpft.

Schau dir mal das Beispiel
...\Borland\BDS\4.0\Demos\DelphiWin32\VCLWin32\Db\ SQLClientDataset

an

DelphiManiac 19. Apr 2007 12:55

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
@mkinzler:

Danke für deine Antwort,
in meine Demo Ordner habe ich keine Projekt-Datei zu SQLClientDataset...

DelphiManiac 19. Apr 2007 12:56

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Heisst das, dass wenn ích ein normales Datset nehme, kann ich alle Aktionen.
INSERT...
DELETE...
SELECT...
auf mein Dataset anwenden, da es die Verbindung zu DB hat?

mkinzler 19. Apr 2007 12:58

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Welche Delphi-Version?
Ich hoffe mal ich mach nichts Illegales, wenn ich die Demo hier einstelle. Sonst soll sie ein Admin wieder Löschen.

mkinzler 19. Apr 2007 12:58

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Zitat:

Zitat von DelphiManiac
Heisst das, dass wenn ích ein normales Datset nehme, kann ich alle Aktionen.
INSERT...
DELETE...
SELECT...
auf mein Dataset anwenden, da es die Verbindung zu DB hat?

Ja.

DelphiManiac 19. Apr 2007 13:01

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Hi,

ja genau das Demo habe ich in meinem Ordner, wobei ja keine Projektdatei vorhanden ist,
nur *.pas

DelphiManiac 19. Apr 2007 13:05

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Aber ist auch nicht schlimm,
will ja mit dem 'normalen' Dataset arbeiten...

Wie kann ich denn ein Dataset eine SQL-Anweisung übergeben.

Beispiel:

Ich habe ein Oberfläche mit 4 Textfeldern

FeldA
FeldB
FeldC
FeldC

nun will ich den Inhalt dieser Textfelder in die DB (bzw über das Dataset in die DB) schreiben,
wie kann ich also ein INSERT INTO abbilden?

Danke Dir!

mkinzler 19. Apr 2007 13:08

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Am einfachsten durch Verwendung von db-sensitiven Kompoenneten (z.b. TDBEdit)
http://www.dsdt.info/tutorials/?cat=6

Jürgen Thomas 19. Apr 2007 14:15

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Hallo,

einen Gesichtspunkt vermisse ich bei den bisherigen Hinweisen.

Unter NET gibt es eine DataSet-Klasse mit genau dieser Bedeutung:
Zitat:

Zitat von DelphiManiac
Wenn ja was macht den das Dataset genau?
.. Nach meinem Verständnis ist das ein Dataset:
--> Es speichert Daten tabellarisch und hält die Daten ohne aktive Datenbankverbindung lokal im Dataset.
--> Man kann die Daten änderen und zurück an die DB schicken

Aber es muss klar sein: Win32 und NET liefern "vollständig verschiedene" Typen von Anwendungen. Jürgen

DelphiManiac 19. Apr 2007 14:20

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Ja, ich habe auch schon mit C# auf dem .Net-Framework programmiert,

deswegen meine Frage mit dem Dataset, aber es scheint da ja schon unterschiedlich implementiert zu sein,

ist ja auch logisch, nicht umsonst hat Microsoft sein 'Datset' so angepriessen als absolute Neuerung :-)

Gruß

Jelly 19. Apr 2007 14:35

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Du kannst ein Dataset unter .NET nun aber auch gar nicht mit dem Dataset aus Delphi32 vergleichen.

Aber mal kurz zu deinem Frontend.
Um die Daten in die TextFelder zu kriegen brauchst du folgende Komponenten:

TConnection (z.B. TADOConnection, TDatabase u.v.m.... je nach Datenbank)
TDataset (z.B. TADOQuery, TQuery, TSimpleDataset...)
TDatasource
TDBEdit

Die TConnection baut die Verbidnung über irgendeinen Treiber zu deiner Datenbank auf. Es dabei erst mal egal ob es sich um eine Desktop Paradox Datenbank oder um einen dicken fetten SQL Server handelt).

Das TDataset musst du mit deiner Connection verknüpfen. Das Dataset ist der Ort, in dem du deine Select-Befehle eingibst (z.B. SQL Eigenschaft von TADOQuery)

TDatasource ist die Komponente welche das Verbindungsstück zwischen Dataset und deinen visuellen VCL Controls darstellt. Logischerweise musst du die Eigenschaft Dataset entsprechend setzen.

Dann gibts die ganzen TDBEdit, TDBGrid... Sachen. Die verknüpfst du mit der Datasource. Dann gibts du noch die Eigenschaft Datafield an und, und schon siehst du den Inhalt vom markierten Datensatz direkt im DBEdit.

Das Dataset besitzt Methoden zum Durchlaufen (Next, Prior, First, Last) und positioniert den aktuellen Cursor neu. Rufst du solch eine Methoder zu Laufzeit auf, wirst du merken wie deine DBEdit Felder ihren Inhalt wechseln. Änderst du etwas händisch in den DBEdit Felder, so kannst du die Änderungen direkt mit der Methode Post im Dataset in die Datenbank schreiben (mit Cancel übrigens die Änderungen wieder zurücknehmen).

Ist doch erst mal alles ganz leicht oder :thumb:

DelphiManiac 20. Apr 2007 08:03

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
@Jelly:

Hi Danke Dir!!!

Das war genau die Erkärung die ich an der Stelle gebraucht habe,
jetzt weiß ich ersteinmal wie ich vorgehen muss, werde mich mit Sicherheit nochmal
(bei der nächsten Frage) melden...

Danke

Gruß
DelphiManiac

DelphiManiac 20. Apr 2007 09:26

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Eine Frage hätte ich da:

Ich habe jetzt einen Kundentabelle:

tblKunden
-------------
->Kunden_ID
->Anrede
->Name
->Vorname.... usw

tblAnrede
-------------
->Anrede_ID
->Anrede (Beispiel 'Herr','Frau', 'Dr.'....)


Wenn ich jetzt meine Datset mit der Tabelle Kunden fülle habe ich ja nur die ID von Anrede aber nicht die Verknüpfung zur
Tabelle Anrede. Dann muss ich doch einen Join mit der Tabelle machen oder??

mkinzler 20. Apr 2007 11:55

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
das kann man durch einen Join ändern:

SQL-Code:
select
    k.Kunden_ID,
    a.Anrede,
    k.Name,
    ...
from
    tblKunden k join tblAnrede a on a.Anrede_ID = k.Anrede;

DelphiManiac 20. Apr 2007 14:37

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@mkinzler:


Hi Danke für deine Antwort,
ja komischerweise versuche ich es auch über einen Join, aber es klappt nicht:

Folgenden SQL-Code verwende ich:

SQL-Code:
SELECT a.Anrede,
       m.Vorname,
       m.Name,
FROM tblMandanten m
JOIN tblAnrede a ON m.Anrede=a.Anrede_ID;
Aber ich bekomme folgenden Fehler: (Bild im Anhang)
Lass dich aber nicht irreführen, ist eine Eurekalog-Exception, die meine IDE überwacht, und die Exception abfängt und anzeigt

:roll:

Gruß

mkinzler 20. Apr 2007 14:39

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Das , nach m.Name ist zu viel

DelphiManiac 20. Apr 2007 14:42

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Hey,

jetzt wo du es sagst sehe ich den Fehler, Name ist schon OK,
aber habe ein Komma zu viel,... und ich hab mir eben die Augen wund gesucht :shock:

Muss mal gucken, wie ich das zurückschreiben in die DB mache,
wenn ich z.B.: die Anrede ändern will..

Aber nochmal vielen Dank (4 Augen sehen mehr als 2) :shock: :shock:

Jelly 20. Apr 2007 16:46

Re: Welche Aufgabe hat ein Dataset u. wie setzt man es ein?
 
Zitat:

Zitat von DelphiManiac
Muss mal gucken, wie ich das zurückschreiben in die DB mache,
wenn ich z.B.: die Anrede ändern will..

Dazu könntest du z.B. neben den TDBEdit Objekten ein TDBLookupCombobox verwenden.
Willst du mit einem TDBGrid die Anreden auswählen können, so musst du mit persistenten Datenfelder deines TDatasets arbeiten (Doppelklick auf TDataset) und ein Lookupfeld hinzufügen.


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