![]() |
Datenbank: Access • Zugriff über: ADO
Schlüsselspalteninformationen sind ungenügend / inkorrekt
Hallo
wenn ich mein Programm aufrufe und per Drag und Drop eine Produktgruppe verschiebe bringt er mir diesen Fehler: "Die Schlüsselspalteninformationen sind ungenügend oder inkorrekt. Es sind zu viele Zeilen von der Aktualisierung betroffen" Er führt jedoch den Edit korrekt aus. Alles ist so abgelaufen wie ich es wollte :) bis auf die Fehlermeldung ich hab schon im inet gesucht aber nichts gefunden. Für jede Hilfe bin ich Dankbar. hier noch der code
Delphi-Quellcode:
with MastData.ArticleQry do begin
Close; Sql.Clear; SQL.Add('SELECT gruppe1,gruppe2,gruppe3 FROM article WHERE gruppe3 = '+gr); Open; while not EOF do begin MastData.ArticleQry.Edit; //showmessage(gr); showmessage(MastData.ArticleQry.FieldByName('gruppe2').AsString); showmessage(MastData.ArticleQry.FieldByName('gruppe3').AsString); MastData.ArticleQry.FieldByName('gruppe2').AsString := dropitem; //showmessage(dropitem); MastData.ArticleQry.Post; next; end; end; |
Re: Schlüsselspalteninformationen sind ungenügend / inkorrek
Verwende mal statt TADOQuery TADODataset. TADOTable und TADOQuery sind nur für einfacher Portierung von BDE gedacht und haben AFAIK ein paar Macken/Fehler.
|
Re: Schlüsselspalteninformationen sind ungenügend / inkorrek
also kann ich das mit query net verwirklichen ? oder wie kann soll ich das auffassen es ist so dass ich halt schon ziemlich viele querrys habe. und eigentlich schon ziemlich viel verknüpft habe. wenns nicht anders get werd ich mich so drüber machen aber danke schon mak
|
Re: Schlüsselspalteninformationen sind ungenügend / inkorrek
TADODataset ist flexibler. Kann sowohl im "TTable-Modus" als auch "TQuery-Modus" arbeiten.
|
Re: Schlüsselspalteninformationen sind ungenügend / inkorrek
So, nur der Vollständigkeit halber ich hab meinen Fehler gefunden. Ich hab einen neuen querry erstellt und dann mit diesem den datensatz aktualisiert hier der code :
Delphi-Quellcode:
nun seht ihr den unterschied naja es klappt performance mässig hatte ich noch keine zeit zu testen .
begin
with MastData.ArticleQry do begin Close; Sql.Clear; SQL.Add('SELECT gruppe1,gruppe2,gruppe3 FROM article WHERE gruppe3 = '+gr); Open; while not EOF do begin Edit; FieldByName('gruppe2').AsString := trvgroup.DropTarget.Text; MastData.ArticleSelQry.Close; MastData.ArticleSelQry.sql.Clear; MastData.ArticleSelQry.SQL.Add('SELECT gruppe1 FROM article WHERE gruppe2 = '+QuotedStr(trvgroup.DropTarget.Text)); MastData.ArticleSelQry.Open; MastData.ArticleQry.FieldByName('gruppe1').Value := MastData.ArticleSelQry.FieldByName('gruppe1').Value; Post; next; end; end; end; |
Re: Schlüsselspalteninformationen sind ungenügend / inkorrek
Zitat:
Dann ist dies die Ursache für den Fehler. Hat das Feld "gruppe3" eine Index ? Falls nicht, ist dies die Ursache für schlechte Performance. |
Re: Schlüsselspalteninformationen sind ungenügend / inkorrek
Hallo,
also diesen Fehler hatte ich auch schon mal. Ich habe bei der ADOQuery-Komponente die Eigenschaft "CursorLocation" auf "clUseServer" eingestellt. Danach funktionierte die Aktualisierung der Datensätze problemlos. MfG Delphi Apostel |
AW: Schlüsselspalteninformationen sind ungenügend / inkorrekt
Na der Beitrag ist zwar schon älter aber sehr Hilfreich was ich denke
Ich habe lange nach dem Fehler gesucht beim löschen von Vielen Datensätzen kam genau der Fehler Durch den Tip 1 voran schaute ich nach und genial Hier die Delphi Hilfe dazu ! :thumb: Mit CursorLocation können Sie festlegen, ob eine clientseitige oder eine serverseitige Cursor-Bibliothek verwendet wird. Der Wert wirkt sich aber nur auf Verbindungen aus, die nach der Zuweisung geöffnet werden. Der Standardwert ist clUseClient. Ein Client-Cursor bietet mehr Flexibilität. Die gesamten Daten werden auf den lokalen Rechner abgerufen und hier bearbeitet. Dadurch können Aktionen durchgeführt werden (z. B. spezielle Sortier- und Filteroperationen), die vom Server möglicherweise nicht unterstützt werden. Da die SQL-Anweisungen auf dem Server ausgeführt werden, wird beim Einschränken der Ergebnismenge durch eine WHERE-Klausel nur eine Teilmenge der Daten an den lokalen Cursor übertragen. Ein serverseitiger Cursor ist nicht so flexibel, kann aber bei sehr großen Ergebnismengen vorteilhaft (oder sogar notwendig) sein. Er muss verwendet werden, wenn die Größe der Ergebnismenge den verfügbaren Festplattenspeicher des Client-Systems überschreitet. Viele Server unterstützen außerdem nur Vorwärts-Cursor, bei denen der Satzzeiger in der Ergebnismenge nicht in Richtung Tabellenanfang bewegt werden kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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