2010-12-02 70 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';