我正试图在TADODataSet的Delphi10.1柏林上运行一个程序
这是我的代码:
rsGrid.Connection := MyADOConn;
rsGrid.CommandType := cmdText;
rsGrid.CommandText := 'my_StoredProc 100';
rsGrid.IndexName := 'ObjectID';
rsGrid.Active := True; //***** Showstopper here! *****//
while not rsGrid.Eof do
begin
Memo1.Lines.Add(rsGrid.FieldByName('ObjectID').AsString);
rsGrid.Next;
end;Connection属性的DataSet设置如下:
function TMainForm.MyADOConn: TADOConnection;
begin
Result := TADOConnection.Create(nil);
with Result do
begin
ConnectionString := 'Provider=SQLNCLI11.1;Persist Security Info=False;User ID=user15;Password=mypassword;Initial Catalog=MyDB;Data Source=my.server.com;Initial File Name="";Server SPN=""'';
KeepConnection := True;
IsolationLevel := ilCursorStability;
Mode := cmUnknown;
LoginPrompt := False;
Connected := True;
end;
end;数据库是Server 2012,所以我尝试使用10和11 (分别是Provider=SQLNCLI10.1和Provider=SQLNCLI11.1 )运行它。
我计划稍后在网格组件中使用这个TADODataSet (通过TDataSet),但我无法使它在XE8、西雅图和现在的柏林使用。它就挂在rsGrid.Active := True上。我也尝试过rsGrid.Open,但它也不起作用。
同时,它在我的XE4上完美地编译和执行。我在柏林做了什么错事?
发布于 2016-05-30 08:33:02
下面是发生的事。我将其作为答案发布,因此它可能会帮助其他人将Delphi早期版本(在XE8之前)的代码移植到XE 8/西雅图/柏林。
由于某种原因,在移植带有TADODataSet组件的表单时,它会丢失一些关键属性。换句话说,在传输时,组件丢失了一些属性(即LockType := ltOptimistic),这些属性在我的特定情况下是很重要的。
如何使它工作
要使您的代码恢复活力,只需将TADODataSet组件重新放置在表单上(删除它并放置一个新组件)。
https://stackoverflow.com/questions/37512110
复制相似问题