Tag Archives: API

Adjust that tax claim at your peril

This is perhaps more of a rant than anything else but after being so pleased with the way Blackbaud introduced Batch into the RE:API I now found myself stuck with another piece of Raiser’s Edge functionality that I am less than pleased with.In the UK Gift Aid is big business. In the States (and possibly elsewhere) the donor can claim tax back from charitable donations. In the UK it is the charity that can claim the money back from the government for UK tax payers so this can amount to a very large sum of money if it is handled properly. There have been several changes to Gift Aid over the past four or five versions of Raiser’s Edge. One problem that was not addressed until recently was when Gift Aid had been taken in error and then claimed back from the Inland Revenue. If a gift was given in error then the Gift must be adjusted or written off and the Gift Aid must be reversed. If the Gift Aid was claimed in error (for example the donor was not a tax payer) then the Gift Aid alone must be reversed.
Continue reading Adjust that tax claim at your peril

Filtering and Sorting Participants – Just not Together

This is being written in response to two hours of trying to get some code to work only to conclude that there was a bug in the API. I am not overly convinced it will be documented any time soon so let it be documented here!

I wanted to create a collection of participant registrations for a particular constituent. I also wanted to only really look at the most recent three registrations so I needed to both filter and sort. Sounds quite simple really until of course it did not work.

Continue reading Filtering and Sorting Participants – Just not Together

Integrating with Excel

Two common tasks seem to be integrating RE with an Excel file. This can mean two things. Either from a plugin or some RE:VBA code opening a Excel file and extracting the data or it can mean that from within Excel VBA access the RE objects to retrieve some data. The way you handle the two scenarios is quite different.

If you are trying to connect to Raiser’s Edge from Excel you will need the API module. You connect to RE using the REAPI object and initialize it with a serial number and optionally user name and password. You then use the API in exactly the same way as you would from within RE, i.e. via VBA or any other API application.

If you want to open up Excel from RE then you will need to create the application objects. This is shown in the example below:

    Dim objExcel As Excel.Application     ' Excel application 
    Dim objBook As Excel.Workbook      ' Excel workbook  
    Dim objSheet As Excel.Worksheet     ' Excel Worksheet  
    Dim oConstit As New CRecord    oConstit.Init REApplication.SessionContext 
    Set objExcel = CreateObject("excel.application") 'Starts the Excel Session  
    Set objBook = objExcel.Workbooks.Open("C:test.xls")   

    For Each objSheet In objBook.Sheets 
        If UCase(objSheet.Name) = "Sheet1" Then 
            oConstit.Load CLng(objSheet.Range("A2").Text) 
            objSheet.Range("A3").Text = oConstit.Fields(RECORDS_fld_FULL_NAME) 
            Exit For 
        End If 
    Next objSheet 
     objBook.Save  
     If Not objBook Is Nothing Then 
        objBook.Close 
        Set objBook = Nothing 
    End If 
     If Not objExcel Is Nothing Then  
        objExcel.Quit 
        Set objExcel = Nothing 
    End If  

This is quite self-explanatory code, although Excel has an object model just as RE does which is very large and takes a while to get to understand. There is plenty of Excel API information on MSDN.

API 7.82 – The Silent Revolution

I normally keep up with the latest changes in the Raiser’s Edge version.  I thought that the jump from 7.81 to 7.82 was not that great. I knew that there were fixes so that RE would work with Office 2007, there were some more changes to optional modules (I was only really familiar with events), there were new names for items in query and export, another change to Gift Aid and that was about it. At least that was it until I saw an item on the conference pages talking about the new Batch API code that had been made available. What?? Batch API! This is something that I have been asking for forever and it completely threw me when I just stumbled across it. Continue reading API 7.82 – The Silent Revolution

How I would improve the API

If I have often wondered if I were in charge of the API at Blackbaud how I would change it. Well unfortunately I don’t wield that kind of power and secondly I am not sure that a major overhaul is required. It is clearly not a modern API being COM based but for the main it works well. However there are still quite a few areas that I would improve upon. I don’t suppose that these will ever happen. Changing the API is no doubt lower on Blackbaud’s list of priorities. With the imminent arrival of the Infinity platform (and, yes, its name does seem to have influenced the pace at which it is being released) , the ability to develop any interface into the system seems a real possibility. RE API by comparison appears somewhat staid and limited. I would imagine it no longer commands the attention at Blackbaud those of us using it would like.

That being said I would love to be proven wrong so Blackbaud if you are listening here are the areas that I would change: Continue reading How I would improve the API

Changing Raiser’s Edge skin part 2

When you are supplied all the dlls that an application uses and these are all COM object it is possible to discover things about the application that you would otherwise not normally be able to do. Some people may call this “hacking” but others like myself would prefer the less confrontational description of “investigating”

Continue reading Changing Raiser’s Edge skin part 2

Static, Dynamic and User-defined code table entries

I regularly use the API help file and the code examples it contains. After all why reinvent the wheel There is a good example of how to retrieve values from a code table (search for “Code Tables Server” and select the entry with the same name). The example shows you how to create a code table server, load a combo box with certain entries or see if a certain value is in the table.

A while back I was looking to validate the gift pay method. I would retrieve the data from a CSV file and before applying it to the field in the gift I wanted to make sure it was a valid value. This way I could control the error message myself. This help file example was just what I needed.

Continue reading Static, Dynamic and User-defined code table entries

Installing IDLookup

Update: IDLookup is a legacy application that is no longer available for download. Almost all of the functionality has been incorporated into Importacular and we recommend that product instead.

In this post I hope to offer some help in installing IDLookup. Many people have downloaded it but it may not be so straight forward to install. Note that these instructions can also be used for installing Query Manager.

If you do not know what IDLookup is here is a brief outline. IDLookup is  a plugin that I have created to lookup records in Raiser’s Edge given a list of constituents and their address details. This is useful where you have a third party list given that does not contain your constituent ids (such as many giving sites e.g. JustGiving, FirstGiving, CharityWeb, etc)  or cold lists that you want to ensure really are cold. The application can be found on Zeidman Development ->IDLookup. This is a demo version that is tied to the sample database.

When you download IDLookup from Zeidman Development you receive a zipped up file consisting of one installation file. After extracting the installation file (IDLookup Setup.msi) double click on it and follow the guide that will install all the files in their correct location. In the plugins directory you will then see a link for IDLookup. However we are not ready to start just yet.

Continue reading Installing IDLookup

Is the API really that expensive?






I get a lot of questions asking me if a certain change to The Raiser’s Edge can be done. Here is a typical (if somewhat abbreviated conversation)

Them: “We would like to add an attribute every time a constituent is saved. Then we want to synchronize our online giving application with Raisers Edge. Lastly we want to validate fields when entering gifts into Batch.”

Continue reading Is the API really that expensive?