AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL Refresh

Ein Thema von Alterauge · begonnen am 16. Jan 2012 · letzter Beitrag vom 16. Jan 2012
Antwort Antwort
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#1

MySQL Refresh

  Alt 16. Jan 2012, 11:24
Datenbank: MySQL • Version: ? • Zugriff über: 3306
Gibt es noch eine andere möglichkeit ein DBGrid aktuell zu halten?

Delphi-Quellcode:
procedure TForm1.RefreshTimer(Sender: TObject);
begin
 MyTAble1.Last;
 MYTAble1.Refresh;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: MySQL Refresh

  Alt 16. Jan 2012, 13:35
Hier nochmals der Hinweis:

Gib bitte die Version des MySql-Servers an und mit welchem Framework du darauf zugreifst.
Das kann doch so schwer nicht sein ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: MySQL Refresh

  Alt 16. Jan 2012, 13:43
Naja, zunächst mal sollte man überlegen, ob es überhaupt notwendig ist
die angezeigten Datensätze in einem DBGrid immer aktuell zu halten.
Beispiel:
In einer Bücherei gibt es eine "Buch"-Tabelle.
Wenn ein Mitarbeiter an Arbeitsplatz A neue Bücher einpflegt ist es sicher nicht
notwendig, dass Arbeitsplatz B immer die aktuellen Daten sieht.

Desweiteren ist es fast immer unnötig einem Benutzer ALLE Datensätze einer Tabelle anzuzeigen.
Es reicht meistens eine Teilmenge der Daten - sprich man sollte SQL-Abfragen mit einschränkender WHERE-Klausel verwenden anstatt immer alle Datensätze mittels TTable abzurufen.
Andreas
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#4

AW: MySQL Refresh

  Alt 16. Jan 2012, 16:30
Sorry, aber das muss ich jetzt mal los werden:

Ist es notwendig den TE immer zu "Bevormunden"
(Das geschieht leider leider sehr sehr oft, "warum willst Du alle Datensätze" "warum müssen sie aktuell sein")
Es gibt sicherlich einen guten Grund warum der TE die Datensätze aktuell haben möchte.
Er sagt auch nichts von allen Datensätzen.
Es gibt genügend Gründe für die Frage des TE.
Ist nicht bös gemeint.

Nun zum Tema:
Leider kann auch ich die Frage nicht direkt beantworten.
Mit den Devart Komponenten gibt es z.B. die Möglichkeit einzelne Datensätze zu aktualisieren.
Stichwort "refreshrecord"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: MySQL Refresh

  Alt 16. Jan 2012, 18:29
Das hat nichts mit bevormunden zu tun, sondern ist ein Denkanstoss.
Und da er eine Table-Komponente verwendet, welche select * from <Tabelle>; als Abfrage verwendet, hat er alle Datensätze.
Markus Kinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: MySQL Refresh

  Alt 16. Jan 2012, 18:42
Es gibt sicherlich einen guten Grund warum der TE die Datensätze aktuell haben möchte.
Mag sein, aber es gibt eben keine vernünftige technische Lösung dafür!
Ein Datenbankserver müsste zusätzlich eine Benachrichtigungsschnittstelle anbieten.
Die Clients könnten sich beim Server registrieren nach dem Motto: "Server bitte schick mir ein Event, wenn sich der Inhalt der Tabellen Tab1, Tab2 oder TabXY ändert!".
IMHO kann nur Interbase Events an die Clients versenden und selbst wenn andere Server Ähnliches können bringt das wenig weil es keinen Standard gibt.
Andreas

Geändert von shmia (16. Jan 2012 um 18:46 Uhr)
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#7

AW: MySQL Refresh

  Alt 16. Jan 2012, 19:33
Ich kann noch mal die Devart Komponenten empfehlen.
Die Table-Komponente kann dort über
Code:
Mytable.filter := ....
auch gefilterte Datensätze abrufen.
Außerdem gibt es noch die "RefreshQuick" Methode.
Die holt wenigsten nur die geänderten Datensätze.
Und löscht bei bedarf die nicht mehr vorhandenen.

Oder ein TimeStamp nutzen.
Und nur dann refreshen wenn Daten geändert wurden.

Wenns auch eine andere Datenbank sein darf dort gibt es notification events.
(oracle, mssql ich glaube schon die Express Versionen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

AW: MySQL Refresh

  Alt 16. Jan 2012, 19:36
Wenns auch eine andere Datenbank sein darf dort gibt es notification events.
(oracle, mssql ich glaube schon die Express Versionen)
Oder Firebird (siehe auch shmias Bemerkung zu Interbase, die ursprüngliche Basis ist ja aus demselben Stall).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: MySQL Refresh

  Alt 16. Jan 2012, 19:47
Ich kann noch mal die Devart Komponenten empfehlen.
Die Table-Komponente kann dort über
Code:
Mytable.filter := ....
auch gefilterte Datensätze abrufen.
Außerdem gibt es noch die "RefreshQuick" Methode.
Die holt wenigsten nur die geänderten Datensätze.
Und löscht bei bedarf die nicht mehr vorhandenen.

Oder ein TimeStamp nutzen.
Und nur dann refreshen wenn Daten geändert wurden.

Wenns auch eine andere Datenbank sein darf dort gibt es notification events.
(oracle, mssql ich glaube schon die Express Versionen)
Die Filtereigenschaft kann auch das Standard-DataSet (TAble, Query). dieser Filter ist aber lokal, d.h. es wird trotzdem die ganze Tabelle an den Client übertragen.
Markus Kinzler
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#10

AW: MySQL Refresh

  Alt 16. Jan 2012, 20:31
Sorry ich meinte auch:Mytable.filterSQl := .... Daraus wird dann
select * from mytable where ....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 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