我目前正在追踪我们的SQL生成器中的一个罕见问题,并能够缩小问题的根源。我创建了一个包含三个测试用例的示例,以向您显示确切的行为:
var myList = myApp.virtualList('.list-block.virtual-list', {
items:
[
{
title: 'Item 1',
picture: 'path/to/picture1.jpg'
},
{
title: 'Item 2',
picture: 'path/to/picture2.jpg'
},
{
title: 'Item 1000',
picture: 'path/to/picture1000.jpg'
},
],
rowsAfter : 3,
template: '<li class="item-content">' +
'<div class="item-media"><img src="{{picture}}"></div>' +
'<div class="item-inner">' +
'<div class="item-title">{{title}}</div>' +
'</div>' +
'</li>'
});
字段&#34;选项&#34;是XML类型。所以我的观察是,如果我引用一个具有xml作为数据类型的字段,则不能使用TDataset.FieldByName引用所有后续字段而不引发异常。
这是一些已知的错误吗?
P.S。 这是有关表的架构:
QUery.Close;
//Query.SQL.Text := Format('select Options, JobID, StatusMessage from ServerJob where JobID = %d', [ServerJobID]); // #1
//Query.SQL.Text := Format('select JobID, Options, StatusMessage from ServerJob where JobID = %d', [ServerJobID]); // #2
//Query.SQL.Text := Format('select JobID, StatusMessage, Options from ServerJob where JobID = %d', [ServerJobID]); // #3
Query.Open;
try
JobID := Query.FieldByName('JobID').AsInteger; // #1 raises exception
// #2 ok
// #3 ok
StatusMsg := Query.FieldByName('StatusMessage').AsString; // #1 never reaches this point
// #2 raises exception
// #3 ok
except
on Exp: Exception do
begin
ExpMsg := Exp.Message; // #1 Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte.
// #2 Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte.
// #3 never reaches this point
Query.Connection.Errors.Count; // #1 1
// #2 1
// #3 never reaches this point
Query.Connection.Errors[0].Description; // #1 Expression illegal in evaluator
// #2 Expression illegal in evaluator
// #3 never reaches this point
end;
end;
我使用的是Delphi 10 Seattle和SQL server 2014。