From ccc6e0b26a9ca13477e5d9dd9ed6bf38aaaf16a1 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Mon, 22 Jul 2013 04:36:17 +0000 Subject: [PATCH] Use table name from helper TDBObject in TDBQuery.PrepareEditing, as TMySQLQuery.TableName does not return the VIEW's name when the VIEW contains aggregated columns. Fixes issue #3284. --- source/dbconnection.pas | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/dbconnection.pas b/source/dbconnection.pas index e8bea28c..64f9daa9 100644 --- a/source/dbconnection.pas +++ b/source/dbconnection.pas @@ -4416,7 +4416,7 @@ end; procedure TDBQuery.PrepareEditing; var - CreateCode, Dummy, DB, Schema: String; + CreateCode, Dummy, DB, ObjName, Schema: String; DBObjects: TDBObjectList; Obj: TDBObject; ObjType: TListNodeType; @@ -4429,6 +4429,7 @@ begin if FDBObject <> nil then begin Schema := FDBObject.Schema; ObjType := FDBObject.NodeType; + ObjName := FDBObject.Name; end else begin DB := DatabaseName; if DB = '' then @@ -4439,12 +4440,13 @@ begin for Obj in DBObjects do begin if (Obj.NodeType in [lntTable, lntView]) and (Obj.Name = TableName) then begin ObjType := Obj.NodeType; + ObjName := Obj.Name; Schema := Obj.Schema; break; end; end; end; - CreateCode := Connection.GetCreateCode(DatabaseName, Schema, TableName, ObjType); + CreateCode := Connection.GetCreateCode(DatabaseName, Schema, ObjName, ObjType); FColumns := TTableColumnList.Create; FKeys := TTableKeyList.Create; FForeignKeys := TForeignKeyList.Create; @@ -4452,7 +4454,7 @@ begin lntTable: Connection.ParseTableStructure(CreateCode, FColumns, FKeys, FForeignKeys); lntView: - Connection.ParseViewStructure(CreateCode, TableName, FColumns, Dummy, Dummy, Dummy, Dummy, Dummy); + Connection.ParseViewStructure(CreateCode, ObjName, FColumns, Dummy, Dummy, Dummy, Dummy, Dummy); end; FreeAndNil(FUpdateData); FUpdateData := TUpdateData.Create(True);