2012-12-19 15 views
5

Kullanıcıların varsayılan sipariş ayarları kurulum formundaki "Durdurulan" durumuna bağlı olarak öğeleri filtreleyebilmesi için InventTable formunu değiştirdim . İki onay kutusunun değerlerine bağlı olarak "satın alınabilir" öğelerin, "satılabilir" öğelerin, tüm öğelerin veya engellenen öğelerin listesini veya satın alımını listeler.Dynamics AX: Gelişmiş filtre/sıralama seçeneği kullanabilmek için koddaki formdaki veri kaynağını devre dışı bırak

Kodda InventItemSalesSetup ve InventItemPurchSetup veri kaynaklarını ekledim ve kullanıcı bir onay kutusunu işaretlediğinde veya işaretini kaldırdığında bunları etkinleştirir veya devre dışı bırakır.

Veri kaynaklarından biri devre dışı bırakıldığında her şey yolunda çalışır. Sonra "Gelişmiş filtre/sıralama" seçeneği çalışmayı durdurur. Hatayı alıyorum: "Veri kaynağı etkin değil".

Hata, SysQueryForm formunun "saveCueEnabled" yönteminden geliyor. o aradığında:

o sorguda datasources sayısını alır
static boolean canSaveQueryAsCue(QueryRun qr) 
{ 
    int numOfDataSources, i; 
    QueryBuildDataSource ds; 
    Query q; 
    Common cursor; 
    ; 

    if (!qr) 
    return false; 

    q = qr.query(); 
    if (!q) 
     return false; 

    numOfDataSources = q.dataSourceCount(); 
    for(i = 1; i <= numOfDataSources; i++) 
    { 
     ds = q.dataSourceNo(i); 
     if(ds.dynalinkCount() > 0) 
      return false; 

     // Check if it is temp 
     cursor = qr.getNo(i); 
     if (cursor.dataSource() && cursor.isTmp()) 
      return false; 
    } 

    return true; 
} 

, "dataSourceCount" yöntem ayrıca engelli veri kaynaklarıyla sayısını döndürür ve ne zaman:

if (!CueRun::canSaveQueryAsCue(this.args().caller())) 
    return false; 

çağırır Hangi Devre dışı bırakılmış veri kaynaklarının QueryBuildDataSource'sini boş bir DS alırsınız ve geçici bir tablo olup olmadığını kontrol ettiğinde çöker.

"saveCueEnabled" kodunda fazladan ekleme sorunu çözdüm ama bu hatayı almadan veri kaynaklarını etkinleştirmek/devre dışı bırakmak için bir yol olup olmadığını merak ediyorum.

Umarım kendimi iyi anladım, teşekkürler!

cevap

4

Buraya kadar gelebilecek tek çözüm, canSaveQueryAsQue() yöntemini değiştirmenizi gerektirir.

Formun bu güncelleştirmesi basittir ve sorununuzu çözmelidir.

Bu kodu test etmedim, ancak başka durumlarda benzer kod kullandım. Umarım yardımcı olur!

+0

Çalışması gerektiğini düşünüyorum. Teşekkürler, bu problem ile tekrar gelirsem deneyeceğim. –

0

Önerilen düzenleme aslında işe yaramıyor çünkü test edildiğinde 'ds' değişkeni hala 'doğru'.

şu iş gibi görünüyor: testine '.enabled()' özelliği ekleme

for(i = 1; i <= numOfDataSources; i++) 
{ 
    ds = q.dataSourceNo(i); 
    if(ds.enabled() && ds.dynalinkCount() > 0) 
     return false; 

    // Check if it is temp 
    if(ds.enabled()) 
    { 
     cursor = qr.getNo(i); 
     if (cursor.dataSource() && cursor.isTmp()) 
      return false; 
    } 
} 

istendiği gibi kod özürlü veri kaynaklarına üzerinde atlamak için izin verir.

İlgili konular