* CanModify should be false for fkLookup and fkCalculated fields. Part of bug #13114

* Added test for lookup-fields which currently fails for sqldb because TSQLQuert.Lookup isnt implemented

git-svn-id: trunk@12738 -
This commit is contained in:
joost 2009-02-13 22:17:25 +00:00
parent a1b750bc39
commit 6c06a902e2
2 changed files with 44 additions and 3 deletions

View File

@ -527,9 +527,13 @@ begin
Result:=Not ReadOnly;
If Result then
begin
Result:=Assigned(DataSet);
If Result then
Result:= DataSet.CanModify;
Result := FieldKind in [fkData, fkInternalCalc];
if Result then
begin
Result:=Assigned(DataSet);
If Result then
Result:= DataSet.CanModify;
end;
end;
end;

View File

@ -114,6 +114,7 @@ type
procedure TestRecNo; // bug 5061
procedure TestSetRecNo; // bug 6919
procedure TestRequired;
procedure TestCanModifySpecialFields;
end;
{ TSQLTestSetup }
@ -505,6 +506,42 @@ begin
DBConnector.StopTest;
end;
procedure TTestDBBasics.TestCanModifySpecialFields;
var ds : TDataset;
lds : TDataset;
fld : TField;
begin
lds := DBConnector.GetNDataset(10);
ds := DBConnector.GetNDataset(5);
with ds do
begin
Fld := TIntegerField.Create(ds);
Fld.FieldName:='ID';
Fld.DataSet:=ds;
Fld := TStringField.Create(ds);
Fld.FieldName:='LookupFld';
Fld.FieldKind:=fkLookup;
Fld.DataSet:=ds;
Fld.LookupDataSet:=lds;
Fld.LookupResultField:='NAME';
Fld.LookupKeyFields:='ID';
Fld.KeyFields:='ID';
lds.Open;
Open;
AssertTrue(FieldByName('ID').CanModify);
AssertFalse(FieldByName('LookupFld').CanModify);
AssertFalse(FieldByName('ID').ReadOnly);
AssertFalse(FieldByName('LookupFld').ReadOnly);
AssertEquals(1,FieldByName('ID').AsInteger);
AssertEquals('name1',FieldByName('LookupFld').AsString);
close;
lds.Close;
end;
end;
procedure TTestDBBasics.TestSafeAsXML;
var ds : TDataset;
LoadDs: TBufDataset;