Hey guys, sorry to resurrect an old thread, but I'm wondering if anyone can share an example of Nic's suggested solution in use. I've tried to do this in a couple ways, such as:
If oRec.Fields(Blackbaud.PIA.RE7.BBREAPI.ERECORDSFields.RECORDS_fld_ID) = ""
and
If oRec.Fields(Blackbaud.PIA.RE7.BBREAPI.ERECORDFields.RECORDS_fld_ID) = Nothing
without any luck. I'm working in the After Constituent Open Sub, but I've tried a couple without any success.
Thanks in advance!
Hi Chase,
Try this instead
If Convert.ToInt32(oRec.Fields(Blackbaud.PIA.RE7.BBREAPI.ERECORDSFields.RECORDS_fld_ID)) < 1
The value isn't populated as null for new records it's populated with -1 (or it might be 0, I don't recall)
Thanks,
John
Thanks John! This did the trick. With a little testing I was able to confirm that the ID field for new records is in fact populated with -1.
Thank you. I want to use this to keep from adding a relationship. Creating the relationship involves 3 virtual fields, one data file field, and 2 dictionaries. How do I code "ignore this"?
So you want to set it to not add a relationship if it doesn't currently exist?
Hi Perry,
IOM will not error out if you blank out all 4 of the fields in code, but you would have to do it in Before Constituent Save because you wouldn't know if they were new or existing until that point.
Something like
If Convert.ToInt32(oRec.Fields(Blackbaud.PIA.RE7.BBREAPI.ERECORDSFields.RECORDS_fld_ID)) > 1 Then
Import.Fields.GetByExcelName("N").Value = ""
Import.Fields.GetByExcelName("O").Value = ""
End If
I've tried your code John in "Before Constituent Save" but it doesn't appear to detect the existing constituents.
I'm trying to do a conditional Constituent Code addition depending on new/existing. Blanking the incoming columns doesn't appear to work in this instance.
Any suggestions much appreciated.
Can you post your code here?
Actually thinking back on this I think the issue is where you are doing it (which is my fault). You'd want it in After Constituent Open, not Before Constituent Save.
Thanks John. That seemed to work.
I'm quite new to the API, still trying to work out some of the objects. Is the myBase line needed
Public Overrides Sub AfterConstituentOpen(ByVal oRec As Blackbaud.PIA.RE7.BBREAPI.CRecord, _
Cancel As ImportOM.API.iCancel)
MyBase.AfterConstituentSave(oRec, Cancel)
' TW Remove Constituent Code data if existing
If Convert.ToInt32(oRec.Fields(Blackbaud.PIA.RE7.BBREAPI.ERECORDSFields.RECORDS_fld_ID)) > 1 Then
Import.Fields.GetByExcelName("B").Value = ""
Import.Fields.GetByExcelName("C").Value = ""
End If
Wayne Pozzar
How would I tell if the record I am looking at in the API (oRec in BeforeConstituentSave for example) is newly created by the import or if it was matched?
I would like to treat them differently.
1 person has this question