Заполните поле значениями из другого поля в MS Access

Если вы прочитаете вопрос, Майкл спросил о DataReader, а не о DataRecord.

Использование r.GetSchemaTable().Columns.Contains(field) в DataRecord действительно работает, но оно возвращает столбцы BS (см. Снимок экрана ниже).

Чтобы узнать, существует ли столбец данных и содержит данных в DataReader, используйте следующие расширения:

public static class DataReaderExtensions
{
    /// <summary>
    /// Checks if a column's value is DBNull
    /// </summary>
    /// <param name="dataReader">The data reader</param>
    /// <param name="columnName">The column name</param>
    /// <returns>A bool indicating if the column's value is DBNull</returns>
    public static bool IsDBNull(this IDataReader dataReader, string columnName)
    {
        return dataReader[columnName] == DBNull.Value;
    }

    /// <summary>
    /// Checks if a column exists in a data reader
    /// </summary>
    /// <param name="dataReader">The data reader</param>
    /// <param name="columnName">The column name</param>
    /// <returns>A bool indicating the column exists</returns>
    public static bool ContainsColumn(this IDataReader dataReader, string columnName)
    {
        /// See: http://stackoverflow.com/questions/373230/check-for-column-name-in-a-sqldatareader-object/7248381#7248381
        try
        {
            return dataReader.GetOrdinal(columnName) >= 0;
        }
        catch (IndexOutOfRangeException)
        {
            return false;
        }
    }
}

Использование:

    public static bool CanCreate(SqlDataReader dataReader)
    {
        return dataReader.ContainsColumn("RoleTemplateId") 
            && !dataReader.IsDBNull("RoleTemplateId");
    }

Вызов r.GetSchemaTable().Columns в DataReader возвращает столбцы BS:

Calling GetSchemeTable in a DataReader [/g0]

1
задан Muhammad Waheed 18 January 2019 в 08:34
поделиться

3 ответа

Попробуй это. Нет необходимости использовать подзапрос для одинаковых столбцов таблицы и псевдонима.

UPDATE Customers
SET  FirstName =Mid(FullName, 1, InStr(FullName, ' ') - 1) 
0
ответ дан Muhammad Waheed 18 January 2019 в 08:34
поделиться

Нет необходимости в подзапросе:

UPDATE 
    Customers
SET 
    FirstName = Mid(FullName, 1, InStr(FullName, " ") - 1),
    LastName = Mid(FullName, InStr(FullName, " ") + 1),
    FullName = Null
0
ответ дан Gustav 18 January 2019 в 08:34
поделиться

Вы можете попробовать ниже -

UPDATE Customers
SET Customers.FirstName =Mid(FullName, 1, InStr(FullName, ' ') - 1)
0
ответ дан fa06 18 January 2019 в 08:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: