private static int InsertRecord(UPCRMRecord record, string recordId, int requestNr, int recordnr, DatabaseStatement statement, out string recordIdBuffer)
        {
            recordIdBuffer = null;
            var ret = 0;
            var sql = "INSERT INTO records (requestnr, recordnr, infoareaid, recordid, mode, options) VALUES (?,?,?,?,?,?)";

            if (statement.Prepare(sql))
            {
                string mode = record.Mode;
                if (string.IsNullOrWhiteSpace(recordId) || recordId.StartsWith("newid:") || recordId == "new")
                {
                    if (!string.IsNullOrWhiteSpace(mode) && mode.StartsWith("Sync"))
                    {
                        if (!string.IsNullOrWhiteSpace(recordId))
                        {
                            recordIdBuffer = recordId;
                        }
                    }
                    else
                    {
                        recordIdBuffer              = $"new{requestNr:X8}{recordnr:X4}";
                        record.OfflineRecordNumber  = ((requestNr & 65535) << 16) + recordnr;
                        record.OfflineStationNumber = Convert.ToInt32(ConfigurationUnitStore.DefaultStore.ConfigValueDefaultValue("System.OfflineStationNumber", "0"));
                        if (string.IsNullOrWhiteSpace(mode) || !mode.StartsWith("New"))
                        {
                            mode = "New";
                        }
                    }
                }
                else
                {
                    recordIdBuffer = recordId;
                }

                statement.Bind(1, requestNr);
                statement.Bind(2, recordnr);
                statement.Bind(3, record.InfoAreaId);
                statement.Bind(4, recordIdBuffer);
                statement.Bind(5, mode);
                var optionArray = record.OptionArray();
                if (optionArray == null)
                {
                    statement.Bind(6, null);
                }
                else
                {
                    var optionArrayString = StringExtensions.StringFromObject(optionArray);
                    statement.Bind(6, optionArrayString);
                }

                ret = statement.Execute();
            }

            return(ret);
        }