2016-01-28 2 views
1

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

Dim command As OleDbCommand 
    Dim data_reader As OleDbDataReader 

    connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=H:\Computing\Year 13\Computing Project Course-work\Database41.accdb") 

    command = New OleDbCommand("SELECT SUM(Distance) As Int32 FROM [Table3];", Conn) 
    dr = command.ExecuteReader 

    While dr.Read 
     TextBox7.Text = dr.GetValue(4) 
    End While 

ответ

0

У вас есть только один столбец, возвращенный из этой команды.
Вы не можете использовать try для чтения значения из столбца в индексе 4, его просто не существует. И вы должны получить исключение для этой попытки. Если вы не видите исключение, это означает, что у вас есть пустой блок try/catch, который скрывает вашу ошибку. Вы должны использовать dr.GetValue(0) но дает тот факт, что вы используете скалярную функцию в запросе (SUM), то лучше использовать ExecuteScalar

Using connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=H:\Computing\Year 13\Computing Project Course-work\Database41.accdb") 
Using command = New OleDbCommand("SELECT SUM(Distance) As Total FROM [Table3];", Conn) 
    Dim total = Convert.ToInt32(command.ExecuteScalar) 
    TextBox7.Text = total.ToString 
End Using 
End Using 

(Обратите внимание на то, что одноразовые предметы, такие как соединения, команды, и читатели должны быть утилизированы когда вы закончите использовать их. Используемый блок обеспечивает это)

+0

Спасибо Стив, это прекрасно работает. – DavidChambers

Смежные вопросы