Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286

Запрос на количество записей в БД

20.12.2013, 22:05. Показов 3563. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Необходимо составить запрос:
Я ввожу ГРЗ автомобиля в текстбокс и нажимаю сохранить.
Если такой ГРЗ уже есть в БД (проверяю : если количество записей где есть такой грз>0) то показать сообщение об ошибке.



VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.oledb.12.0; Data source=DB.accdb") ' Переменная для подключения базы
                Dim SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
                Dim DT As New Data.DataTable ' Таблица для хранения результатов запроса
                Dim DA As OleDb.OleDbDataAdapter ' Адаптер для заполнения таблицы после запроса
 
                DT.Clear() 'Очищаем таблицу
                Dim grz As String
                grz = TextBox2.Text
                SqlCom = New OleDb.OleDbCommand("SELECT СOUNT (*) * FROM Автомобили where ГРЗ =" & grz, Con)
                Con.Open() ' Открываем соединение
                SqlCom.ExecuteNonQuery() 'Выполняем запрос
                DA = New OleDb.OleDbDataAdapter(SqlCom) 'Через адаптер получаем результаты запроса
                DA.Fill(DT) ' Заполняем таблицу результатми
                If DT.Rows.Count > 0 Then
                    MessageBox.Show("Автомобиль с таким номером уже есть в БД!!", _
                                                          "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
   Con.Close() ' Закрываем соединение'
Добавлено через 2 минуты
При попытке выполнить запрос у строки
SQL.Com.ExecuteNonQuery() показывает ошибку "Ошибка синтаксиса (пропущен оператор) в выражении запроса 'СOUNT (*) *'."
в чем проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2013, 22:05
Ответы с готовыми решениями:

Запрос на количество записей в таблице
У меня есть таблица Прогульщиков: Код|Предмет|Прогульщик|Кол-во часов нужно получить кол-во прогульщиков, Прогульщик (его номер зачетки)...

Запрос (количество непустых записей в столбце)
Здравствуйте! Есть две таблицы, одни объединены JOIN LEFT. Назовем таблицы A и B а стобцы в них А1 А2..А9 и В1,В2..В9. Как вывести кол-во...

Запрос с параметром на количество последних записей
Ув. форумчане! Подскажите пож как сделать запрос. есть таблица с записями Журнал. В ней к примеру 10 записей. Как построить...

12
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
20.12.2013, 23:23
Цитата Сообщение от Nooby93 Посмотреть сообщение
СOUNT (*) *
неправильно. Нельзя так писать. Укажи определенное поле, а не звездочку
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
21.12.2013, 00:29  [ТС]
Цитата Сообщение от emenem97 Посмотреть сообщение
неправильно. Нельзя так писать. Укажи определенное поле, а не звездочку
VB.NET
1
SELECT СOUNT (ГРЗ) * FROM Автомобили where ГРЗ
Ошибка вот здесь
VB.NET
1
SqlCom.ExecuteNonQuery() 'Выполняем запрос
То пропущена переменная \ошибка синтаксиса,то несовпадение типов
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
21.12.2013, 08:22
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.oledb.12.0; Data source=DB.accdb") ' Переменная для подключения базы
                Dim SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
                Dim DT As New Data.DataTable ' Таблица для хранения результатов запроса
                Dim DA As OleDb.OleDbDataAdapter ' Адаптер для заполнения таблицы после запроса
                Dim grz As String
                grz = TextBox2.Text                
                DA.SelectCommand= New OleDb.OleDbCommand("SELECT СOUNT (ГРЗ) FROM Автомобили where ГРЗ =" & grz, Con)
                DT.Clear() 'Очищаем таблицу
                Dim rows as integer =DA.Fill(DT) ' Заполняем таблицу результатами
                If Rows > 0 Then
                    MessageBox.Show("Автомобиль с таким номером уже есть в БД!!", _
                                                          "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
   Con.Close() ' Закрываем соединение'
Добавлено через 7 минут
Вот так правильно:
VB.NET
1
 DA.SelectCommand = New OleDb.OleDbCommand("SELECT СOUNT (ГРЗ) FROM Автомобили WHERE ГРЗ='" & grz & "'", Con)
0
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
21.12.2013, 08:54
Цитата Сообщение от Nooby93 Посмотреть сообщение
SELECT СOUNT (ГРЗ) * FROM Автомобили
нельзя так писать в sql
Звездочку использовать только если остальные поля не указаны, в данном случае поле группировка count уже есть
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
21.12.2013, 11:33  [ТС]
Здравствуйте.
Выдает ошибку
Миниатюры
Запрос на количество записей в БД  
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
21.12.2013, 23:32  [ТС]
Цитата Сообщение от dimsaratov Посмотреть сообщение
[VBNET]Dim Con As New OleDb.OleDbConnection("Provider=Microsof t.ACE.oledb.12.0; Data source=DB.accdb") ' Переменная для подключения базы
Выдает ошибку
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
22.12.2013, 12:38
Не инициализирован адаптер, нужно изменить на вот эту строку
VB.NET
1
Dim DA As New OleDb.OleDbDataAdapter
1
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
22.12.2013, 12:56
Nooby93, положи базу в папку с программой (в папку Debug) и используй код для подключения:
VB.NET
1
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & My.Application.Info.DirectoryPath & "\БД.mdb")
Добавлено через 36 секунд
И вообще, в faq это есть, почитайте уважаемый!
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
22.12.2013, 13:16  [ТС]
Цитата Сообщение от emenem97 Посмотреть сообщение
Nooby93, положи базу в папку с программой (в папку Debug) и используй код для подключения:
VB.NET
1
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & My.Application.Info.DirectoryPath & "\БД.mdb")
Добавлено через 36 секунд
И вообще, в faq это есть, почитайте уважаемый!
там и лежит)

Добавлено через 7 минут
Цитата Сообщение от dimsaratov Посмотреть сообщение
Не инициализирован адаптер
Здравствуйте.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.oledb.12.0; Data source=DB.accdb") ' Переменная для подключения базы
                Dim SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
                Dim DT As New Data.DataTable ' Таблица для хранения результатов запроса
                Dim DA As New OleDb.OleDbDataAdapter
                Dim grz As String
                grz = TextBox3.Text
                DA.SelectCommand = New OleDb.OleDbCommand("SELECT СOUNT (ГРЗ) FROM Автомобили WHERE ГРЗ=" & grz, Con)
                DT.Clear() 'Очищаем таблицу
 
                Dim rows As Integer = DA.Fill(DT) ' Заполняем таблицу результатами
                If rows > 0 Then
                    MessageBox.Show("Автомобиль с таким номером уже есть в БД!!", _
                                                          "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error)
 
 
                Else
 
                    Form1.MyDataSetAvto.Update()
 
                    MessageBox.Show("Новая запись добавлена.", _
                                    "СООБЩЕНИЕ", MessageBoxButtons.OK, MessageBoxIcon.Information)
 
                End If
                Con.Close() ' Закрываем соединение'
Выдает тут ошибку
VB.NET
1
 Dim rows As Integer = DA.Fill(DT)
Неопределенная функция 'СOUNT' в выражении.
0
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
22.12.2013, 13:32
Nooby93, сделай в БД запрос и выводи готовое в vb.net, не мучайся. Зачем именно с програмы формировать?

Добавлено через 2 минуты
Цитата Сообщение от Nooby93 Посмотреть сообщение
Неопределенная функция 'СOUNT' в выражении.
может в vb нет такой функции? только в БД?
p.s. и то, у sql несколько как бы сказать языков (то что есть в аксе нет в оракле и наоборот)

Добавлено через 7 минут
Правильно сказать диалектов...
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
22.12.2013, 15:37  [ТС]
Цитата Сообщение от emenem97 Посмотреть сообщение
Nooby93, сделай в БД запрос и выводи готовое в vb.net, не мучайся. Зачем именно с програмы формировать?

Добавлено через 2 минуты

может в vb нет такой функции? только в БД?
p.s. и то, у sql несколько как бы сказать языков (то что есть в аксе нет в оракле и наоборот)

Добавлено через 7 минут
Правильно сказать диалектов...
В общем,нужно было проверить есть ли повторяющиеся значения в БД.
Проверка должна была производиться следующим образом:

Я ввожу в текстбокс допустим ГРЗ автомобиля "а222аа22"
Потом программа читает БД и если количество записей в таблице "автомобили", в колонке "грз" равных "а222аа22">0 то тогда не записывать введённое в текстбокс и выдать сообщение о потворе.

Добавлено через 2 минуты
Проблема решена
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
22.12.2013, 18:38
VB.NET
1
DA.SelectCommand= New OleDb.OleDbCommand("SELECT СOUNT(ГРЗ) FROM Автомобили where ГРЗ='" & grz & "'", Con)
Возможно ругался на лишние пробелы

А нужна ли такая проверка вообще,
Наложи на столбец строгое значение по уникальности
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2013, 18:38
Помогаю со студенческими работами здесь

Как вывести запрос ограниченное количество записей
например как вывести в запросе "4" первые 3 палия выложите пример пожалуйста используя этот файл

Запрос: просуммировать количество определенных записей в таблице
Добрый день, подскажите советом пожалуйста! Пытаюсь просуммировать количество определенных записей в таблице, отобранных по условию ...

Запрос что бы считало количество записей поля с непустыми значениями
Есть поле в нем 41 запись из них 5 записей имеют значения типа (С16) остальные 36 пустые. Мне нужно сделать запрос чтобы выдало количество...

Запрос, который должен посчитать количество записей в БД возвращает bool(false)
Доброго времени суток. Почему запрос, который должен посчитать количество записей в БД возвращает мне bool(false). Вот собственно сам...

Блок состоит из 5 записей. Не получается задать количество записей, не кратное 5 (например 7)
удаётся записать в файл лишь кол-во записей, кратное 5 (5,10,15...) иначе не не записывает ничего type zap=record fam,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru