Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid und MS SQL-Server (https://www.delphipraxis.net/2053-dbgrid-und-ms-sql-server.html)

MadMason 5. Jan 2003 10:01


DBGrid und MS SQL-Server
 
Ich habe einen Table in einer MS-SQL Server Datenbank.
Wenn ich eine DBGrid nehme dem ein DataSource zuweise und dan dem DataSource einem SQLDataSet und dem meine SQLConnection (die funktioniert, da ich sie schon mit sqlquery erfolgreich benutzt habe)
und dann alles auf Enable stelle
kommt die meldung

operation not allowed on a unidirectional dataset

muss ich irgendetwas einstellen damit es geht oder ist es unmöglich?

MadMason 6. Jan 2003 14:41

gibt es eine andere Möglichkeit den kompletten Inhalt eines SQL-Tables anzuzeigen?

xbu58 6. Jan 2003 19:21

Hallo MadMason

Ich setze dafür immer TADOQuery ein und nicht SQLDataSet. Auf Server-Datenbanken sollte man aus Performance-Gründen nicht mit einem TTable TSQLDataSet zugreifen, da dadurch eine unnötige Belastung für den Server entsteht. Grundsätzlich gilt, dass man auf DB-Servern mit möglichst klar definierten Abfragen arbeiten sollte. Du musst Dir immer im Klaren sein, dass die Daten nicht nur vom Server aufbereitet werden, sonder auch übertragen werden müssen. Test die ich in diesem Zusammenhang gemacht habe, haben mir Geschwindigkeitsvorteile bis zu Faktor 10 gebracht! Das ist natürlich bei Tabellen mit nur wenigen Rows nicht unbedingt relevant, aber aus Einfachheit (oder Faulheit :tongue:) setzte ich deshalb immer TADOQuery ein.

Gruss
Xaver

harrybo 7. Jan 2003 09:56

Die Datenbankdatei könnte schreibgeschützt sein (z.B. wenn sie von CD kopiert wurde)

gruß, harrybo

xbu58 7. Jan 2003 19:00

Hallo Harrybo

Das ist eher unwahrscheinlich, da im SQL-Server eine Tabelle nicht ein einzelnes File ablegt, sondern alle Tabelle in einem sogenannten Dataspace abgelegt, welche im Minimum aus zwei Files besteht (DataFile und LogFile), die im File-System gespeichert ist. Ausserdem schreibt MadMason, dass er mit SQLQuery schon erfolgreich war. Also ist die Tabelle offensichtlich in Ordnung.

Hier noch ein Hinweis: Um mit ADO einen Update durchführen zu können (sprich .Edit und .Post) müssen nach meiner Erfahrung zwei Sachen eingestellt sein:
1. ADO arbeitete mit zwei CursorLocation-Typen (Server oder Client). Dieser Type legt fest, wo der Cursor verwaltet wird. Im Normalfall muss hier clUseClient verwendet werden.
2. ADO arbeitete mit verschiedenen CursorType. Am besten arbeitet man hier mit ctKeyset. Dieser Type verwendet für das Bilden des Update-Wheres den PrimaryKey der Tabelle oder einen entsprechenden Unique-Index. ctKeyset kann nicht eingesetzt werden, wenn nicht eines der beiden Kriterien erfüllt ist. Das heisst, die Tabelle muss einen PrimaryKey oder in Unique-Index haben!

Gruss
Xaver

MadMason 7. Jan 2003 19:03

hab die Lösung gefunden:

TSQLDataSet ist unidirektional
TSQLClientDataSet ist bidirektional --> damit funzts

harrybo 7. Jan 2003 21:57

Hallo xbu58, MadMason,
es war auch nur eine Vermutung. Demnächst kann ich vielleicht etwas konkreter helfen.

bis dahin, gruß, harrybo

xbu58 8. Jan 2003 05:43

Hallo harrybo

Kein Problem. Das Forum ist gerade deshalb eine gute Sache, weil man einfach mal seine Meinungen und Vermutungen aussern kann. Also musst Du dich nicht fast entschuldigen, wenn Du einen Beitrag leistst, ausser es ist ironisch gemeint :zwinker:

Gruss
Xaver

DSammy 25. Mai 2003 22:27

Zitat:

Zitat von MadMason
hab die Lösung gefunden:

TSQLDataSet ist unidirektional
TSQLClientDataSet ist bidirektional --> damit funzts

Hallo MadMason...

ich bin neu hier, aber ich glaube du kannst mir Helfen ?!

Ich versuche auf einen MSSQL-Server zu Connecten. Bislang bekam ich aber immer die Fehlermeldung "Anmeldung falsch" ? Ich benutze das Zoes-Packet und fange gerade erst mit MSSQL an ! Mit dem Enterprise-Manager bekomme ich den Connect hin ???
Weißt du rat, denn leider sind hier nicht so viele Leute die auf SQL-Server stehen :-)

Danke DSammy

MadMason 26. Mai 2003 15:59

Welche autorisierungsmethode hast du bei der Installation und beim erstellen der Datenbank angegeben?
Ich nutze immer Windows-Authentifikation, damit hab ich keine Probleme.

Das kann man im Enterprise Manager in den Eigenschaften der Datenbank einstellen. Probiers mal aus, vielleicht liegts daran.


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