当我在添加SQL之后尝试打开TadsQuery时,我得到了一个5400 AE_INTERNAL_ERROR。当我将相同的SQL直接放入TadsQuery中时,没有出现错误。您的帮助文件指示我联系Advantage技术支持,以便研发部门可以解决此问题。技术支持建议我在这里发帖。
以下是代码片段(由Doug Johnson建议):
if (Value = '**') or (StartUp) then
with DM1.qadSBSort do
begin
DisableControls;
for i := 1 to 26 do
begin
if Active then Close;
Active := False;
HText := 'SELECT SBName, SBPath FROM poSBSorted ' +
' WHERE [SBName LIKE ''' + CHR(i + 64) + '''] ' +
' ORDER BY SBName';
SQL.Clear();
SQL.Text := HText;
try
try
Screen.Cursor := crHourGlass;
Open();
finally
Screen.Cursor := crDefault;
end;
except
On E: Exception do
begin
if( E.Message <> 'The SQL statement did not '+
'generate a cursor handle. Use ' +
'TAdsQuery.ExecSQL to execute SQL ' +
'statements that are not SELECT statements' )then
MessageDlg( E.Message, mtWarning, [ mbOK ], 0 );
end;
end;
Active := True;以下是系统统计数据:
处理器:英特尔®酷睿™2双核CPU @ 2.00 Ghz已安装内存: 4.00 GB系统类型:64位。操作系统: Windows 7。编程: Delphi 2010。Advantage版本: 9.10 64位服务器:本地。表:免费。请给我建议。谢谢你,祝你一天愉快。
-Bob安德鲁斯
发布于 2010-12-03 11:37:35
以下是ADS错误代码列表:http://devzone.advantagedatabase.com/dz/webhelp/advantage9.1/mergedprojects/adserror/err5xxx/advantage_5xxx_error_codes.htm
错误# 5400状态
This error is an Advantage JDBC Driver internal error. Please send a small re-creation to Advantage Technical Support demonstrating the problem so that Advantage R&D can fix the issue.我会在他们的新闻组上发布一些代码:http://devzone.advantagedatabase.com/dz/content.aspx?key=7
或者获取开发人员帐户并请求支持。
发布于 2010-12-04 03:31:18
您的SQL没有任何意义。您的查询(对于i=1的值)是字面上的
SELECT SBName, SBPath FROM poSBSorted
WHERE [SBName LIKE 'A']
ORDER BY SBName这不是Advantage的有效SQL,并生成
poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2115; [iAnywhere Solutions][Advantage SQL Engine]Expected lexical
element not found: IN, NOT IN, LIKE, NOT LIKE, BETWEEN, NOT BETWEEN There was a problem parsing the WHERE clause in your
SELECT statement如果我将其更改为正确的ADS SQL:
SELECT SBName, SBPath FROM poSBSorted
WHERE SBName LIKE 'A%'
ORDER BY SBName它可以很好地使用包含两个Char(10)列的虚拟poSBSorted db来表示SBName和SBPath。
正如我在上面的评论中所说的,发布您正在尝试使用的实际普通SQL (或者至少解释您的数据库模式、示例数据和您试图获得的结果),也许有人可以帮助您。
发布于 2010-12-10 10:52:59
我不能重复你得到的5400错误,但是在你提交的代码片段中有足够的问题,我将给你一些一般的指导。如果没有更多的代码,我不能比Ken做得更好,但我会给你一些东西来尝试。我不知道你是否在使用ADSConnection,但如果你不使用,你就会有问题。您的SQL语句需要按照Ken的建议进行修改。否则它就不能工作。您需要确保您的ADSQuery与您正在使用的表类型匹配。
我看到DM1的事实可能表明你是在DLL中做这件事的?
我猜好消息是你得到了一个奇怪的错误,我们两个试图复制它的人可以通过一些简单的改变来完成你试图完成的事情,而不是错误。
作为补充,您不需要同时执行Active和Open。当您打开查询时,它将变为活动状态,或者如果您将active设置为true,它将打开该查询。而且,纯粹从风格上讲,除非有参数,否则不需要方法后面的括号。这些都不会引起你的问题(我敢打赌肯定是ADSconnection的问题),但这只是一个注释。
我对您的SQL语句所做的代码更改看起来与Ken的一样。
HText := 'SELECT SBName, SBPath FROM poSBSorted ' +
' WHERE SBName LIKE ''' + CHR(i + 64) + '%'' ' +
' ORDER BY SBName';https://stackoverflow.com/questions/4339153
复制相似问题