/// <summary>
        /// Opdaterer værdi på et givent felt.
        /// </summary>
        /// <param name="dbHandle">Databasehandle.</param>
        /// <param name="searchHandle">Searchhandle.</param>
        /// <param name="fieldName">Feltnavn.</param>
        /// <param name="value">Værdi.</param>
        protected void SetFieldValue(IDsiDbX dbHandle, int searchHandle, string fieldName, DateTime value)
        {
            if (dbHandle == null)
            {
                throw new ArgumentNullException("dbHandle");
            }
            if (string.IsNullOrEmpty(fieldName))
            {
                throw new ArgumentNullException("fieldName");
            }
            var fieldType = dbHandle.GetFieldType(dbHandle.GetFieldNoByName(fieldName));

            switch (fieldType)
            {
            case 3:
                SetFieldValue(dbHandle, searchHandle, fieldName, value.ToShortDateString());
                break;

            case 4:
                SetFieldValue(dbHandle, searchHandle, fieldName, value.ToShortTimeString());
                break;

            default:
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.UnhandledSwitchValue, fieldType, "fieldType",
                                                       MethodBase.GetCurrentMethod().Name));
            }
        }
        /// <summary>
        /// Henter dato værdi for et givent felt.
        /// </summary>
        /// <param name="dbHandle">Databasehandle.</param>
        /// <param name="searchHandle">Searchhandle.</param>
        /// <param name="fieldName">Feltnavn.</param>
        /// <returns>Datoværdi.</returns>
        protected DateTime?GetFieldValueAsDateTime(IDsiDbX dbHandle, int searchHandle, string fieldName)
        {
            var dateValue = GetFieldValueAsString(dbHandle, searchHandle, fieldName);

            if (string.IsNullOrEmpty(dateValue))
            {
                return(null);
            }
            return(DateTime.Parse(dateValue));
        }
 /// <summary>
 /// Opdaterer værdi på et givent felt.
 /// </summary>
 /// <param name="dbHandle">Databasehandle.</param>
 /// <param name="searchHandle">Searchhandle.</param>
 /// <param name="fieldName">Feltnavn.</param>
 /// <param name="value">Værdi.</param>
 protected void SetFieldValue(IDsiDbX dbHandle, int searchHandle, string fieldName, string value)
 {
     if (dbHandle == null)
     {
         throw new ArgumentNullException("dbHandle");
     }
     if (string.IsNullOrEmpty(fieldName))
     {
         throw new ArgumentNullException("fieldName");
     }
     dbHandle.SetFieldValue(searchHandle, dbHandle.GetFieldNoByName(fieldName), value);
 }
 /// <summary>
 /// Henter streng værdi for et givent felt.
 /// </summary>
 /// <param name="dbHandle">Databasehandle.</param>
 /// <param name="searchHandle">Searchhandle.</param>
 /// <param name="fieldName">Feltnavn.</param>
 /// <returns>Strengværdi.</returns>
 protected string GetFieldValueAsString(IDsiDbX dbHandle, int searchHandle, string fieldName)
 {
     if (dbHandle == null)
     {
         throw new ArgumentNullException("dbHandle");
     }
     if (string.IsNullOrEmpty(fieldName))
     {
         throw new ArgumentNullException("fieldName");
     }
     return(dbHandle.GetFieldValue(searchHandle, dbHandle.GetFieldNoByName(fieldName), false));
 }
 /// <summary>
 /// Opdaterer værdi på et givent felt.
 /// </summary>
 /// <param name="dbHandle">Databasehandle.</param>
 /// <param name="searchHandle">Searchhandle.</param>
 /// <param name="fieldName">Feltnavn.</param>
 /// <param name="value">Værdi.</param>
 protected void SetFieldValue(IDsiDbX dbHandle, int searchHandle, string fieldName, decimal value)
 {
     SetFieldValue(dbHandle, searchHandle, fieldName, value.ToString());
 }
 /// <summary>
 /// Henter decimal værdi for et givent felt.
 /// </summary>
 /// <param name="dbHandle">Databasehandle.</param>
 /// <param name="searchHandle">Searchhandle.</param>
 /// <param name="fieldName">Feltnavn.</param>
 /// <returns>Decimalværdi.</returns>
 protected decimal GetFieldValueAsDecimal(IDsiDbX dbHandle, int searchHandle, string fieldName)
 {
     return(decimal.Parse(GetFieldValueAsString(dbHandle, searchHandle, fieldName)));
 }
 /// <summary>
 /// Henter integer værdi for et givent felt.
 /// </summary>
 /// <param name="dbHandle">Databasehandle.</param>
 /// <param name="searchHandle">Searchhandle.</param>
 /// <param name="fieldName">Feltnavn.</param>
 /// <returns>Integerværdi.</returns>
 protected int GetFieldValueAsInt(IDsiDbX dbHandle, int searchHandle, string fieldName)
 {
     return(int.Parse(GetFieldValueAsString(dbHandle, searchHandle, fieldName)));
 }
        /// <summary>
        /// Henter næste unikke identifikation (integer).
        /// </summary>
        /// <param name="dbHandle">Databasehandle.</param>
        /// <param name="primaryKey">Navn på primary key (sortering af unik identifikation).</param>
        /// <param name="idFieldName">Navn på felt for unik identifikation.</param>
        /// <param name="keyInterval">Opsætning af eventuelt keyinterval.</param>
        /// <param name="searchLast">Angivelse af, om næste unikke identifikation skal beregnes på baggrund af sidste post i stedet for første post.</param>
        /// <returns>Næste unikke identifikation (integer).</returns>
        protected int GetNextUniqueIntId(IDsiDbX dbHandle, string primaryKey, string idFieldName, bool searchLast, string keyInterval)
        {
            if (dbHandle == null)
            {
                throw new ArgumentNullException("dbHandle");
            }
            if (string.IsNullOrEmpty(primaryKey))
            {
                throw new ArgumentNullException("primaryKey");
            }
            if (string.IsNullOrEmpty(idFieldName))
            {
                throw new ArgumentNullException("idFieldName");
            }
            var databaseName = Path.GetFileNameWithoutExtension(Path.GetFileName(dbHandle.DbFile));
            var searchHandle = dbHandle.CreateSearch();

            try
            {
                if (!dbHandle.SetKey(searchHandle, primaryKey))
                {
                    throw new DataAccessSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantSetKey,
                                                                                     primaryKey, databaseName));
                }
                if (!string.IsNullOrEmpty(keyInterval))
                {
                    if (!dbHandle.SetKeyInterval(searchHandle, keyInterval, keyInterval))
                    {
                        throw new DataAccessSystemException(
                                  Resource.GetExceptionMessage(ExceptionMessage.CantSetKeyInterval, keyInterval,
                                                               dbHandle.GetKeyNameByNo(dbHandle.GetCurKeyNo(searchHandle)),
                                                               databaseName));
                    }
                }
                try
                {
                    var nextNumber = 1;
                    if (searchLast)
                    {
                        if (dbHandle.SearchLast(searchHandle))
                        {
                            nextNumber = GetFieldValueAsInt(dbHandle, searchHandle, idFieldName) + 1;
                        }
                    }
                    else if (dbHandle.SearchFirst(searchHandle))
                    {
                        nextNumber = GetFieldValueAsInt(dbHandle, searchHandle, idFieldName) + 1;
                    }
                    return(nextNumber);
                }
                finally
                {
                    if (!string.IsNullOrEmpty(keyInterval))
                    {
                        dbHandle.ClearKeyInterval(searchHandle);
                    }
                }
            }
            finally
            {
                dbHandle.DeleteSearch(searchHandle);
            }
        }
 /// <summary>
 /// Henter næste unikke identifikation (integer).
 /// </summary>
 /// <param name="dbHandle">Databasehandle.</param>
 /// <param name="primaryKey">Navn på primary key (sortering af unik identifikation).</param>
 /// <param name="idFieldName">Navn på felt for unik identifikation.</param>
 /// <param name="searchLast">Angivelse af, om næste unikke identifikation skal beregnes på baggrund af sidste post i stedet for første post.</param>
 /// <returns>Næste unikke identifikation (integer).</returns>
 protected int GetNextUniqueIntId(IDsiDbX dbHandle, string primaryKey, string idFieldName, bool searchLast)
 {
     return(GetNextUniqueIntId(dbHandle, primaryKey, idFieldName, searchLast, null));
 }