Delphi-PRAXiS
Seite 1 von 3  1 23      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.
Seite 1 von 3  1 23      

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