![]() |
Datenbank: MS-SQL • Version: 2000 • Zugriff über: ADO
Problem mit ADO und Providerflags
Einfaches Szenario:
MS-SQL (vermutlich auch andere DB) TADOTable (oder TADOQuery, egal) Eine Tabelle (ein Identitiy-Feld ID, der Rest sind Info-Felder) Alles mit der DB verknippern und Felder importieren. Ich will, das ADO beim Updaten zum Server folgenden SQL-Befehl schickt:
SQL-Code:
Bzw. über die sp_ExecuteSQL stored procedure...
UPDATE MyTable Set Foo='Foo' WHERE ID=12345
Es geht eigentlich nur um die WHERE Klausel, nämlich, das nur das ID-Feld als Kriterium benutzt wird. In der Delphi-Hilfe steht dazu, das die ProviderFlags des ID-TFields auf [pfInWhere], und die aller anderen Felder auf [pfInUpdate] gesetzt werden sollen. Klingt logisch. Klappt aber nicht. Egal, was ich wo einstelle, ADO schickt immer den Befehl:
SQL-Code:
Irgendwie soll das angeblich über die ADO-Properties gehen. Gut ist, wenn man die MSDN-CDs hat, oder die ADO-Hilfe von MS. Hab ich aber nicht.
UPDATE MyTable Set Foo='Foo' WHERE ID=12345 and Foo='Bar' <--Alter Wert von Foo
HIIIIIIIILLLLLLLLFFFFFFFFEEEEEEEEE! :wall: :wall: :wall: :wall: :wall: :wall: |
Re: Problem mit ADO und Providerflags
Zitat:
Zitat:
|
Re: Problem mit ADO und Providerflags
:oops: Nee, natürlich nich. Das erklärt zumindest, warum es nicht geht. Ähem...Räusper..
Aber, wie verdammt noch mal, bekomme ich dieses %§$§&/&/-ADO dazu, mir meine WHERE-Klausel so hinzubiegen, wie ich sie nun mal gerne hätte. Das muss doch gehen... |
Re: Problem mit ADO und Providerflags
Zitat:
Ergo: ADO Express kümmert sich nicht um die [TField].ProviderFlags. :( |
Re: Problem mit ADO und Providerflags
Alter Schwede, und ich dachte ich wäre immer schlau: Da mal reinzuschauen, hätte nix geschadet. Aber es bleibt die offene Frage, die mich in den Wahnsinn treibt:
Wie bringe ich dieses ADO-Zeugs dazu, eine saubere UPDATE Anweisung an den Server zu schicken. Es kann doch wohl nicht sein, das ADO grundsätzlich und immer diese hirnkranken Updates hinbastelt. Man könnt' ja glatt denken, irgend ein Redmondfrickler hätte sich das ausgedacht und .... moment mal, jetzt wird mir einiges klar... Trotzdem, gibt es denn keinen in der Community hier, der Ahnung von ADO hat? Ich vermute: ADO = Alles Dämliche Objekte |
Re: Problem mit ADO und Providerflags
Also, ich kann Dir sagen, daß Updates mit ADO funktionieren und zwar ohne großartig an irgendwelchen Einstellungen herumzuspielen. Es wäre sinnvoll, wenn Du uns nicht so ein paar SQL-Brocken hinwirfst sondern auch mal die relevanten Stellen in Deinem Delphi-Programm zeigst.
|
Re: Problem mit ADO und Providerflags
Wenn es Dir weiterhilft:
Delphi-Quellcode:
Im SQL-Profiler sehe ich etwas, das äquivalent hierzu ist:
AdoTable1.Edit;
AdoTable1['Foo'] := 'Bla'; AdoTable1.Post;
SQL-Code:
Wieso steht in der WHERE-Klausel '... and Foo='Old Value'? Also, warum das da steht, kann ich mir denken, aber, wie bekomme ich es *WEG*.
Update <Table> set Foo='Bla' Where ID=12345 and Foo='Old Value'
Aber das stand eigentlich Alles so schon in meiner Frage. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 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