Проблема установки параметра Значения равными значениям DataColumn - PullRequest
0 голосов
/ 23 апреля 2011

Кодирование в VB.Net

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

ошибка, которую я получаю, - это вариант «Не удалось преобразовать значение параметра из DataColumn в строку» в зависимости от того, как именно я пытаюсь присвоить значение.

все типы данных являются правильными в других местах кода, так что я уверен, что это не проблема, я думаю, что я просто поступаю об этом неправильно.

мой код для этого бита


Try
ConnectionAttempt.Open()
Try
    With NewYearCommand_Dates
        .CommandType = CommandType.StoredProcedure
        .CommandText = "DatesINSERT"
        .Parameters.Add(New SqlParameter("@AcademicYear", SqlDbType.VarChar))
        .Parameters.Add(New SqlParameter("@YearStart", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@YearEnd", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term1Start", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term1End", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term2Start", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term2End", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term3Start", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term3End", SqlDbType.Date))
        .Parameters("@AcademicYear").Value = dates.Columns("AcademicYear")
        .Parameters("@YearStart").Value = dates.Columns("YearStart")
        .Parameters("@YearEnd").Value = dates.Columns("YearEnd")
        .Parameters("@Term1Start").Value = dates.Columns("Term1Start")
        .Parameters("@Term1End").Value = dates.Columns("Term1End")
        .Parameters("@Term2Start").Value = dates.Columns("Term2Start")
        .Parameters("@Term2End").Value = dates.Columns("Term2End")
        .Parameters("@Term3Start").Value = dates.Columns("Term3Start")
        .Parameters("@Term3End").Value = dates.Columns("Term3End")
        .Connection = ConnectionAttempt
        .ExecuteNonQuery()
        .Dispose()
    End With
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

другие вещи, которые я пытался заставить это работать, - это все варианты бита .Value = даты, такие как

.Value = даты (0) (поэтому используется индекс столбца)

.Value = date.columns (0) (снова с использованием индекса столбца)

Я также пытался объявить переменные и установить их значения в значения в столбцах, но код возвращает ошибку, в которой говорится, что «значение типа 'System.Data.DataColumn' нельзя преобразовать в строку".

Я должен отметить, что я делаю это для 3 таблиц одновременно в этом подпункте, у 2 из них будет только одна строка данных, а у третьей - неопределенное количество строк.

Боюсь, я не знаю, что еще делать. Я уверен, что мой друг и лектор поверили, что это должно сработать, и, конечно, это сработает, но доказательства говорят об обратном.

если я пойду по этому поводу совершенно неправильно, может кто-нибудь просветить меня, что я ДОЛЖЕН делать?

ура

1 Ответ

1 голос
/ 23 апреля 2011

Это:

dates.Columns("AcademicYear")

Является целым столбцом. Вы можете назначить значение только из одной строки .

Например, чтобы использовать первую строку таблицы данных:

.Parameters("@AcademicYear").Value = dates.Rows[0]("AcademicYear")
...