Akademi

Malzeme kartı oluşturmak istediğimde gelen hata...

  Tiger/Logo Object Designer (LOD)

Merhaba,

Malzeme kartını öncelikle elle oluşturup Logo'da dışarı Aktarı kullanıp xml çıktısını aldım,

Arkasından http://forum.logo.com.tr/index.php?page=xml-code-converter  'ü kullanıp Delphi Code'una çevirip aşağıdaki gibi düzenledim.

Fakat yine 20 nolu hata geliyor. Xml hatası dönmüyor.

  try
    MaterialCard := LogoUnity.NewDataObject(doMaterial);
    MaterialCard.New();

    YarnCode := AADOQuery.FieldByName('StockCode').AsString;
    //Zorunlu Alandir.Urun kodu
    MaterialCard.DataFields.FieldByName('CODE').Value := YarnCode;

    //Zorunlu Alandir. Urun adi
    MaterialCard.DataFields.FieldByName('NAME').Value := AADOQuery.FieldByName('StockName').AsString;

    // İplik daha sonradan satılabilir... 
    MaterialCard.DataFields.FieldByName('CARD_TYPE').Value := 10; // 1 Ticari, 10 Hammadde...

    // Zorunlu Alan Grup Kodu...
    MaterialCard.DataFields.FieldByName('GROUP_CODE').Value := 'İPLİK ALIM';
    MaterialCard.DataFields.FieldByName('AUTH_CODE').Value := 'İPLİK';
    MaterialCard.DataFields.FieldByName('MARKCODE').Value := '600.07.001';

    // Other Infos From Logo...
    MaterialCard.DataFields.FieldByName('USEF_PURCHASING').Value := 1;
    MaterialCard.DataFields.FieldByName('USEF_SALES').Value := 1;
    MaterialCard.DataFields.FieldByName('USEF_MM').Value := 1;
    MaterialCard.DataFields.FieldByName('TRACK_TYPE').Value := 1;

    MaterialCard.DataFields.FieldByName('LOTS_DIVISIBLE').Value := 1;
    MaterialCard.DataFields.FieldByName('DIST_LOT_UNITS').Value := 1;
    MaterialCard.DataFields.FieldByName('COMB_LOT_UNITS').Value := 1;

    //Zorunlu Alandir.Birim (adet,kg,gr...)
    MaterialCard.DataFields.FieldByName('UNITSET_CODE').Value := 'KG';

    MaterialCard.DataFields.FieldByName('AUTOINCSL').Value := 1;

    // Zorunlu Alandir => KDV...
    MaterialCard.DataFields.FieldByName('VAT').Value := 8;
    MaterialCard.DataFields.FieldByName('SELVAT').Value := 8;
    MaterialCard.DataFields.FieldByName('RETURNVAT').Value := 8;
    MaterialCard.DataFields.FieldByName('SELPRVAT').Value := 8;
    MaterialCard.DataFields.FieldByName('RETURNPRVAT').Value := 8;

    MaterialCard.DataFields.FieldByName('EXT_ACC_FLAGS').Value := 3;
    MaterialCard.DataFields.FieldByName('PACKET').Value :=0;

    //Malzeme kartinin birim bilgileri ekleniyor.
    Units := MaterialCard.DataFields.FieldByName('UNITS').Lines;
    Units.AppendLine();
    Units[Units.Count - 1].FieldByName('UNIT_CODE').Value := 'KG';
    Units[Units.Count - 1].FieldByName('USEF_MTRLCLASS').Value := 1;
    Units[Units.Count - 1].FieldByName('USEF_PURCHCLAS').Value := 1;
    Units[Units.Count - 1].FieldByName('USEF_SALESCLAS').Value := 1;
    Units[Units.Count - 1].FieldByName('CONV_FACT1').Value := 1;
    Units[Units.Count - 1].FieldByName('CONV_FACT2').Value := 1;

    Units.AppendLine();
    Units[Units.Count - 1].FieldByName('UNIT_CODE').Value := 'BOBİN';
    Units[Units.Count - 1].FieldByName('USEF_MTRLCLASS').Value := 1;
    Units[Units.Count - 1].FieldByName('USEF_PURCHCLAS').Value := 1;
    Units[Units.Count - 1].FieldByName('USEF_SALESCLAS').Value := 1;
    Units[Units.Count - 1].FieldByName('CONV_FACT1').Value := 1;
    Units[Units.Count - 1].FieldByName('CONV_FACT2').Value := 1;

    Units.AppendLine();
    Units[Units.Count - 1].FieldByName('UNIT_CODE').Value := 'TON';
    Units[Units.Count - 1].FieldByName('USEF_MTRLCLASS').Value := 1;
    Units[Units.Count - 1].FieldByName('USEF_PURCHCLAS').Value := 1;
    Units[Units.Count - 1].FieldByName('USEF_SALESCLAS').Value := 1;
    Units[Units.Count - 1].FieldByName('CONV_FACT1').Value := 1;
    Units[Units.Count - 1].FieldByName('CONV_FACT2').Value := 1;

    // Other Flags...
    MaterialCard.DataFields.FieldByName('EXTCRD_FLAGS').Value := 63;
    MaterialCard.DataFields.FieldByName('UPDATECHILDS').Value := 1;
    MaterialCard.DataFields.FieldByName('SALE_DEDUCTION_PART1').Value := 1;
    MaterialCard.DataFields.FieldByName('SALE_DEDUCTION_PART2').Value := 2;
    MaterialCard.DataFields.FieldByName('PURCH_DEDUCTION_PART1').Value := 1;
    MaterialCard.DataFields.FieldByName('PURCH_DEDUCTION_PART2').Value := 2;

    Result := (MaterialCard.Post());
    if not Result then
    begin
      AddTCPLog(YarnCode + ' nolu malzeme kartı eklenirken hata oluştu ! Hata Bilgisi : ' + GetErrors(MaterialCard));
    end;
  except
    on E: Exception do
    begin
      AddTCPLog(YarnCode + ' nolu malzeme kartı eklenirken hata oluştu ! Delphi Error: ' + E.Message + ', Logo Obj Hata Bilgisi : ' + GetErrors(MaterialCard));
    end;
  end;

GetErros metodunun içeriği ;

  Result := '';

  if (DataObj.ErrorCode <> 0) then
  begin
    Result := ('Hata Kodu : ' + IntToStr(DataObj.ErrorCode) + #13#10 +
               'Hata Açıklama: ' + DataObj.ErrorDesc + #13#10 +
                'Hata Db Açıklama : ' + DataObj.DBErrorDesc);
  end
  else
  begin
    Result := 'XML Errors ' + #13#10;
    for loop := 0 to DataObj.ValidateErrors.Count - 1 do
    begin
      Result := Result + IntToStr(DataObj.ValidateErrors[loop].ID) + ' : ' +
                                    DataObj.ValidateErrors[loop].Error + #13#10;
    end;
  end;

 


LObject Delphi Method


NaciO

Eğer XML hatası alınmıyorsa bu bir DB hatasıdır. DB hatası içerisinde ise ErrorCode, ErrorDesc ve DBErrorDesc bilgilerini kontrol etmişsiniz. ErrorDesc ve DBErrorDesc ile bir açıklama bilgisi gelmiyorsa malzeme veya bağlı bir tablosuna yazılmış standart olmayan bir trigger içerisinde işlem durduruluyor olabilir.

DB hatalarında SQL transaction açılmış ve sonrasında RollBack edilmiş olmalı. Profiler ile trace alıp RollBack hemn öncesindeki satırları kontrol edebilirsiniz. Bu satırları Management Studio içerisinden çalıştırmaya çalıştığınızda anlamlı hata mesajlarını yakalayabilirsiniz.


12/07/16 15:50

Cevap vermek için giriş yapmanız gerekmektedir.