Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
21.05.2012, 13:03:14
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  Problem mit Refresh (ADO) und SQL-Server
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Problem mit Refresh (ADO) und SQL-Server  (Gelesen 3239 mal)
schani
Gast
« am: 29.03.2002, 22:56:48 »

Hi !

Ich habe nun folgendes Problem (hoffentlich könnt ihr mir weiter helfen).
mein Prog. greift auf eine SQL-Server Datenbank zu. Da dies von meheren Rechner aus geschiet, muß auf den anderen Rechnern der (oder die) Datensätz(e) aktualisiert werden. Dies geht normalerweise über die Refresh-Methode. Doch sie will einfach nicht (mit SQL-SERVER)! Es kommt meist diese Fehlermeldung:

---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EOleException aufgetreten. Meldung: 'Nicht genügend Basistabelleninformationen zum Aktualisieren'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------

oder manchmal sagt er auch 'Nicht genügent Schlüsselfeldinformationen vorhanden'

wie kann ich die Datensätze aktualisieren????
Gibt es vielleicht ein Möglichkeit festzustellen ob seit dem letzten "open" bzw. "Refresh" etwas in der Tabelle geändert wurde?


Danke
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #1 am: 30.03.2002, 00:29:07 »

Ich vermute, Du hast:
- entweder keine PrimaryKey in der besagten Tabelle deklariert
- in der Select-Anweisung den PrimaryKey ausgelassen
- eine Eigenschaft "keepRowPosition" für den DataSource/Dataset gesetzt, die bewirkt, daß bei Aktualisierung versucht wird, den Positionscursor genau auf dem gleichen Datensatz wieder zu setzen als vor der Aktualisierung...

Die Fehlermeldung weißt auf folgendes hin (glaube ich): das System (ADO) betrachtet eine Aktualisierung als eine "Suche nach neuen Versionen von den angezeigten/bearbeiteten Datensätze". SQL-Datenbanken arbeiten "mengenorientiert". Konzequenz: jeder Datensatz muß eindeutig identifizierbar sein. Dies ist nur möglich wenn die Datenverbindung (Datasource/Dataset) jeden Datensatz durch seinen eindeutigen Schlüssel (primary key) erkennen kann. Fehlt dieser Schlüssel, dann sind "Aktualisierungen" nicht so möglich.

Workaround: dafür sorgen daß die Datensätze samt PrimaryKey referenziert werden.

Sag bitte Bescheid wenn diese Info bei Dir geholfen hat...

Gruß
Gespeichert

Prof.Y
Arpoon
schani
Gast
« Antworten #2 am: 30.03.2002, 22:56:01 »

du hattest recht! es war kein primärschlüssel definiert.
jetzt geht der refresh!!!

aber

er dauert über 2 minuten, ein schließen und wieder öffnen der tabelle dauert nur 10 sek (ist aber immer noch zu lange)
wie kann man das schneller machen???

wäre für ein paar tips dankbar
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #3 am: 31.03.2002, 00:07:39 »

So einfach läßt sich nicht direkt feststellen, wo an Geschwindigkeit etwas gewonnen werden kann. Hängt von sehr vielen Parametern ab.

Aber...
bei RDBMS gilt als Grungregel "benutze sowenig wie möglich die Anzeige von sehr vielen Daten in Grids". Und wenn diese Anzeige sein muß, dann sollte am besten mit sowenig Daten wie möglich herum hantiert werden, am besten mit nur "sichtbaren" Daten-Spalten für sehr wenige Datenzeilen.

Letzlich sollten Datenänderungen am besten nicht im Grid erfolgen können sondern in einem "One Datensatz-Editierbereich", sodaß die Grid-Anzeige mit einem "Snapshot" erfolgen kann.

=> wenn es geht, formuliere die SQL-Abfrage als Snapshot so, daß immer nur max 50 Zeilen mit max ca. 6 bis 10 Spalten angezeigt werden können. Dann geht's vielleicht etwas schneller.

Gruß,
Gespeichert

Prof.Y
Arpoon
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS