diff --git a/packages/fcl-db/src/base/db.pas b/packages/fcl-db/src/base/db.pas index ca6681cb83..fcadeea1d1 100644 --- a/packages/fcl-db/src/base/db.pas +++ b/packages/fcl-db/src/base/db.pas @@ -2042,7 +2042,12 @@ procedure TDefCollection.SetItemName(AItem: TCollectionItem); begin with AItem as TNamedItem do if Name = '' then - Name := Dataset.Name + Copy(ClassName, 2, 5) + IntToStr(ID+1) + begin + if assigned(Dataset) then + Name := Dataset.Name + Copy(ClassName, 2, 5) + IntToStr(ID+1) + else + Name := Copy(ClassName, 2, 5) + IntToStr(ID+1); + end else inherited SetItemName(AItem); end; diff --git a/packages/fcl-db/tests/testbasics.pas b/packages/fcl-db/tests/testbasics.pas index 5501054caa..542f391795 100644 --- a/packages/fcl-db/tests/testbasics.pas +++ b/packages/fcl-db/tests/testbasics.pas @@ -21,6 +21,7 @@ type procedure TestParseSQL; procedure TestInitFielddefsFromFields; procedure TestDoubleFieldDef; + procedure TestFieldDefWithoutDS; end; implementation @@ -170,6 +171,14 @@ begin AssertTrue(PassException); end; +procedure TTestBasics.TestFieldDefWithoutDS; +var FieldDefs : TFieldDefs; +begin + FieldDefs := TFieldDefs.Create(nil); + FieldDefs.Add('test',ftString); + FieldDefs.Free; +end; + initialization RegisterTest(TTestBasics); end.