Member 12723543 Ответов: 1

Как получить данные внутри столбца из таблицы SQL server с помощью программы чтения данных VB.NET


Я пытаюсь получить данные из столбца [MorningTime-In], [Afternountime-In] в таблице Table_DTR . его тип данных-time(7), но я продолжаю получать сообщение об ошибке: System.IndexOutOfRangeExcemption:[MorningTime-In] .

Что я уже пробовал:

Dim timeInAm As DateTime
Dim timeOutAm As Date
Dim timeInPm As Date
Dim timeOutPm As Date


Dim xAm As Date = Date.Parse("08:00")
Dim yAm As Date = Date.Parse("12:00")
Dim xPm As Date = Date.Parse("01:00")
Dim yPm As Date = Date.Parse("05:00")
Try
    Connect = New SqlConnection(ConnectionString)
    Connect.Open()

    Dim dt = Convert.ToDateTime(DTRform.datetoday.Text)
    Dim id = Convert.ToInt32(DTRform.DTRempID.Text)

    Using Connect = New SqlConnection(ConnectionString)
        Connect.Open()
        Dim Query1 As String = "Select * From Table_DTR
                   Where Date = @Date and EmployeeID = @EmpID"
        Dim cmd1 As SqlCommand = New SqlCommand(Query1, Connect)
        cmd1.Parameters.Add("@Date", SqlDbType.DateTime).Value = dt
        cmd1.Parameters.Add("@EmpID", SqlDbType.Int).Value = id
        Using Reader As SqlDataReader = cmd1.ExecuteReader()
            Do While Reader.Read()
                timeInAm = Reader("MorningTime-In").ToString()
                timeOutAm = Reader("MorningTime-Out").ToString()
                timeInPm = Reader("AfternoonTime-In").ToString()
                timeOutPm = Reader("AfternoonTime-Out").ToString()



            Loop


        End Using
    End Using

1 Ответов

Рейтинг:
8

Wendelius

Угловые скобки [] используются в SQL Server для окружения имен в SQL Server, содержащих специальные символы или зарезервированные слова. Однако при возврате столбца клиенту используется его фактическое имя.

Поэтому попробуйте сделать следующее:

timeInAm = Reader("MorningTime-In").ToString()

Кроме того, похоже, что вы храните время в строковой переменной. Если это так, то я бы рекомендовал использовать Система.Значение datetime[^] что значительно облегчает форматирование, вычисления, преобразования и т. д.


Member 12723543

переменная timeInAm thirs уже является типом Datetime . теперь его ошибка "преобразование из строки" В тип "дата" недопустима. - Я хочу, чтобы данные из этой колонки были вычтены из колонки "послеобеденное время". как я могу это сделать ?

Wendelius

Если получающей переменной является DateTime, не используйте исключительно метод ToString, вместо этого используйте значение datetime.Метод Синтаксического Анализа (Система)[^] или просто приведите объект из datareader в DateTime с помощью Функция CType (Visual Basic)[^]

Wendelius

Кроме того, если вам нужно вычислить разницу между двумя датами времени, используйте значение datetime.Метод Вычитания (Система)[^]