Trying to set pricing, "The Price Code Record is Required" (even though it's set)

{solved}

The error was in my KeySet() line. Instead of: 

    

 var retval = Core.SageObject.Process(pcObject.InvokeMethod("nSetKey", ""), pcObject).ReturnCode;

It should have been:
 var retval = Core.SageObject.Process(pcObject.InvokeMethod("nSetKey"), pcObject).ReturnCode; //no comma and "" after the nsetkey

Getting a bit stumped on this one. I'm clearly setting the price record, but when I go to write I get the error message error: 0 The Price Code Record is required.Š

Code: 

(in attempt to make it readable I'm attaching both a screenshot and the code, the forum keeps butchering my formatting) 

private void CreatePrice(DispatchObject pvx, DispatchObject oSS, McniPriceRequests request)
{
try
{
using (pcObject = new DispatchObject(pvx.InvokeMethod("NewObject", "IM_PriceCode_bus", oSS.GetObject())))
{
string lastErrorString;
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetKeyValue", "PriceCodeRecord$", "2"), pcObject).LastErrorMessage; //price code record is always "2" for customer item pricing
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetKeyValue", "PriceCode$", ""), pcObject).LastErrorMessage; //should be blank for record type of 2
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetKeyValue", "ItemCode$", request.ItemCode), pcObject).LastErrorMessage;
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetKeyValue", "ARDivisionNo$", request.ARDivisionNo), pcObject).LastErrorMessage;
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetKeyValue", "CustomerNo$", request.CustomerNo), pcObject).LastErrorMessage;
var retval = Core.SageObject.Process(pcObject.InvokeMethod("nSetKey", ""), pcObject).ReturnCode;

lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetValue", "PricingMethod$", "O"), pcObject).LastErrorMessage; //pricing method override... always... for now (dun dun dun)
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetValue", "BreakQuantity1", 99999999), pcObject).LastErrorMessage; //sticking with what we've done.
lastErrorString = Core.SageObject.Process(pcObject.InvokeMethod("nSetValue", "DiscountMarkup1", request.RequestedLockPrice), pcObject).LastErrorMessage;

int saveChangesStatus = SafeProcess(pcObject.InvokeMethod("nWrite"), pcObject);
if (saveChangesStatus == 1)
{
Console.WriteLine("changes saved successfully");
}
}
}
catch (Exception)
{

throw;
}
}