Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Базы данных


Ответ
 
Опции темы Опции просмотра
Старый 12.03.2011, 22:45   #1 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию Подсчет количества записей в таблице Access

Здравствуйте. Досталась по шабашке работа - сделать небольшое приложение в MS Access, с 4 таблицами, парой форм и .... Задание на работу номер 4: в таблицу Гостиничные номера добавляется вычисляемое поле Количество проживавших. То есть, нужно найти количество записей в таблице. Я так понимаю, вычислять это надо при открытии таблицы, но не уверен, что Аксес даст такую возможность. Наш препод посоветовал сделать запрос, вычисляющий количество записей. Погуглил, так как с SQL мало знаком, сделал следующее:
Код:
SELECT [КНомера], Count (КНомера) AS [Количество проживавших]
FROM [Гостиничные номера]
GROUP By КНомера;
Однако такая конструкция вычисляет не общее количество записей, а количество записей с каждым конкретным имеющимся ключом (Поле КНомера - ключевое в таблице, с типом Счетчик).

Может есть какие-то другие способы узнать, сколько записей в таблице?
MrSTEP вне форума   Ответить с цитированием

Старый 12.03.2011, 22:45
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме ранее создавались топики которые так или иначе похожи на ваш

Режим учетных записей
Перемещение записей между таблицами Access 2003
Программа для подсчета количества слов в файле
Подсчет количества

Старый 12.03.2011, 23:29   #2 (permalink)
Fenix
404
 
Аватар для Fenix
 
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
По умолчанию

а, действительно, почему бы не сделать запрос в самом MS ACCESS? Оттуда потом данные и брать
Fenix вне форума   Ответить с цитированием
Старый 12.03.2011, 23:43   #3 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Ну так там запрос и делается.. Почитал на сайте SQL-school.info про Использование статистических функций. Пример: Функция COUNT () Описание: Возвращает число строк в столбце. Но почему-то в моем случае она возвращает число по строке, а не столбцу. В чем дело?
MrSTEP вне форума   Ответить с цитированием
Старый 12.03.2011, 23:47   #4 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Ну вот, разобрался. На самом деле, запрос делается так:
Код:
SELECT COUNT (*) AS [Количество проживавших]
FROM [Гостиничные номера];
То есть поле в операторе не указывается, а количество считается по всем полям (*). Ну, разобрался и хорошо. Но как добавить это поле в таблицу? Возможно ли такое?
Насколько я знаю, вычисляемые поля обитают в запросе..
MrSTEP вне форума   Ответить с цитированием
Старый 13.03.2011, 02:29   #5 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Количество проживающих где - в конкретном номере или во всей гостинице?
Если второе, то имеем очевидную глупость - столбец, состоящий из одного и того же значения.
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.03.2011, 09:33   #6 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

А этого я не знаю. Задание составлял очень "талантливый" человек (если краткость - сестра таланта). По идее, можно вычислить и общее количество проживавших во всей гостинице - запрос в посте #4, или по каждому номеру - нечто похожее на запрос в первом сообщении.
MrSTEP вне форума   Ответить с цитированием
Старый 13.03.2011, 09:57   #7 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Хотя глупо.. Запись о проживавших хранится в другой таблице, но информация о них должна занестись в почти фиксированную таблицу о гостиничных номерах.. Наверно, лучше искать количество проживавших в каждом отдельном номере
MrSTEP вне форума   Ответить с цитированием
Старый 13.03.2011, 11:21   #8 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Если совсем по-хорошему, то копировать данные из таблицы в таблицу - дурной тон, нужно использовать обзор.
Long Cat вне форума   Ответить с цитированием
Старый 14.03.2011, 10:31   #9 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Это как?
MrSTEP вне форума   Ответить с цитированием
Старый 19.08.2011, 10:19   #10 (permalink)
simply_sash
Новичок
 
Регистрация: 19.08.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
То есть, нужно найти количество записей в таблице. Я так понимаю, вычислять это надо при открытии таблицы, но не уверен, что Аксес даст такую возможность. Наш препод посоветовал сделать запрос, вычисляющий количество записей.
В качестве учебного примера вполне сойдет и
Код:
SELECT COUNT (*) AS [Количество проживавших] FROM [Гостиничные номера];
но если таблица большая, а запрос выполняется часто, лучше использовать быстрый способ на VBA:
Код:
lntCount = CurrentDb.OpenRecordset("[Гостиничные номера]").RecordCount
simply_sash вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:14.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.