Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TTable, TQuery ... was denn nun...? (https://www.delphipraxis.net/164256-ttable-tquery-denn-nun.html)

golisan 4. Nov 2011 13:52

Datenbank: dbase • Version: 4 • Zugriff über: TTable/TQuery

TTable, TQuery ... was denn nun...?
 
Hallo liebes Forum,

jetzt habe ich mich fast zwei Tage lang von einem Problem zum nächsten gegooglet aber nun strecke ich die Flügel :?

Eigentlich möchte ich was ganz einfaches machen:

Eine Zeiterfassung. Eingegeben werden der
- Tag(Monat und Jahr wurde durch eine Vorauswahl bereits vorgegeben)
- Zeit von bis
- Kommentar

Ich habe mir über die Datenbankoberfläche eine dBase-Tabelle erstellt.

Auf einem Formular habe ich DBGrid und ein DBNavigator.
Das DBGrid zeigt die Tabelle(Daten) auch an.

Die Eingaben selber wollte ich aber nicht direkt im DBGrid vornehmen und so habe ich noch entspr.
DBEdits und ein DBMemo auf's Formular gepackt.

Das DBGrid habe ich auf ReadOnly=true gestellt.

Klickt man auf eine Zeile im Grid, werden die Daten in den Edits/Memo angezeigt und man
kann sie ändern.
Soweit so gut.

Jetzt soll das DBGrid die Daten natürlich richtig sortiert anzeigen.
1. Tag und
2. Uhrzeit von

So bin ich auf das TQuery gestoßen.

Das mit dem sortierten Anzeigen klappt zwar ABER ich kann die Daten nicht mehr ändern.

Wie mir Google verraten hat, ist ein DBGrid nicht mehr änderbar wenn ein ORDER BY im Spiel ist :shock:

Im Prinzip möchte ich einfach nur, dass nach jeder Datenbankaktion das DBGrid wieder neu sortiert wird.

Das kann doch nicht so schwierig sein.

Könnt' ihr mir einen Tipp geben?

Danke schon mal!

p80286 4. Nov 2011 14:28

AW: TTable, TQuery ... was denn nun...?
 
Wie wäre es mit der alten Methode
Delphi-Quellcode:
// Update / Insert new Data
Query1.SQL.Text:='Insert .....';
Query1.Sql.ExecSql;

// get act. Data
Query1.SQL.Text:='Select ....';
query1.SQL.Open;
Gruß
K-H

Bummi 4. Nov 2011 14:36

AW: TTable, TQuery ... was denn nun...?
 
Ich würde Dir eine moderne Datenbank empfehlen, wenn Du frickeln und fake willst kannst Du

Deine Query in einem Grid darstellen
die Felder die Du bearbeiten willst über ein TTable auf die gleiche Tabelle mit
Mastersource := Query_src MasterFields mit dem Indexfeld verbinden
und die Edits mit der Tabelle verbinden.
Jetzt kannst Du die Daten in den Edits verändern, hast nur das Problem dass man im Gitter nicht sieht, da ein Refresh nicht funktioniert musst Du im Prinzip im AfterPost der Tabelle dir das IndexFeld der Query merken, diese schliessen , neu öffnen und den Index wieder 'Locaten'
Delphi-Quellcode:
procedure TForm1.Table1AfterPost(DataSet: TDataSet);
var
 f:Double;
begin
  LockWindowUpdate(Handle);
  try
  f := Query1SpeciesNo.Value;
  Query1.close;
  Query1.Open;
  Query1.Locate('Species No',f,[]);
  finally
    LockWindowUpdate(0);
  end;
end;

golisan 4. Nov 2011 16:35

AW: TTable, TQuery ... was denn nun...?
 
erst mal Danke für eure Antworten.


Hmmmm... mit den Stichwort "alte Methode" kann ich nichts anfangen.

Modernere Datenbank?

Ich habe Delphi 5 und da ist dBase oder Paradox dabei... sind beide wahrscheinlich gleich "unmodern" 8-)
Oder wäre Paradox besser?

Hab' schon mal was gelesen von wegen einen zweiten Index definieren und nach dem sortieren. :?:

Ich hatte auch schon die Überlegung statt einem DBGrid ein "normales" StringGrid zu nehmen.
Beim Start alle Werte für einen Monat einlesen(sind ja nicht so viele), dann kann der User die Daten ändern und beim
Schliessen der Form, lösche ich die Daten für den Monat und schreibe das StrinGrid komplett in die DB.

Aber das wäre nur der Plan B :stupid:

Bummi 4. Nov 2011 17:01

AW: TTable, TQuery ... was denn nun...?
 
Das mit dem Index ist einen Versuch wert. Mit Delphi 5 wirst Du wenn Du Dir ADOExpress nicht dazukaufst am ehesten in Richtung Firebird o.ä. gehen, hierfür gibt es aber kompetentere Forenmitglieder...
Mit den ganzen BDE-Krankheiten habe ich mich in den letzen 10 Jahren nur noch zu Migrationszwecken auseinandergesetzt.

stahli 4. Nov 2011 18:16

AW: TTable, TQuery ... was denn nun...?
 
Hmm, naja, es kommt auf den Umfang und Einsatzzweck an.

Die BDE ist definitiv veraltet und für ein ernsthaftes Projekt nicht mehr zu empfehlen.
Aber sie hat auch ihre Vorteile.
Sie ist einfach einsetzbar und bringt als Tool zum Bearbeiten die Datenbankoberfläche mit.

Also wenn Du die Datenbank nur lokal nutzen willst und schon angefangen hast, dann spricht nicht unbedingt etwas gegen die Weiternutzung.
Parallel sollte man aber auch schon mal zu Firebird und Co. schielen...

Wenn BDE, dann ist es nahezu egal ob Paradox oder DBase. Ich meine, Paradox bot ein paar mehr Möglichkeiten der Indizierung.

Wenn Du TTable benutzt und in der Tabelle mehrere Indexe definiert hast, dann kannst Du im TTable einfach einen Index zur Sortierung auswählen.
Außerdem kann man auch Datensätze filtern lassen. Du jast quasi damit einen Live-Zugang in die komplette Tabelle und kannst da noch etwas dran rum schrauben.

Das ist eine einfache, aber keine sehr professionelle Lösung (und taugt eher nur für kleine, lokale Projekte). Du musst entscheiden, was Dir wichtiger ist.
Zum Testen und Erfahrungen machen kann es jedenfalls nicht schaden.

golisan 4. Nov 2011 22:26

AW: TTable, TQuery ... was denn nun...?
 
So, ich habe es gelöst:

1. habe ich Paradox verwendet
2. habe ich mir einen SekundärIndex erstellt, der die gewünschten Sortierfelder enthält
3. im TTable, welches mit dem DBGrid verknüpft ist, den SekundärIndex angegeben.

Jetzt tut es erst mal ... bis zum nächsten Problem :-D

Danke an euch!

stahli 4. Nov 2011 22:40

AW: TTable, TQuery ... was denn nun...?
 
Schön, aber trotzdem dran denken, dass es eigentlich "richtigere" Lösungen gibt (für´s nächste Projekt) ;-)

golisan 4. Nov 2011 23:03

AW: TTable, TQuery ... was denn nun...?
 
Ja, es gibt sicherlich "richtigere" Lösungen aber ich möchte ja keine Kernkraftwerke damit steuern :)
Ist nur für den "Hausgebrauch" :wink:

Bummi 4. Nov 2011 23:18

AW: TTable, TQuery ... was denn nun...?
 
und eigentlich ist es gar nicht schlecht, sich von den Anfängen her zu entwickeln.
Viele der älteren hier im Forum sind mit der BDE "groß" geworden, habe viele Seiten Code noch in Assembler entwickelt, sicher kein Nachteil.

mschaefer 4. Nov 2011 23:26

AW: TTable, TQuery ... was denn nun...?
 
Wenn es nur etwas kleineres sein sollte, (vielleicht ein Hochregallager oder die Formelsammlung), dann wirf doch mal einen Blick auf SQLite 1, SQLite 2, SQLite 3 und finally A simple Delphi wrapper for Sqlite 3 .

Grüße // Martin

Sir Rufo 4. Nov 2011 23:31

AW: TTable, TQuery ... was denn nun...?
 
Zitat:

Zitat von mschaefer (Beitrag 1134552)
Wenn es nur etwas kleineres sein sollte, (vielleicht ein Hochregallager oder die Formelsammlung), dann wirf doch mal einen Blick auf SQLite 1, SQLite 2, SQLite 3 und finally A simple Delphi wrapper for Sqlite 3 .

Grüße // Martin

Und wenn man sich mit dem ganzen Datenbank-Geraffel eigentlich nicht auseinandersetzen möchte dann Synopse mORMot

stahli 4. Nov 2011 23:55

AW: TTable, TQuery ... was denn nun...?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1134553)
Und wenn man sich mit dem ganzen Datenbank-Geraffel eigentlich nicht auseinandersetzen möchte dann Synopse mORMot

Gibt es da irgendwo ein verstecktes Demovideo (notfalls auch nix deutsch)?

Bummi 5. Nov 2011 00:00

AW: TTable, TQuery ... was denn nun...?
 
@stahli
sorry , aber :angel2:

stahli 5. Nov 2011 00:13

AW: TTable, TQuery ... was denn nun...?
 
Wieso das denn jetzt?
Ich finde in dem englischen Text keinen (schnellen) Einstieg. Áuch wenn ich ihn übersetze, kann ich das inhaltlich nicht ausreichend nachvollziehen.
Ich würde wohl Tage brauchen, um mir einen Überblick zu verschaffen.
Gäbe es ein Video (habe leider noix gefunden) würde ich mir das gern mal ansehen. Punkt.

Bummi 5. Nov 2011 00:38

AW: TTable, TQuery ... was denn nun...?
 
war nicht bös gemeint, ich bin wahrscheinlich nicht ganz so visuell eingestellt:wink:

Sir Rufo 5. Nov 2011 00:42

AW: TTable, TQuery ... was denn nun...?
 
Zitat:

Zitat von stahli (Beitrag 1134557)
Wieso das denn jetzt?
Ich finde in dem englischen Text keinen (schnellen) Einstieg. Áuch wenn ich ihn übersetze, kann ich das inhaltlich nicht ausreichend nachvollziehen.
Ich würde wohl Tage brauchen, um mir einen Überblick zu verschaffen.
Gäbe es ein Video (habe leider noix gefunden) würde ich mir das gern mal ansehen. Punkt.

Ein Video gibt es nicht ... aber ein paar Demo-Projekte.

Das ganze reduziert sich allerdings auch auf die Erstellung der Daten-Objekte (TSQLRecord) und das aufsetzen von Client/Server.
Dann ist das schon soweit einsatzfähig. Die Datenbank wird automatisch anhand der Objekte erzeugt, bzw. bei Änderungen erweitert.

scrat1979 5. Nov 2011 09:40

AW: TTable, TQuery ... was denn nun...?
 
Was spricht gegen eine "lokale" Datenbank, die sich direkt in das Projekt einkomiliert und nur eine Datei für die Daten bereithalten muss (z.B. Absolute Database von ComponentAce)? Für den privaten (Single-User Zugriff) Gebrauch KOSTENLOS. Das wäre, was ich in diesem Fall machen und empfehlen würde. Sonst "natürlich" FireBird bei mir auch 1. Wahl zusammen mit den IBDAC-Komponenten.

Sir Rufo 5. Nov 2011 10:43

AW: TTable, TQuery ... was denn nun...?
 
Zitat:

Zitat von scrat1979 (Beitrag 1134572)
Was spricht gegen eine "lokale" Datenbank, die sich direkt in das Projekt einkomiliert und nur eine Datei für die Daten bereithalten muss (z.B. Absolute Database von ComponentAce)? Für den privaten (Single-User Zugriff) Gebrauch KOSTENLOS. Das wäre, was ich in diesem Fall machen und empfehlen würde. Sonst "natürlich" FireBird bei mir auch 1. Wahl zusammen mit den IBDAC-Komponenten.

Rein gar nichts ... das geht mit mORMot auch

Das geniale, wenn ich dann aus der Anwendung doch eine Client/Server Lösung möchte, dann setzt man eben schwupps einen Server auf (effektiv nur 1 Zeile Code) und ändert in der Anwendung einfach den Zugriff von lokal auf Server (effektiv 1 Zeile Code) ;)

scrat1979 5. Nov 2011 10:49

AW: TTable, TQuery ... was denn nun...?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1134579)
Zitat:

Zitat von scrat1979 (Beitrag 1134572)
Was spricht gegen eine "lokale" Datenbank, die sich direkt in das Projekt einkomiliert und nur eine Datei für die Daten bereithalten muss (z.B. Absolute Database von ComponentAce)? Für den privaten (Single-User Zugriff) Gebrauch KOSTENLOS. Das wäre, was ich in diesem Fall machen und empfehlen würde. Sonst "natürlich" FireBird bei mir auch 1. Wahl zusammen mit den IBDAC-Komponenten.

Rein gar nichts ... das geht mit mORMot auch

Das geniale, wenn ich dann aus der Anwendung doch eine Client/Server Lösung möchte, dann setzt man eben schwupps einen Server auf (effektiv nur 1 Zeile Code) und ändert in der Anwendung einfach den Zugriff von lokal auf Server (effektiv 1 Zeile Code) ;)

Dann könnte man ja auch FireBird embedded verwenden. Sind auch nur paar Einstellungen in der connetion und schon verbindet man sich statt lokal mit einem Server... Mit mORMot habe ich leider keine Erfahrung (Programmiere aber auch "nur" als Hobby...), lese davon zum ersten mal :oops:

Sir Rufo 5. Nov 2011 11:41

AW: TTable, TQuery ... was denn nun...?
 
Zitat:

Zitat von scrat1979 (Beitrag 1134580)
Dann könnte man ja auch FireBird embedded verwenden. Sind auch nur paar Einstellungen in der connetion und schon verbindet man sich statt lokal mit einem Server... Mit mORMot habe ich leider keine Erfahrung (Programmiere aber auch "nur" als Hobby...), lese davon zum ersten mal :oops:

ich habe mal eine kleine Demo hier eingestellt
http://www.delphipraxis.net/1134584-post1.html


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