AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO +Interbase und auch noch ohne SQL
Thema durchsuchen
Ansicht
Themen-Optionen

ADO +Interbase und auch noch ohne SQL

Ein Thema von danielA · begonnen am 5. Mär 2003 · letzter Beitrag vom 19. Mär 2003
Antwort Antwort
Seite 2 von 2     12   
danielA

Registriert seit: 10. Jun 2002
Ort: Hamburg
72 Beiträge
 
Delphi XE7 Enterprise
 
#11
  Alt 19. Mär 2003, 08:26
Hallo nochmal,

Quelltext möchte ich nicht posten, aber eine kurze Übersicht wird denke ich OK sein.

Ich habe ein Stringgrid abgeleitetund einige Eigenschaften wie Tablename, Suchfeld etc. hinzugefügt. diese Komponenete arbeitet nicht mit der Datasource sondern greift auf eine Query zu. Wie man das SQL-Statement daraus formt denke ich ist klar. Nun nach dem abschießen des SQL-Statements werden erstmal nur die ersten 1000 Datensätze in das Grid geladen. Der Rest der Abfragemenge bleibt aber offen. Nun wird ein zweiter Task geöffnet (Gott vergib mir) und der Recordcount in diesem Task bestimmt (dauert bei großen Abfragemengen sonst zu lange). Dieser Task initialisiert mir den Scrollbalken des Grid. Geht der User nun mit dem Corsor langsam nach unten werden bei Datensatz 900 des Grid die nächsten 1000 aus der noch geöffnetten Datenmenge geholt (ca. 1/2 s verzögerung). Wird richtig weit nach unten gescrollt muß geseekt werden (dauert bei 500000 Datensätzen von 1 auf 500000 ca. 10 s ist denke ich noch akzeptabel, wer scrollt auch 500000 Datensätze es gibt ne Suchmaske ? ). Es gibt da noch ne Eigenschaft, die mir ein Eindeutiges Feld angibt (ID), über diese kann ich meine Updates laufen lassen. So, mehr möchte ich darüber leider nicht sagen, nun zu deinem letzten Beitrag.

Mit den Stored Procedures habe ich mich wahrscheinlich falsch ausgedrückt tut mir leid.

Die IBX- Komponenten sind nicht schlecht aber bei dem automatischen Update sehe ich ein Problem. Man stelle sich folgendes Szenario vor.

Frau Schmidt schreibt einen Brief an Mitarbeiter A, in dem sie eine Adressänderung angibt. Mitarbeiter A wird nun also in seinem Kundenprogramm Frau Schmidt aufrufen und die neue Adresse eingeben. Mitarbeiter B bekommt nun zur selben Zeit einen Anruf von Frau Lehmann. Frau Lehmann teilt Mitarbeiter B mit das sie geheiratet hat und früher Schmidt hieß. Mitarbeiter B wird nun den selben Datensatz aufrufen wie Mitarbeiter A, aber nur den Namen ändern. Nun schließt Mitarbeiter A seine Eingabe ab und speichert. Wenn Mitarbeiter B nun seine Transaktion abschließt wird die Adresse von Frau Lehmann aber wieder zurückgeändert, da alle Felder neu geschrieben werden nicht nur Ihr Name. das so ein Fall geschieht ist zwar sehr unwahrscheinlich aber muß meines erachtens mit einkalkuliert werden.

Grüße danielA
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#12
  Alt 19. Mär 2003, 10:39
Hi,

Zitat von danielA:
seine Eingabe ab und speichert. Wenn Mitarbeiter B nun seine Transaktion abschließt wird die Adresse von Frau Lehmann aber wieder zurückgeändert, da alle Felder neu geschrieben werden nicht nur Ihr Name.
Warum werden alle Daten geschrieben? Es sollte doch möglich sein, Änderungen an Edits festzustellen und dann nur die betreffenden Daten zurück an die Datenbank zu leiten. Da Du mit deinen Klassen ja eh eine Zwischenschicht bildest sollte das doch ohne Probleme gehen...

Grüße
Lemmy
  Mit Zitat antworten Zitat
danielA

Registriert seit: 10. Jun 2002
Ort: Hamburg
72 Beiträge
 
Delphi XE7 Enterprise
 
#13
  Alt 19. Mär 2003, 10:57
Hallo Lemmy,

ich meinte das automatische update- Statement in der IBDataset
da steht doch in ModifySQL

Code:
update Table Set
  Feld1=:Feld1,
  Feld2=:Feld2,
  Feld3=:Feld3,
   ...
es werden also alle Felder neu geschtrieben oder habe ich das falsch verstanden ?

Gruß danielA
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#14
  Alt 19. Mär 2003, 11:22
Hi DanielA,

verwendest Du jetzt die Zugriffsklassen oder gehst Du direkt über die TIBDataSets? Wie werden die Daten visualisiert, in einer visuellen DB-Komponente oder machst Du das selbst?

Wenn Du selbst visualisierst, dann musst Du doch die Daten wieder per Hand an die TIBDataset zurückschaufeln, und genau da gibts Du eben nur die geänderten Daten zurück und nicht alle....


Grüße
Lemmy
  Mit Zitat antworten Zitat
danielA

Registriert seit: 10. Jun 2002
Ort: Hamburg
72 Beiträge
 
Delphi XE7 Enterprise
 
#15
  Alt 19. Mär 2003, 11:40
Hallo Lemmy,

ich visualisiere selbst, schaufel also meine Daten selbst zur Dataset und zurück.
In dieser Klasse verwende ich noch keine Zugriffsklassen (das ist noch in arbeit). Sie steht also alleine.

Der Kommentar, den ich oben bzgl. dem Update und alle Felder die sich dann ändern, sollte sich eigentlich auf harrybo's letzten Beitrag beziehen, in dem er mir vorschlug die IBX Kompos zu verwenden. In meinen Komponenten lasse ich diese Frage aber stets offen. Da sowohl IBDataset als auch ADODataset von TDataset
abgeleitet sind habe ich immer eine Eigenschaft Dataset:TDataset mit drin, in die ich dann auch IBX und ADO einhängen kann.

Grüße danielA
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:30 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