Invalidate columns and keys of an edited table when pressing the "Save" button, to avoid SQL errors when switching to "Data" tab. Fixes issue #1556

This commit is contained in:
Ansgar Becker
2009-12-22 23:38:38 +00:00
parent c46a87338b
commit eb9915d5be
3 changed files with 23 additions and 14 deletions

View File

@ -849,6 +849,7 @@ type
function MaskMulti(str: WideString): WideString;
procedure SelectDBObject(Text: WideString; NodeType: TListNodeType);
procedure SetupSynEditors;
procedure ParseSelectedTableStructure;
end;
@ -6001,20 +6002,7 @@ begin
newDbObject := SelectedTable.Text;
tabEditor.TabVisible := True;
tabData.TabVisible := SelectedTable.NodeType in [lntTable, lntView];
SelectedTableColumns.Clear;
SelectedTableKeys.Clear;
SelectedTableForeignKeys.Clear;
try
case SelectedTable.NodeType of
lntTable: begin
SelectedTableCreateStatement := Connection.GetVar('SHOW CREATE TABLE '+Mainform.mask(SelectedTable.Text), 1);
ParseTableStructure(SelectedTableCreateStatement, SelectedTableColumns, SelectedTableKeys, SelectedTableForeignKeys);
end;
lntView: ParseViewStructure(SelectedTable.Text, SelectedTableColumns);
end;
except on E:Exception do
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
ParseSelectedTableStructure;
if tabEditor.TabVisible then begin
actEditObjectExecute(Sender);
// When a table is clicked in the tree, and the current
@ -6040,6 +6028,25 @@ begin
end;
procedure TMainForm.ParseSelectedTableStructure;
begin
SelectedTableColumns.Clear;
SelectedTableKeys.Clear;
SelectedTableForeignKeys.Clear;
try
case SelectedTable.NodeType of
lntTable: begin
SelectedTableCreateStatement := Connection.GetVar('SHOW CREATE TABLE '+Mainform.mask(SelectedTable.Text), 1);
ParseTableStructure(SelectedTableCreateStatement, SelectedTableColumns, SelectedTableKeys, SelectedTableForeignKeys);
end;
lntView: ParseViewStructure(SelectedTable.Text, SelectedTableColumns);
end;
except on E:Exception do
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
end;
procedure TMainForm.DatabaseChanged(Database: WideString);
begin
if (Database='') or (Databases.IndexOf(Database) > -1) then

View File

@ -396,6 +396,7 @@ begin
tabALTERcode.TabVisible := FEditObjectName <> '';
Mainform.SetEditorTabCaption(Self, FEditObjectName);
Mainform.RefreshTreeDB(Mainform.ActiveDatabase);
Mainform.ParseSelectedTableStructure;
ResetModificationFlags;
except
on E:Exception do

View File

@ -180,6 +180,7 @@ begin
FEditObjectName := editName.Text;
Mainform.SetEditorTabCaption(Self, FEditObjectName);
Mainform.RefreshTreeDB(Mainform.ActiveDatabase);
Mainform.ParseSelectedTableStructure;
Modified := False;
btnSave.Enabled := Modified;
btnDiscard.Enabled := Modified;