Функция Datepart в SQL-запросе не работает с подключением OLEDB в VB.NET

#sql #oledb #datepart

#sql #oledb #datepart

Вопрос:

Я пытаюсь получить дату, месяц и год отдельно от столбца даты в базе данных Access.

Я использую для этого следующий код.

Я не знаю, в чем проблема, но либо она показывает мне ошибку, либо данные не возвращаются.

Я новичок в OLEDB, поэтому я не знаю, возможно ли это или нет.

Пожалуйста, помогите.

И, пожалуйста, покажите мне альтернативы, если этот способ неверен.

     conn_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersMHVDocumentsVisual Studio 2012ProjectsUTSUTS.mdb"

    conn = New OleDbConnection(conn_string)
    conn.Open()

    Grid_string = "SELECT datepart(mm,T_Date) from Transactions"

    Grid_cmd = New OleDbCommand(Grid_string, conn)
    RW_AD = New OleDbDataAdapter(Grid_cmd)
    Grid_DS = New DataSet

    Grid_cmd.Connection = conn
    Grid_cmd.CommandText = Grid_string

    RW_AD.Fill(Grid_DS, "Transactions")

    Grid_cmd.ExecuteNonQuery() 

    DataGridView1.DataSource = Grid_DS.Tables("Transactions").DefaultView
  

PS: Подключение и другие вещи работают нормально.
Он показывает мне ошибку только при использовании datepart().

Комментарии:

1. Ошибка, которую я продолжаю получать, такова. -> Для одного или нескольких обязательных параметров не задано значение.

Ответ №1:

Не могли бы вы попробовать указать интервал datepart в кавычках?

 Grid_string = "SELECT datepart("mm",T_Date) from Transactions"
  

Ответ №2:

Использование ' вместо " решит проблему:

Grid_string = "SELECT datepart('mm',T_Date) from Transactions"

Ответ №3:

Попробуйте использовать m вместо mm

 Grid_string = "SELECT datepart('m',T_Date) from Transactions"
  

Ответ №4:

Возвращаемый тип данных — Int16. Приведите к Int16 или вы получите ошибку