2012-03-16 10 views
0

のための間違った引数の型は、私はAXのビジネスコネクタを使用してC#でいくつかのコードを持っている、そしてその次のように:私は「取得を呼び出すしようとすると、エラー:機能

AxaptaRecord OrderRecord = (AxaptaRecord)ax.CallStaticClassMethod("BTNOnlineOrder", "getSalesOrder", salesRef); 

if (OrderRecord.Found) 
{ 
    AxaptaObject Lines = (AxaptaObject)OrderRecord.Call("querySalesLine"); 
    AxaptaObject qrLines = (AxaptaObject)ax.CreateAxaptaObject("QueryRun", Lines); 

    while ((bool)qrLines.Call("next")) 
    { 
      int tableid = (int)ax.CallStaticClassMethod("Global", "tableName2Id", "InventTable"); 
      AxaptaRecord r = (AxaptaRecord)qrLines.Call("get", tableid); 
    } 
} 

私は次のエラーを取得します"メソッド:

エラー実行コード:関数の引数の型が間違っています。

tableidは、tableidがnullなどのためではないため、int値175を返します。

使用するクエリは、あなたがこの(混乱)エラーが発生しますInventTableを指してデータソースを持っていない場合はすべてのヘルプは

+0

querySalesLineによって返されたクエリ - それはカスタムクエリや斧で提供されるデフォルトのSalesLineクエリですか?私はちょうど質問がInventTable – armasanea

答えて

0

これは、getNoメソッドを使用し、パラメータとして1を渡すことで動作するようになりました。私はそれが正しい方法かないのかはわからないが、それは私の仕事:

http://msdn.microsoft.com/en-us/library/aa612609(v=ax.50).aspx

+1

を指しているデータソースを持っていることを確認したかったので、SalesLineデータソースだけが必要と仮定します。 getNoを使用するとそれが実行されますが、他のAxソリューションではデータソースの順序が変更される可能性があり、間違ったデータソースを取得する可能性があります。元のコードで "InventTable"を "SalesLine"に置き換えると、同じ機能が得られます。もちろん、この方法はデータソース名に依存しますが、一般的には、データソースの順序よりも同じ名前をとることができます。 – armasanea

+0

そうです、それがうまくいきました。私の元のやり方をこれを実行する最良の方法で使用していますか? – CallumVass

+0

残念ながら答えは "それは依存している"です。どちらの方法も壊れる可能性がある。どちらのアプローチでも、中断の可能性が最も低いアプローチを見積もることができます。また、どちらか一方をサポートするハードデータがありません。ここにいくつかの意見を持った別のスレッドがあります:https://community.dynamics.com/product/ax/f/33/p/66715/121651.aspx – armasanea

2

をいただければ幸いです。私はこのコードがAxesのsysレイヤーのデフォルトのSalesLineクエリでこの例外をスローすることを確認しました。私は同意する、それは混乱するエラーです。

消費コードにInventTableが必要な場合は、カスタムクエリを定義してquerySalesLineメソッドから返す必要があります。