Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid - Daten eintragen (https://www.delphipraxis.net/11040-dbgrid-daten-eintragen.html)

Snyderburn 30. Okt 2003 09:58


DBGrid - Daten eintragen
 
Hi!

Ich habe in mein Prog ein DBGrid, das eine Verknüpfung zu der Datasource hat, wo die Daten angezeigt werden. Nun möchte ich aber, dass man keine Daten sieht, aber dennoch Daten ins das DBGrid eintragen kann.
Verknüpfe ich die Datasource mit einer Querry, dann sehe ich keine Daten, aber ich kann auch nix eintragen.
Verknüpfe ich die Datasource mit einem Table, dann sehe ich zwar die Daten, aber ich kann dafür auch was eintragen.

Was ich will, ist aber: ich sehe KEINE Daten (wie beim Querry) und kann dennoch etwas eintragen (wie beim Table). Ist das möglich zu realiesieren??

mfg
Snyderburn

Garby 30. Okt 2003 10:26

Re: DBGrid - Daten eintragen
 
Hallo,

am Besten nimmst du eine Query und schreibst die Abfrage so:
SQL-Code:
Select * from TABELLE Where 1 = 2
Im AfterPost der Query dann:
Delphi-Quellcode:
Query1.Close;
Query1.Open;

MrSpock 30. Okt 2003 10:34

Re: DBGrid - Daten eintragen
 
Hallo Snyderburn,

ich würde eine temporäre Tabelle erzeugen und diese mit der DataSource verbinden. Nach der Übernahme der Daten (AfterPost) kannst du den Datensatz verarbeiten und dann wieder aus der Tabelle löschen, sodass das Grid wieder leer ist.

Snyderburn 30. Okt 2003 10:34

Re: DBGrid - Daten eintragen
 
Zitat:

Zitat von Garby
Hallo,

am Besten nimmst du eine Query und schreibst die Abfrage so:
SQL-Code:
Select * from TABELLE Where 1 = 2
Im AfterPost der Query dann:
Delphi-Quellcode:
Query1.Close;
Query1.Open;

Das Problem, was ich habe ist, wenn ich ein Querry nehme, dann kann ich im DBGrid nichts editieren! Muß man da noch irgendwo eine Einstellung vornehmen?

MrSpock 30. Okt 2003 10:37

Re: DBGrid - Daten eintragen
 
Hallo Snyderburn,

bei einer Query müsstest du RequestLive auf TRUE setzen. Ich rate aber zu der Tabelle.

Garby 30. Okt 2003 10:43

Re: DBGrid - Daten eintragen
 
@MrSpock: mal ne Frage: warum würdest du dem komplizierten Umweg über eine temporäre Tabelle den Vorzug geben? Die Lösung mit der Query und der Abfrage, die keine Datensätze zurückbringt ist doch sauber und vor allem schnell gemacht :gruebel:

MrSpock 30. Okt 2003 10:54

Re: DBGrid - Daten eintragen
 
Hallo Garby,

eine leere Abfrage ist noch nicht sauber :mrgreen: , es ist ja nur ein Trick, um die Datenstruktur zu bekommen. Und du musst ja auch nach dem Eintragen die Query neu ausführen, damit das Grid wieder leer ist. Es kann aber durchaus sein, dass deine Lösung einfacher zu implementieren ist. Du könntest dazu aber auch ein TTable Objekt nehmen und den Filter so setzen, dass keine Daten angezeigt werden, dann sparst du dir auch noch das Löschen, bzw. die erneute Abfrage. Da verschwindet der Datensatz von allein.

Garby 30. Okt 2003 11:07

Re: DBGrid - Daten eintragen
 
Hallo auch,

der Vorteil der Query liegt darin, dass die Datensätze der Tabelle nicht in den Speicher geladen werden müssen. Wenn die DB am Netz liegt, oder man benutzt eine SQL-Server-DB, dann würde das bei größeren Tabellen einen sehr großen Unterschied machen.

Die o.g. Methode ist glaube ich bei Client-Server Applikationen Standard, mit der Ausnahme, dass statt
SQL-Code:
Where 1 = 2
SQL-Code:
Where LAUFENDE_NUMMER = :Parameter
verwendet wird (Parameter wird auf einen Wert gesetzt, den es in der Tabelle nicht gibt [was fast aufs selbe rauskommt]).

Aber seis drum: jeder hat seinen eigenen Stil. Das ist ja das Faszinierende beim Entwickeln --> der Kreativität sind keine Grenzen gesetzt. :zwinker:

Hansa 30. Okt 2003 12:28

Re: DBGrid - Daten eintragen
 
Ich habe mich fast ganz von den DB-Komponenten verabschiedet. Höchstens mal ein DBedit oder DBtext. Die komlizierteren wie DBgrid, DBchart verwende ich nicht mehr. Da programmiere ich lieber etwas mehr und weiß was ich habe. Auch sind Fehler viel eher zu finden, als sich wie hier mit einem komischen DBgrid rumzuschlagen.

Und ein äußerst positiver Nebeneffekt tritt dabei auch noch auf: das alles wird rasend schnell, da ich alles auf einen Schlag abspeichere.

Snyderburn 30. Okt 2003 12:58

Re: DBGrid - Daten eintragen
 
Danke für die Hilfe, hat mir sehr geholfen!!!

@Hansa: ist schön, dass Du die alles selber programmierst! Aber ich als "Anfänger" bleibe doch erstmal bei den Standart-Komponenten! Oder bist Du etwa gleich damit angefangen, dir alles selber zu proggen???

mfg
Snyderburn

Hansa 30. Okt 2003 16:54

Re: DBGrid - Daten eintragen
 
Zitat:

Zitat von Snyderburn
@Hansa: ist schön, dass Du die alles selber programmierst! Aber ich als "Anfänger" bleibe doch erstmal bei den Standart-Komponenten! ...

Nein, nein, so war das doch nicht gemeint. Ich meine die mitgelieferten DB-Komponenten, nur die :!: Die taugen auf Dauer nichts. Ich benutze für das DBgrid eben auch ein Standard-StringGrid und baue die Selects, Inserts usw. eben da ein. Da muß ich nur jede Spalte und Zeile einer Extra Behandlung unterziehen. Kann aber im Prinzip machen, was ich will. Ich nutze selber noch nicht so lange Delphi.

Snyderburn 31. Okt 2003 12:54

Re: DBGrid - Daten eintragen
 
Nochmal auf das Problem zu kommen, was ich hatte:

Es hat alles bei der 1. Tabelle ohne Probleme funktioniert. Mache ich das nun bei der 2. Tabelle, die 100%ig übereinstimmt, dann kommt folgende Fehlermeldung: Tabelle ist schreibgeschützt.
Wo nehem ich den Schreibschutz der Tabelle raus?!?!? Ich habe eigentlich keinen eingestellt.

mfg
Snyderburn

Hansa 31. Okt 2003 12:59

Re: DBGrid - Daten eintragen
 
Von CD hast Du nichts kopiert, oder doch ? 8)8)

Snyderburn 31. Okt 2003 13:02

Re: DBGrid - Daten eintragen
 
Zitat:

Zitat von Hansa
Von CD hast Du nichts kopiert, oder doch ? 8)8)

nein, habe ich nicht. Ich habe den Inhalt von der Querry, sowie Datasource kopiert und dann den inhalt dementsprechend verändert. aber nun klappt es nicht! Bei der Ursprungs Querry und DataSource funktioniert es aber ohne probs. mhm.... bin ratlos!


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