![]() |
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? |
gibt es eine andere Möglichkeit den kompletten Inhalt eines SQL-Tables anzuzeigen?
|
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 |
Die Datenbankdatei könnte schreibgeschützt sein (z.B. wenn sie von CD kopiert wurde)
gruß, harrybo |
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 |
hab die Lösung gefunden:
TSQLDataSet ist unidirektional TSQLClientDataSet ist bidirektional --> damit funzts |
Hallo xbu58, MadMason,
es war auch nur eine Vermutung. Demnächst kann ich vielleicht etwas konkreter helfen. bis dahin, gruß, harrybo |
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 |
Zitat:
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 |
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 19:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz