<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for RE-Decoded</title>
	<atom:link href="http://www.re-decoded.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.re-decoded.com</link>
	<description>A technical look at the Raiser&#039;s Edge API from Blackbaud</description>
	<lastBuildDate>Fri, 26 Feb 2010 22:16:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Opening a custom Crystal Report from code by RE-Decoded &#187; Blog Archive &#187; Opening a Crystal Report from code (revisited)</title>
		<link>http://www.re-decoded.com/2007/10/opening-a-custom-crystal-report-from-code/comment-page-1/#comment-5004</link>
		<dc:creator>RE-Decoded &#187; Blog Archive &#187; Opening a Crystal Report from code (revisited)</dc:creator>
		<pubDate>Fri, 26 Feb 2010 22:16:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/2007/10/opening-a-custom-crystal-report-from-code/#comment-5004</guid>
		<description>[...] an earlier post I looked at the way in which it is possible to open up a Crystal Report from VB or VBA code in The [...]</description>
		<content:encoded><![CDATA[<p>[...] an earlier post I looked at the way in which it is possible to open up a Crystal Report from VB or VBA code in The [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How many unique IDs should a Raiser&#8217;s Edge Consituent have? by Jeffrey Montgomery</title>
		<link>http://www.re-decoded.com/2010/02/how-many-unique-ids-should-a-raisers-edge-consituent-have/comment-page-1/#comment-5003</link>
		<dc:creator>Jeffrey Montgomery</dc:creator>
		<pubDate>Mon, 22 Feb 2010 15:29:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=311#comment-5003</guid>
		<description>Hi David,

One thing that&#039;s been a bit exciting as we work with clients implementing our Raiser&#039;s Edge importing tool is seeing email addresses becoming an almost-defacto ID. Yes it&#039;s possible (even likely) for a constituent to have multiple email addresses or to change addresses, but at least 1) they are globally unique and 2) the constituent is likely to remember at least one of them. As online giving continues to grow, the fact that Import-O-Matic can use email addresses for matching constituents has been huge in helping organizations reduce duplicate constituent records. I am surprised that they have not updated RE7 to offer &quot;email address&quot; as a duplicate criteria.

I wonder if RE8 will include a tie-in for OpenID?

Jeff</description>
		<content:encoded><![CDATA[<p>Hi David,</p>
<p>One thing that&#8217;s been a bit exciting as we work with clients implementing our Raiser&#8217;s Edge importing tool is seeing email addresses becoming an almost-defacto ID. Yes it&#8217;s possible (even likely) for a constituent to have multiple email addresses or to change addresses, but at least 1) they are globally unique and 2) the constituent is likely to remember at least one of them. As online giving continues to grow, the fact that Import-O-Matic can use email addresses for matching constituents has been huge in helping organizations reduce duplicate constituent records. I am surprised that they have not updated RE7 to offer &#8220;email address&#8221; as a duplicate criteria.</p>
<p>I wonder if RE8 will include a tie-in for OpenID?</p>
<p>Jeff</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How many unique IDs should a Raiser&#8217;s Edge Consituent have? by Garrett</title>
		<link>http://www.re-decoded.com/2010/02/how-many-unique-ids-should-a-raisers-edge-consituent-have/comment-page-1/#comment-5002</link>
		<dc:creator>Garrett</dc:creator>
		<pubDate>Wed, 10 Feb 2010 02:33:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=311#comment-5002</guid>
		<description>add in BBNC w/ User Networking Manager and there are 3 more IDs that get used. 
We actually created a web method to convert them. Pass in an ID, it&#039;s type and the ID that you need to convert it to and it spits back that ID.</description>
		<content:encoded><![CDATA[<p>add in BBNC w/ User Networking Manager and there are 3 more IDs that get used.<br />
We actually created a web method to convert them. Pass in an ID, it&#8217;s type and the ID that you need to convert it to and it spits back that ID.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Writing Code to populate the rejection code field in batch by David Zeidman</title>
		<link>http://www.re-decoded.com/2009/11/writing-code-to-populate-the-rejection-code-field-in-batch/comment-page-1/#comment-5001</link>
		<dc:creator>David Zeidman</dc:creator>
		<pubDate>Fri, 22 Jan 2010 21:21:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=286#comment-5001</guid>
		<description>Cate,

Thanks for your suggestions. I will definitely give it a go. One workaround would be to copy an existing batch and change the values. The problem is that no two batches are alike. The number of gifts in a batch vary so while I could copy a previous batch, or even set up a batch template in the GUI in order to copy that batch over, I would have to ensure that there were a large number of gifts present to cover the number that I may require in a later batch. I would have to loop through it and then change the values from the template batch to the new batch. Of course this could work but it is really long winded workaround which really should not be necessary.

Heather, I have, unfortunately, not tried to write the check number to a batch. It does sound like a similar case. Are you able to populate it through the GUI?

David</description>
		<content:encoded><![CDATA[<p>Cate,</p>
<p>Thanks for your suggestions. I will definitely give it a go. One workaround would be to copy an existing batch and change the values. The problem is that no two batches are alike. The number of gifts in a batch vary so while I could copy a previous batch, or even set up a batch template in the GUI in order to copy that batch over, I would have to ensure that there were a large number of gifts present to cover the number that I may require in a later batch. I would have to loop through it and then change the values from the template batch to the new batch. Of course this could work but it is really long winded workaround which really should not be necessary.</p>
<p>Heather, I have, unfortunately, not tried to write the check number to a batch. It does sound like a similar case. Are you able to populate it through the GUI?</p>
<p>David</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Writing Code to populate the rejection code field in batch by Heather</title>
		<link>http://www.re-decoded.com/2009/11/writing-code-to-populate-the-rejection-code-field-in-batch/comment-page-1/#comment-5000</link>
		<dc:creator>Heather</dc:creator>
		<pubDate>Fri, 22 Jan 2010 07:34:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=286#comment-5000</guid>
		<description>I&#039;ve had similar weird problems, maybe you have a suggestion...

When I try to populate GIFT_fld_Check_Number it doesn&#039;t seem to actually populate (no errors, it just never shows up in RE despite definitely being populated in my debug checks).  When I try to populate GIFT_fld_Description, it throws what to me appears to be an entirely unrelated error about a column that I&#039;m not attempting to access.  BATCHAPI_fld_DESCRIPTION, on the other hand, works beautifully.

Have you tried using these fields at all?  Any thoughts?  I wish there were more documentation on this stuff.

Thanks much

-Heather</description>
		<content:encoded><![CDATA[<p>I&#8217;ve had similar weird problems, maybe you have a suggestion&#8230;</p>
<p>When I try to populate GIFT_fld_Check_Number it doesn&#8217;t seem to actually populate (no errors, it just never shows up in RE despite definitely being populated in my debug checks).  When I try to populate GIFT_fld_Description, it throws what to me appears to be an entirely unrelated error about a column that I&#8217;m not attempting to access.  BATCHAPI_fld_DESCRIPTION, on the other hand, works beautifully.</p>
<p>Have you tried using these fields at all?  Any thoughts?  I wish there were more documentation on this stuff.</p>
<p>Thanks much</p>
<p>-Heather</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on VBA: Inside or Out? by RE-Decoded &#187; Blog Archive &#187; Accessing other parallel VBA DLLs in The Raiser&#8217;s Edge</title>
		<link>http://www.re-decoded.com/2007/01/vba-inside-or-out/comment-page-1/#comment-4998</link>
		<dc:creator>RE-Decoded &#187; Blog Archive &#187; Accessing other parallel VBA DLLs in The Raiser&#8217;s Edge</dc:creator>
		<pubDate>Wed, 20 Jan 2010 14:44:47 +0000</pubDate>
		<guid isPermaLink="false">http://zeidmandevelopment.co.uk/redecoded/?p=4#comment-4998</guid>
		<description>[...] VBA code that fires when, say a constituent is saved, is to write a VBA DLL. I have covered this previously so I won&#8217;t go into details in this post. However what do you do if you need one VBA DLL to [...]</description>
		<content:encoded><![CDATA[<p>[...] VBA code that fires when, say a constituent is saved, is to write a VBA DLL. I have covered this previously so I won&#8217;t go into details in this post. However what do you do if you need one VBA DLL to [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Raiser&#8217;s Edge API: VB.NET versus C# by David Zeidman</title>
		<link>http://www.re-decoded.com/2009/07/the-raisers-edge-api-vb-net-versus-c/comment-page-1/#comment-4988</link>
		<dc:creator>David Zeidman</dc:creator>
		<pubDate>Mon, 11 Jan 2010 17:38:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=253#comment-4988</guid>
		<description>I am not sure I agree. Blackbaud know very well the benefit of .NET. That is why their latest platform is built on it. The Raiser&#039;s Edge was built using COM so that it is not the case that they are trying to force us into use an old language. It is just that it would be prohibitively expensive to port RE to .NET. It would also be foolish. RE&#039;s architecture is dated and Blackbaud are well aware of that fact. That is by Blackbaud Enterprise CRM and indeed all of the Infinity platform applications are built using and ready to use .NET.</description>
		<content:encoded><![CDATA[<p>I am not sure I agree. Blackbaud know very well the benefit of .NET. That is why their latest platform is built on it. The Raiser&#8217;s Edge was built using COM so that it is not the case that they are trying to force us into use an old language. It is just that it would be prohibitively expensive to port RE to .NET. It would also be foolish. RE&#8217;s architecture is dated and Blackbaud are well aware of that fact. That is by Blackbaud Enterprise CRM and indeed all of the Infinity platform applications are built using and ready to use .NET.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Raiser&#8217;s Edge API: VB.NET versus C# by Paul</title>
		<link>http://www.re-decoded.com/2009/07/the-raisers-edge-api-vb-net-versus-c/comment-page-1/#comment-4987</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Mon, 11 Jan 2010 16:42:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=253#comment-4987</guid>
		<description>David :
I completely agree, VB does show it&#039;s roots a little still ... microsoft have made the effort to keep it VB like whilst bringing the language in to compliance with their CLR.

It seems to me that the biggest issue with the RE API is that it is not really ready for the .NET framework as a whole whatever language you use, you have to jump through hoops to make it work the way you expect and even then it chews you up and spits you out for being a nice .NET developer simply because you talk C or some other .NET pre dated technology.

Between you and me, the problem is that updating the API doesn&#039;t make money, and that&#039;s all that Blackbaud are interested in, if someone could &quot;sell the monetary advantages of .NET&quot; to Blackbaud they would likely jump on it in an instant !!!

I guess the other way to look at it is that the sort of customer base they have know of no other strong competitor at the moment that can deliver this type of thing effectively for a reasonable price so they have their little market cornered so to speak, introduce some competition and this whole issue could simply go away as a gimmick sold to developers in order to keep the administration and maintenance teams on side.

It&#039;s likely just a matter of time as I see it, these things ultimately always are ;)</description>
		<content:encoded><![CDATA[<p>David :<br />
I completely agree, VB does show it&#8217;s roots a little still &#8230; microsoft have made the effort to keep it VB like whilst bringing the language in to compliance with their CLR.</p>
<p>It seems to me that the biggest issue with the RE API is that it is not really ready for the .NET framework as a whole whatever language you use, you have to jump through hoops to make it work the way you expect and even then it chews you up and spits you out for being a nice .NET developer simply because you talk C or some other .NET pre dated technology.</p>
<p>Between you and me, the problem is that updating the API doesn&#8217;t make money, and that&#8217;s all that Blackbaud are interested in, if someone could &#8220;sell the monetary advantages of .NET&#8221; to Blackbaud they would likely jump on it in an instant !!!</p>
<p>I guess the other way to look at it is that the sort of customer base they have know of no other strong competitor at the moment that can deliver this type of thing effectively for a reasonable price so they have their little market cornered so to speak, introduce some competition and this whole issue could simply go away as a gimmick sold to developers in order to keep the administration and maintenance teams on side.</p>
<p>It&#8217;s likely just a matter of time as I see it, these things ultimately always are <img src='http://www.re-decoded.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Writing Code to populate the rejection code field in batch by Cate Born</title>
		<link>http://www.re-decoded.com/2009/11/writing-code-to-populate-the-rejection-code-field-in-batch/comment-page-1/#comment-4779</link>
		<dc:creator>Cate Born</dc:creator>
		<pubDate>Tue, 29 Dec 2009 22:59:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=286#comment-4779</guid>
		<description>I was able to populate the Rejection code field in a batch using this code (creates a copy of an existing batch).

    Private Sub CreateBackupBatch(ByVal sSrcBatchNbr As String)
        Dim oSrcBatch As CBatchAPI = New CBatchAPI
        Dim oBkpBatch As CBatchAPI = New CBatchAPI
        Dim oBkpTempRecords As CTempRecords

        &#039; Create a new, empty batch based on the design of an existing batch
        CreateBatchFromTemplate(sSrcBatchNbr, sSrcBatchNbr &amp; &quot; BKP&quot;)

        oSrcBatch.Init(coSC)
        Try
            oSrcBatch.LoadByNumber(sSrcBatchNbr)
        Catch ex As Exception
            Throw ex
        End Try

        oBkpBatch.Init(coSC)
        Try
            oBkpBatch.LoadByNumber(sSrcBatchNbr &amp; &quot; BKP&quot;)
        Catch ex As Exception
            Throw ex
        End Try
        oBkpTempRecords = oBkpBatch.TempRecords

        oBkpBatch.Fields(EBatchAPIFields.BATCHAPI_fld_BATCH_NUMER) &amp;= &quot; &quot; &amp; Now.ToString
        oBkpBatch.Save()

        Dim oSrcBatchFields As CBatchFields = oSrcBatch.BatchFields

        &#039; Copy all batch rows except the template row from source to target
        For Each oSrcTempRec As CTempRecord In oSrcBatch.TempRecords
            If oSrcTempRec.Fields(oSrcBatchFields.Count + 2)  &quot;0&quot; Then
                &#039; BD (below) is an import alias for Blackbaud.PIA.RE7.BatchData, 
                &#039; all other Batch API classes are referenced from Blackbaud.PIA.RE7.BBREAPI
                Dim oBkpTempRec As BD.CTempRecord = oBkpTempRecords.Add()
                oBkpTempRec.DataObject = oSrcTempRec.DataObject
                For Each oSrcBatchField As CBatchField In oSrcBatchFields
                    Dim i As Integer = oSrcBatchField.Fields(EBatchFieldFields.BatchField_fld_Sequence)
                    If oBkpTempRec.Fields(i)  oSrcTempRec.Fields(i) Then
                        oBkpTempRec.Fields(i) = oSrcTempRec.Fields(i)
                    End If
                Next
            End If
            oBkpTempRecords.Save()
        Next

        oBkpBatch.Save()

        oBkpTempRecords = Nothing

        oSrcBatch.CloseDown()
        FinalReleaseComObject(oSrcBatch)

        oBkpBatch.CloseDown()
        FinalReleaseComObject(oBkpBatch)
    End Sub</description>
		<content:encoded><![CDATA[<p>I was able to populate the Rejection code field in a batch using this code (creates a copy of an existing batch).</p>
<p>    Private Sub CreateBackupBatch(ByVal sSrcBatchNbr As String)<br />
        Dim oSrcBatch As CBatchAPI = New CBatchAPI<br />
        Dim oBkpBatch As CBatchAPI = New CBatchAPI<br />
        Dim oBkpTempRecords As CTempRecords</p>
<p>        &#8216; Create a new, empty batch based on the design of an existing batch<br />
        CreateBatchFromTemplate(sSrcBatchNbr, sSrcBatchNbr &amp; &#8221; BKP&#8221;)</p>
<p>        oSrcBatch.Init(coSC)<br />
        Try<br />
            oSrcBatch.LoadByNumber(sSrcBatchNbr)<br />
        Catch ex As Exception<br />
            Throw ex<br />
        End Try</p>
<p>        oBkpBatch.Init(coSC)<br />
        Try<br />
            oBkpBatch.LoadByNumber(sSrcBatchNbr &amp; &#8221; BKP&#8221;)<br />
        Catch ex As Exception<br />
            Throw ex<br />
        End Try<br />
        oBkpTempRecords = oBkpBatch.TempRecords</p>
<p>        oBkpBatch.Fields(EBatchAPIFields.BATCHAPI_fld_BATCH_NUMER) &amp;= &#8221; &#8221; &amp; Now.ToString<br />
        oBkpBatch.Save()</p>
<p>        Dim oSrcBatchFields As CBatchFields = oSrcBatch.BatchFields</p>
<p>        &#8216; Copy all batch rows except the template row from source to target<br />
        For Each oSrcTempRec As CTempRecord In oSrcBatch.TempRecords<br />
            If oSrcTempRec.Fields(oSrcBatchFields.Count + 2)  &#8220;0&#8243; Then<br />
                &#8216; BD (below) is an import alias for Blackbaud.PIA.RE7.BatchData,<br />
                &#8216; all other Batch API classes are referenced from Blackbaud.PIA.RE7.BBREAPI<br />
                Dim oBkpTempRec As BD.CTempRecord = oBkpTempRecords.Add()<br />
                oBkpTempRec.DataObject = oSrcTempRec.DataObject<br />
                For Each oSrcBatchField As CBatchField In oSrcBatchFields<br />
                    Dim i As Integer = oSrcBatchField.Fields(EBatchFieldFields.BatchField_fld_Sequence)<br />
                    If oBkpTempRec.Fields(i)  oSrcTempRec.Fields(i) Then<br />
                        oBkpTempRec.Fields(i) = oSrcTempRec.Fields(i)<br />
                    End If<br />
                Next<br />
            End If<br />
            oBkpTempRecords.Save()<br />
        Next</p>
<p>        oBkpBatch.Save()</p>
<p>        oBkpTempRecords = Nothing</p>
<p>        oSrcBatch.CloseDown()<br />
        FinalReleaseComObject(oSrcBatch)</p>
<p>        oBkpBatch.CloseDown()<br />
        FinalReleaseComObject(oBkpBatch)<br />
    End Sub</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Raiser&#8217;s Edge API: VB.NET versus C# by David</title>
		<link>http://www.re-decoded.com/2009/07/the-raisers-edge-api-vb-net-versus-c/comment-page-1/#comment-4614</link>
		<dc:creator>David</dc:creator>
		<pubDate>Tue, 15 Dec 2009 22:03:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.re-decoded.com/?p=253#comment-4614</guid>
		<description>Thanks Paul for some really good points. I agree to an extent about C# but I would say that VB.NET was totally reworked after VB6 and while the syntax is similar in many cases the grounding of the language has changed. There is little that VB.NET can do that C# can&#039;t and vice versa. It is much more about the .NET framework rather than specific languages.

Specifically referring to the RE API however, I think that VB does have an easier time. RE was written in a different era. There was no such thing as .NET when probably 95% of the API was written and as such they could not have foreseen where the technology would take the industry. COM technology was the big thing of the time and as such as long as the API worked with a COM language that was fine.

Given that, even though VB.NET was rewritten, much of the syntax remains, it is obvious that VB.NET is going to be better suited to what was primarily intended to be used with VB6. The optional parameters is a good example.

The example of collections is an interesting case. You are right this is nothing like the .NET syntax but then why should it be. This was not written for .NET. It is closer to the VB6 Collections class but even then it is more &quot;advanced&quot;.</description>
		<content:encoded><![CDATA[<p>Thanks Paul for some really good points. I agree to an extent about C# but I would say that VB.NET was totally reworked after VB6 and while the syntax is similar in many cases the grounding of the language has changed. There is little that VB.NET can do that C# can&#8217;t and vice versa. It is much more about the .NET framework rather than specific languages.</p>
<p>Specifically referring to the RE API however, I think that VB does have an easier time. RE was written in a different era. There was no such thing as .NET when probably 95% of the API was written and as such they could not have foreseen where the technology would take the industry. COM technology was the big thing of the time and as such as long as the API worked with a COM language that was fine.</p>
<p>Given that, even though VB.NET was rewritten, much of the syntax remains, it is obvious that VB.NET is going to be better suited to what was primarily intended to be used with VB6. The optional parameters is a good example.</p>
<p>The example of collections is an interesting case. You are right this is nothing like the .NET syntax but then why should it be. This was not written for .NET. It is closer to the VB6 Collections class but even then it is more &#8220;advanced&#8221;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
