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
Continue reading Adjust that tax claim at your peril
Tag Archives: API
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.
VBA in Imports
At one time I was very keen on working with VBA on import. I now steer clear of this wherever possible! There are many reasons.
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”
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 IDLookupIs 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.”