2010-12-02 53 views
1

Je reçois un 5400 AE_INTERNAL_ERROR lorsque j'essaie d'OUVRIR un TadsQuery après avoir ajouté le SQL. Lorsque je place le même SQL directement dans TadsQuery, il n'y a pas d'erreur. Votre fichier d'aide me demande de contacter le support technique Advantage afin que R & D puisse résoudre le problème. Le support technique a suggéré que je poste ici.Avantage 5400 AE_INTERNAL_ERROR

Voici un snipit de code (suggéré par 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; 

Voici les statistiques du système:

Processeur: Processeur Intel® Core ™ 2 Duo CPU @ 2.00GHz 2.00 Ghz installés Mémoire: 4,00 Go Type de système: 64bit. OS: Windows 7. Programmation: Delphi 2010. Version Avantage: 9.10 64bit Serveur: local. Tableaux: gratuits. S'il vous plaît aviser. Merci et bonne journée.

-Bob Andrews

+0

L'ingénieur de support technique a dit au client d'aller demander dans les internets ?! –

+0

Mon support technique ?? support technique stackoverflow? mmm ... il semble que vous copiez/collez la question d'un autre endroit. – jachguate

+0

Avant d'aller tous les postes sur Advantage, Advantage vend aux développeurs qui revendent ensuite avec leurs applications aux clients. L'avantage fournit leur moteur libre pour le développement. Advantage soutient directement les développeurs qui ont une relation avec l'entreprise, et pas seulement ceux qui appellent. Et, en effet, ils s'attendent à ce que ceux d'entre nous qui développent avec Advantage soutiennent nos propres clients. Ils surveillent cependant ce site, le soutiennent et y contribuent, ce n'est donc pas une chose déraisonnable à suggérer. Cet avantage envoyé OP ici indiquerait, en fait, qu'il n'est pas un client d'Advantage. –

Répondre

1

Voici une liste des codes d'erreur ADS: http://devzone.advantagedatabase.com/dz/webhelp/advantage9.1/mergedprojects/adserror/err5xxx/advantage_5xxx_error_codes.htm

Erreur # 5400 Etats

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. 

Je posterais un code sur leurs forums: http://devzone.advantagedatabase.com/dz/content.aspx?key=7

Ou obtenir un compte développeur et demander de l'aide.

1

Votre SQL n'a aucun sens. Votre requête (pour une valeur de i = 1) est littéralement

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

Ce n'est pas SQL valide pour Advantage, et génère

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 

Si je change pour être bon ADS SQL:

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

Cela fonctionne bien avec un db poSBSorted factice contenant deux colonnes Char (10) pour représenter SBName et SBPath. Comme je l'ai dit dans mon commentaire ci-dessus, postez le SQL réel que vous essayez d'utiliser (ou au moins expliquer votre schéma de base de données, des exemples de données, et les résultats que vous essayez d'obtenir), et peut-être quelqu'un peut T'aider.

+0

Ce que j'essaie de faire est de trier ma base de données en groupes alphabétiques. Remarquez CHR (i + 64). Ce n'est pas le problème pour lequel j'ai besoin d'aide. S'il vous plaît expliquez-moi pourquoi ERROR 5400 se produit lorsque j'essaie d'ouvrir le TadsQuery qui ne se produit pas lorsque j'active le même TadsQuery dans le module de données. – bandrews6264

1

Je ne peux pas dupliquer l'erreur 5400 que vous obtenez, mais il y a suffisamment de questions dans l'extrait de code que vous soumettez que je vais vous donner quelques directives générales. Sans plus de code, je ne peux pas faire mieux que Ken, mais je vais vous donner quelques trucs à essayer. Je ne sais pas si vous utilisez un ADSConnection ou non, mais vous aurez des problèmes si vous n'utilisez pas ADSConnection. Votre instruction SQL doit être modifiée comme le suggère Ken. Cela ne marche pas autrement. Vous devez vous assurer que votre requête ADSQuery correspond au type de table que vous utilisez.

Le fait que je vois DM1, pourrait indiquer que vous faites cela dans une DLL?Je suppose que les bonnes nouvelles sont que vous obtenez une erreur étrange et nous deux qui avons essayé de le reproduire peut accomplir ce que vous essayez d'accomplir, sans l'erreur, en faisant quelques changements simples.

En note supplémentaire, vous n'avez pas besoin de faire Active et Open. Lorsque vous ouvrez votre requête, elle devient active ou si vous activez Active, elle ouvre la requête. Et, purement stylistique, vous n'avez pas besoin des parens après les méthodes à moins qu'il n'y ait des paramètres. Ni l'un ni l'autre n'est à l'origine de votre problème (je parierais sur un problème ADSconnection) mais seulement une note.

La modification de code que j'ai apportée à votre instruction SQL ressemble à celle de Ken.

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

Les gars d'Advantage ne veulent pas être envolved. – bandrews6264