.::Eralp Erat's Solutions Diary::..

{#Every way that I Can share!}-MS Dynamics CRM

MS Dynamics Crm Tips And Tricks - 34 (Microsoft CRM 4 , "This form has been changed and must be saved before printing" probleminin aşılması. )

clock Temmuz 19, 2010 12:19 by author NetZero2

Selamlar ;

Belli bir süredir yoğunluk hat safhadaydı.Aslında birşey değişmiş değil.Bugün çözümünü bulduğumuz bu problem için neler yapmanız gerektiğini anlatacağım.

Bildiğiniz gibi CRM formlarında editlenen herhangi controlün değişime uğradığı forma ait IsDirty property'sinde sakli tutuluyor.onchange'in tetiklenmesi bu property'inin true olması için yeterli.Bizim senaryomuzda formun onload'inda doldurulan bazı

kontroller söz konusuydu..Dinamik olarak gerçekleşen client side Fetch sorguları ekranda yer alan temp alanların içini dolduruyordu.Form açılısında herşey sorunsuz.Lakin form yüklendikten sonra print butonuna basmanız yukarıda adı geçen uyarının

(aslında hata değil..) ortaya çıkmasına neden oluyor.. Çözüm içn yapmamız gereken illegal bir yöntem de olsa sunucuda ki ":\inetpub\wwwroot\_static\_forms\controls" dizinine gidip ordaki "form.crm.htc" dosyasını açıp editlemek.Formun saltokunur olan

IsDiry property'sinin kontrol edildiği if blogu comment altına alınırsa problem giderilecektir.

Kod bloğu aşağıdaki gibidir.

 

   34         function Print() {

   35             if (isDirty()) { /*bu blok kapatılmalı..*/

   36                 alert(LOCID_FORM_PRINT_DIRTY_MESSAGE);

   37             }

   38             else {

   39                 var sId = _oSubmitForm.crmFormSubmitId.value;

   40                 openStdWin(prependOrgName("/_forms/print/print.aspx?objectType=" + _oSubmitForm.crmFormSubmitObjectType.value + "&id=" + sId + "&title=" + CrmEncodeDecode.CrmUrlEncode(parent.document.title)), "print" + buildWinName(sId));

   41             }

   42         }

 

Sevgiler.

E2

  

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Sql Server Dynamic Parsing ,dynamic "like or" method.

clock Haziran 25, 2010 05:54 by author NetZero2

Selamlar ;

Bir önceki post'umda sizlere dynamic parsingi kullanarak bir string dizisinin split edilip table olarak select sorgu işlemlerinde nasıl kullanılabileceğini göstermiştim.şimdi ise (en azından T-SQL de.) app layer'a bulaşmadan sql tarafında gönderilen sp parameter değerini aynı şekilde split edip ilgili like adedini dinamik olarak kullanmak durumunda kaldım.Yani "222,333,444,555" gibi bir değer için 4 like statement'inin ( field like '%222%' or  field like '%333%'  or field like '%444%'  or field like '%555%'  ...) sql'e eklenmesi gerekiyordu.. (http://msdn.microsoft.com/en-us/library/ms179859.aspx linkinde daha detaylı bilgi bulunabilir ama like'in bilinen tüm kullanım şekilleri benim işime cevap olmadığı için bu function'ı yazmak durumunda kaldım.)

USE [EK_12]
GO
/****** Object:  UserDefinedFunction [dbo].[fnCommaParserForLike]    Script Date: 06/25/2010 11:59:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fnCommaParserForLike] (@search NVARCHAR(2000),@fieldName NVARCHAR(40))
  RETURNS NVARCHAR(2000)
BEGIN
    declare @retisoc_Desc nvarchar(2000);
    set @retisoc_Desc=N'';
    declare @breakInt as int;
    set @breakInt = 0 ;
    declare @isocsX as nvarchar(50);
    declare Result CURSOR FOR SELECT * from fnCommaParser(@search)
    open Result
    FETCH NEXT FROM Result INTO @isocsX
    WHILE @@Fetch_Status = 0
    BEGIN
        if (@breakInt=0)
        begin
             set @retisoc_Desc = @retisoc_Desc +' '+ @fieldName + ' like ''%'+@isocsX+'%'' ';
        end else begin
             set @retisoc_Desc = @retisoc_Desc +' or '+ @fieldName + ' like ''%'+@isocsX+'%'' ';
        end
        set @breakInt = @breakInt + 1;
        FETCH NEXT FROM Result INTO @isocsX
    END
    CLOSE Result
    DEALLOCATE Result
    return @retisoc_Desc;
END

 

kullanımı içinde..

declare @locKaynakWeightTotalHammadde as decimal(18,2);
declare @SQLQuery as nvarchar(4000);
declare @likeStatement as nvarchar(2000);
declare @params as nvarchar(2000);
select  @likeStatement=N'';
set @likeStatement = (select dbo.fnCommaParserForLike(@glbMotherPo,'FCS_PO'));
 
set @SQLQuery = N'select @locKaynakWeightTotalHammaddeOUT=(select isnull(sum(FCS_CONSUMED_QTY),0) from dbo.MES_TB_FLD_CONSUMED
inner join MES_TB_FLD_BATCHES on (MES_TB_FLD_BATCHES.FBC_BATCH = MES_TB_FLD_CONSUMED.FCS_BATCH)
where '+@likeStatement+'and FCS_STATUS=N''CNSD'''+
'and FCS_WORKCENTER in (
select WRO_EX_WORKCENTER from dbo.GEN_TB_WRC_OPERATION
where WRO_EX_OPR_TYPE=''SPKAYNAK''))';

set @params = N'@locKaynakWeightTotalHammaddeOUT as decimal(18,2) OUTPUT' ;

EXECUTE sp_executesql @SQLQuery,@params,@locKaynakWeightTotalHammaddeOUT=@locKaynakWeightTotalHammadde OUTPUT
  

Sevgiler. 

E2

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Sql Server Dynamic Parsing ,table valued function

clock Haziran 25, 2010 05:38 by author NetZero2

Selamlar ;

Bazı zamanlar belli bir string'i belli bir pattern ile parse ederek daha sonrada parse edilen veriyi bir table olarak daha dış katmanda yer alan where clause içerisinde "in" ile işlemlere dahil etmek isteriz.Bunu yapmak özellikle publish gerektiren desktop projelerinde clientlar ile uğraşmadan hızlıca çözüm geliştirmemizi sağlamamızı sağlar.(temp ya da önceden belirlenmiş böyle bir alan..)Aşağıda bu işi yaparken kullandığım function'ı ve kullanımını paylaşıyorum.İşinize yarayacaktır.

USE [LE_12]
GO
/****** Object:  UserDefinedFunction [dbo].[fnCommaParser]    Script Date: 06/25/2010 11:43:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fnCommaParser] (@search VARCHAR(8000))
  RETURNS @retisoc_tab table (isocs varchar(8000)) AS
BEGIN
    declare @pos int,@isoc varchar(8000),@strlen int
    declare @isoc_tab table (isocs varchar(8000))
    set @search = ltrim(rtrim(@search))
    while len(@search) >=0
    begin
        set @strlen = len(ltrim(@search))
        set @pos = charindex(',',@search,1)
        if @pos=0 and @search is not null
        begin
            set @search = ltrim(rtrim(@search))
            insert into @isoc_tab values(@search)
            insert into @retisoc_tab select * from @isoc_tab
            return
        end
        set @isoc = substring(rtrim(ltrim(@search)),1,@pos-1)
        insert into @isoc_tab values(@isoc)
        set @search = ltrim(right(@search,@strlen-@pos))
    end
    return
END

kullanımı içinde..

declare @glbMotherPo=N'43333,432222,435rrr,432555,2222';

select count(*) as adet from bes_tb
inner join bes_tb_detail on (bes.fbc_batch=bes_tb_detail.BST_BATCH)
where fbc_batch in (
 SELECT FBF_BATCH
 FROM (SELECT FBF_VALUE, FBF_FEATURE, FBF_BATCH FROM bes_feature) up
   PIVOT (max(FBF_VALUE) FOR FBF_FEATURE IN (MotherPO, NextOperation)) AS pvt
          where
   MotherPO in (SELECT * FROM fnCommaParser(@glbMotherPo)) and
   NextOperation='BOSC'))

Sevgiler.

E2

 

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Yazar Hakkında

Eralp

Uludağ Üniversitesi bilgisayar programcılığı sonrasında işletme fakültesini bitiren Erat ; 1999 yılından bu yana yazılım sektörünün içerisinde yer almış ve ilgili olduğu projelerin çözüm üretilmesin de aktif olarak rol oynamıştır.Yaklaşık 6 yılını Türkiye’nin dört bir tarafında yer alan devlet hastanelerin bilgi yönetim sistemlerini tasarlamak ve geliştirmekle geçirmiş ; LIS , IVR ve Linux sistemlerinin entegrasyonu konusunda uzmanlaşmıştır.Bu konuda halen danışmanlık hizmeti vermektedir..Uzun yıllar “Object Pascal” ile uygulama geliştirmiştir.MCP , MCAD.NET ve MCSD.NET,MCTS (MS CRM 4 Customization) unvanlarına sahiptir..Aynı zamanda Mobile Cihazlar konusunda 2007 yılında Microsoft tarafından MVP unvanına layık görülmüştür.
Çeşitli kurumsal projelerin mimari tasarım ve yazılımlarını gerçekleştirmiştir.Son zamanlarda ağırlıklı olarak Microsoft Dynamics CRM ,Sharepoint ve entegrasyon bazlı olarak Axapta(Microsoft ERP) & Project Server projelerinde yer almaktadır.CRM ve Sharepoint konusunda başta finans sektörü olmak üzere Türkiye'nin alanında en büyük firmalarına kurumsal eğitimler vermektedir.Yazılım konusunda en büyük hayali, Türkiye’mizin bir yazılım üssü haline gelebilmesinde ön ayak olmaktır. Yazılımın belli bir forma sıkıştırılmasından hiç haz etmeyen ve fanatikliği değil sadece kaliteyi ön plana çıkarabilmek adına deneyimlerini ve yeni teknolojiler hakkında oluşan bilgi ve birikimlerini üniversitelerde genç dimağlarla paylaşmaktan büyük mutluluk duymaktadır. Halen orta ve büyük ölçekli kurumsal çözümler üreten bir yazılım evinde geliştirici takım lideri olarak çalışmalarını sürdürmekte ve aynı zamanda Macintosh/Objective C programlama konusunda kendini geliştirmektedir:).2007 yılında Boğaziçi Üniversitesi Makine Mühendisliği bölümünde C# eğitimleri vermiştir.Sakarya Üniversitesi e-Bilişim dalında MBA yapmaktadır.

Yazılım geliştirme konusunda birebir özel ders verilmektedir.Konuyla ilgili lütfen eralp.erat@gmail.com adresine iletişim bilgilerini mail atınız.

 

Calendar

<<  Ağustos 2010  >>
PaSaÇaPeCuCuPa
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

View posts in large calendar

Sign in