2010-12-02 69 views
1

我得到一个5400 AE_INTERNAL_ERROR当我尝试添加SQL后打开一个TadsQuery。当我直接在TadsQuery中放置相同的SQL时,没有错误。您的帮助文件指示我联系Advantage技术支持,以便R & D可以解决该问题。技术支持建议我在这里发帖。优势5400 AE_INTERNAL_ERROR

这里是(由Doug约翰逊建议)的代码snipit:

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 DUO CPU @ 2.00GHz 2.00千兆赫 安装内存:4.00 GB 系统类型:64bit。 操作系统:Windows 7 编程:德尔福2010年 优势版本:9.10 64位 服务器:本地。 桌:免费。 请指教。谢谢你,有一个美好的一天。

-Bob安卓

+0

技术支持工程师告诉客户去互联网上问问?! – 2010-12-02 22:19:18

+0

我的技术支持? stackoverflow技术支持?嗯......听起来你只是从其他地方复制/粘贴问题。 – jachguate 2010-12-02 22:24:32

+0

Advantage在Advantage上发布邮件之前,先卖给开发人员,后者再将其应用程序转售给客户。 Advantage提供他们的引擎免费开发。优势直接支持与公司有关系的开发人员,而不仅仅是任何接受调查的人。而且,他们确实希望我们这些以Advantage开发的人支持我们自己的客户。然而,他们会监督这个网站,支持它并为之作出贡献,所以这不是一个不合理的建议。在这里发送OP的优势表明,实际上,他不是Advantage的客户。 – 2010-12-03 00:05:41

回答

1

这里是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

或者获得一个开发者帐户并请求支持。

1

你的SQL没有意义。你的查询(我的价值= 1),从字面上

SELECT SBName, SBPath FROM poSBSorted 
WHERE [SBName LIKE 'A'] 
ORDER BY SBName 

这不是优势有效的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)的列来表示SBName和SBPath虚设poSBSorted分贝。

正如我在我的评论说以上,后期你正在尝试使用(或至少说明你的数据库架构,样本数据,和你想获得的结果)实际普通的SQL,也许有人能帮你。

1

我不能复制5400错误,你得到的,但也有在代码片段足够的问题,您提交的,我要给你一些一般原则。 没有更多的代码,我不能比你做得更好,但我会给你一些尝试。 我无法分辨您是否使用ADSConnection,但如果您不使用ADSConnection,则会遇到问题。 您的SQL语句需要根据Ken的建议进行修改。否则不起作用。 您需要确保您的ADSQuery与您正在使用的表类型相匹配。

,我看到DM1,可能表明你是在一个DLL这样的事实呢?

我想是个好消息,就是你得到了一个奇怪的错误,我们两个试图复制它的人可以通过做一些简单的改变来完成你想要完成的任务,没有错误。

作为补充说明,您不需要同时执行“活动”和“打开”。当您打开查询时,它会变为活动状态,或者如果将“活动”设置为“真”,则会打开查询。而且,纯粹的风格,除非有参数,否则在方法之后不需要parens。这两者都不会导致你的问题(我敢打赌,ADS连接问题),但只是一个笔记。

我对你的SQL语句所作的代码更改看起来就像肯的一样。

HText := 'SELECT SBName, SBPath FROM poSBSorted ' + 
     ' WHERE SBName LIKE ''' + CHR(i + 64) + '%'' ' + 
     ' ORDER BY SBName';