Einzelnen Beitrag anzeigen

bdg

Registriert seit: 19. Mär 2007
7 Beiträge
 
#6

AW: MySql / Zeos 6.6 / Delphi / PostError // Can not update a complex query with more

  Alt 9. Nov 2012, 11:11
Also :
Zu : "UraltDB" ecc ecc
ja richtig, das ist ja meine Aufgabe, das ganze auf einen neueren Stand zu bringen. Das dies eine Uraltdb ist weiss ich auch

Zeos 7 kann ich leider nicht verwenden, da die für Delphi NUR AB VERSION 7 gehen und das Programm in Delphi 5 geschrieben ist.

ZUpdate habe ich nachgeschaut, gibt es auch in Zeos5.3, habe ich aber noch nie gebraucht
SqlStatements in die ZSqlUpdate-Componente zu hinterlegen und diese dann mit den Querys zu verbinden
ist aufwendiger als überall "Query.Edit" mit Sql-Anweisungen zu ersetzten.
Ferner ist es für Fehlersuche ecc besser wenn eine Sql-Anweisung in der PAS drin steht als in der komponente(dfm)

Ich werde es dann wohl so machen

Um nochmal auf das Problem zu kommen :
http://www.lazarusforum.de/viewtopic...=6132&start=15

Dort ist der Code der das ganze blockt notiert

{**
Defines a table name from the select statement.
}
function TZGenericCachedResolver.DefineTableName: string;
var
I: Integer;
Temp: string;
begin
Result := '';
for I := 1 to Metadata.GetColumnCount do
begin
Temp := ComposeFullTableName(Metadata.GetCatalogName(I),
Metadata.GetSchemaName(I), Metadata.GetTableName(I));
if (Result = '') and (Temp <> '') then
Result := Temp
else if (Result <> '') and (Temp <> '') and (Temp <> Result) then
raise EZSQLException.Create(SCanNotUpdateComplexQuery);
end;
if Result = '' then
raise EZSQLException.Create(SCanNotUpdateThisQueryType);
end;

was passiert hier ?!?!?!?

Hier mein Besipiel-SQL

Query.Sql.Text := 'Select ' +
' firma.FirmenNr, firma.Name1, Firma.Name2, ' +
' Ansprechpartner.Vorname,Ansprechpartner.Nachname ' +
' from firma ' +
' left join Ansprechpartner on firma.FirmenNr=Ansprechpartner.FirmenNr '

Es wird jedes Feld mit den Tabellennamen versehen ( bei mir ist er schon drin ).
Beim durchlaufen der Felder , ' firma.FirmenNr, firma.Name1, Firma.Name2, ' passiert noch nichts
erst dann wenn " Ansprechpartner.Vorname" kommt merkt er das ist ein 2.Tabellenname
und nun brech ich ab mit "Can not update a complex query with more than 1 table"


Eine Lösung gibt es wohl nicht,
man könnte versuchen, an dieser Stelle die Function so umzuschreiben, das die schleife nicht durchläuft, aber eine bestehende komponente zu überarbeiten, ohne zu wissen, was denn an anderen stellen noch passieren kann ist nicht ratsam (((

Deswegen :
Ich stell mal alle Query.Edits/Append/Insert/Delete um auf Sql-Anweisungen
  Mit Zitat antworten Zitat