AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit ADO und Providerflags
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit ADO und Providerflags

Ein Thema von alzaimar · begonnen am 18. Mai 2005 · letzter Beitrag vom 18. Mai 2005
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 10:57
Datenbank: MS-SQL • Version: 2000 • Zugriff über: ADO
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:
UPDATE MyTable Set Foo='FooWHERE ID=12345 Bzw. über die sp_ExecuteSQL stored procedure...
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:
UPDATE MyTable Set Foo='FooWHERE ID=12345 and Foo='Bar' <--Alter Wert von Foo 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.

HIIIIIIIILLLLLLLLFFFFFFFFEEEEEEEEE!
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 12:07
Zitat von alzaimar:
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.
Arbeitest du denn mit MIDAS?

Zitat von Borland:
ProviderFlags ist nur für Felder in Datenpaketen von Bedeutung, die für eine Ereignisbehandlungsroutine der Provider-Komponente bereitgestellt werden.
Grüße vom marabu
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 12:28
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...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 14:17
Zitat von alzaimar:
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.
Wenn man in der Unit ADODB.pas nach ProviderFlags oder pfInUpdate sucht, findet man nix.
Ergo: ADO Express kümmert sich nicht um die [TField].ProviderFlags.
Andreas
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 14:25
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
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 17:36
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.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Problem mit ADO und Providerflags

  Alt 18. Mai 2005, 19:20
Wenn es Dir weiterhilft:
Delphi-Quellcode:
AdoTable1.Edit;
AdoTable1['Foo'] := 'Bla';
AdoTable1.Post;
Im SQL-Profiler sehe ich etwas, das äquivalent hierzu ist:
Update <Table> set Foo='BlaWhere ID=12345 and Foo='Old Value' 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*.
Aber das stand eigentlich Alles so schon in meiner Frage.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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