![]() |
![]() |
![]() |
|
Как узнать количество строк в SQL Таблице | ☑ | ||
---|---|---|---|---|
0
picom
11.09.09
✎
12:41
|
Есть в отчете обращение напрямую в таблицу SQL 2005
Количество колонок я смог получить функцией Recordset.Fields.Count А вот как получить количество строк в этой самой таблице? Работаю в 8.1 УТ последняя |
|||
1
ZanderZ
11.09.09
✎
12:42
|
а у рекордсета разве нет свойства count &
|
|||
2
shadow_sw
11.09.09
✎
12:44
|
count
|
|||
3
shuhard
11.09.09
✎
12:44
|
(0)[Работаю в 8.1 УТ последняя]
и при чем здесь OLEDB количество записей в рекордсете можно получить после MoveLast MoveFirst |
|||
4
sapphire
11.09.09
✎
12:45
|
(0) select count(*) ВсегоЗаписей from {Имятаблицы}
|
|||
5
picom
11.09.09
✎
12:51
|
(1)(2)
нету такой записи (4) можно подробнее? |
|||
6
shadow_sw
11.09.09
✎
12:52
|
смотри (4) там все написано
|
|||
7
sapphire
11.09.09
✎
12:53
|
(5) Простите куда уж тут подробней...
Да простит меня ВР (с) Электронная документация по SQL Server 2008 (январь 2009 г.) Функция COUNT (Transact-SQL) Отправить отзыв См. также Свернуть всеРазвернуть все Фильтр по языкам: ВсеФильтр по языкам: НесколькоФильтр по языкам: Visual BasicФильтр по языкам: C#Фильтр по языкам: C++Фильтр по языкам: J#Фильтр по языкам: JScript Visual Basic(Declaration) C# C++ J# JScript Возвращает количество элементов в группе. Функция COUNT работает как функция COUNT_BIG. Единственное различие между двумя функциями — возвращаемые значения. Функция COUNT всегда возвращает значение типа int. Функция COUNT_BIG всегда возвращает значение типа данных bigint. Может следовать за предложением OVER. Синтаксические обозначения в Transact-SQL Синтаксис COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } ) Аргументы ALL Применяет статистическую функцию ко всем значениям. ALL применяется по умолчанию. DISTINCT Указывает, что функция COUNT возвращает количество уникальных значений, не равных NULL. expression Выражение любого типа, за исключением text, image или ntext. Статистические функции и вложенные запросы запрещены. * Указывается, что при возврате общего числа строк в таблице необходимо посчитать все строки. Функция COUNT(*) не принимает аргументы и не может использоваться с ключевым словом DISTINCT. Для функции COUNT(*) не нужен аргумент expression, так как по определению она не использует сведения о каких-либо конкретных столбцах. Функция COUNT(*) возвращает количество строк в указанной таблице, не отбрасывая дублированные строки. Подсчитывает каждую строку отдельно. При этом учитываются и строки, содержащие значения NULL. Замечания Функция COUNT(*) возвращает количество элементов в группе. Сюда входят значения NULL и повторяющиеся значения. Функция COUNT(ALL expression) оценивает expression для каждой строки в группе и возвращает количество значений, не равных NULL. Функция COUNT(DISTINCT expression) оценивает expression для каждой строки в группе и возвращает количество уникальных значений, не равных NULL. Для возвращаемых значений, больших 2^31-1, функция COUNT формирует сообщение об ошибке. Вместо этого следует использовать COUNT_BIG. Типы возвращаемых данных int Примеры A. Использование функции COUNT и аргумента DISTINCT В следующем примере приводится количество различных должностей, которые могут иметь служащие, работающие в компании Adventure Works Cycles. Копировать код USE AdventureWorks; GO SELECT COUNT(DISTINCT Title) FROM HumanResources.Employee; GO Ниже приводится результирующий набор. Копировать код ----------- 67 (1 row(s) affected) Б. Использование функции COUNT(*) В следующем примере определяется общее количество служащих, работающих в компании Adventure Works Cycles. Копировать код USE AdventureWorks; GO SELECT COUNT(*) FROM HumanResources.Employee; GO Ниже приводится результирующий набор. Копировать код ----------- 290 (1 row(s) affected) В. Использование функции COUNT(*) совместно с другими статистическими функциями В следующем примере показывается, что функция COUNT(*) в списке выбора может сочетаться с другими статистическими функциями. Копировать код USE AdventureWorks; GO SELECT COUNT(*), AVG(Bonus) FROM Sales.SalesPerson WHERE SalesQuota > 25000; GO Ниже приводится результирующий набор. Копировать код ----------- --------------------- 14 3472.1428 (1 row(s) affected) См. также Справочник Статистические функции (Transact-SQL) COUNT_BIG (Transact-SQL) Предложение OVER (Transact-SQL) |
|||
8
shuhard
11.09.09
✎
12:54
|
(5) ясен пень, что не count, а RecordCount()
|
|||
9
sapphire
11.09.09
✎
12:56
|
(8) Ну не любят одинесники справку по тем средствам, которыми пользуются :)))
+ к тому же в (0) речь шла о количестве записей в таблице вообще, а не попавших в конкретный запрос :D |
|||
10
sapphire
11.09.09
✎
13:07
|
Пропал автор, наверное зачитался :)
|
|||
11
shuhard
11.09.09
✎
13:08
|
(10) угу, скачал BOL и офигивает
|
|||
12
picom
11.09.09
✎
13:08
|
Вы уж простите меня, но как на языке 1с мне туда загнать этот запрос (4), если
Свойство Значение Тип Recordset.RecordCount -1 Число Кроме этого методы Recordset.MoveLast(); Recordset.MoveFirst(); не работают |
|||
13
sapphire
11.09.09
✎
13:11
|
(12) Я надеюсь, что Вы догадываетесь о том, что Recordset не является объектом 1С...
|
|||
14
sapphire
11.09.09
✎
13:13
|
Почитайте для начала:
http://script-coding.info/ADO.html |
|||
15
shuhard
11.09.09
✎
13:14
|
(12)[Кроме этого методы
Recordset.MoveLast(); Recordset.MoveFirst(); не работают] как рекордсет открыл в режиме последовательного доступа, так он тебя и послал |
|||
16
picom
11.09.09
✎
13:14
|
Народ, ну неужели сложно мне подсказать строку в формате 1с для получения количества строк ...
|
|||
17
dk
11.09.09
✎
13:14
|
(12) http://www.script-coding.info/ADO.html
Читай про RecordCount и вообще |
|||
18
los_hooliganos
11.09.09
✎
13:18
|
Recordset.Execute("SELECT COUNT(*) FROM database.table")
|
|||
19
picom
11.09.09
✎
13:23
|
(18) Execute не работает!
|
|||
20
sapphire
11.09.09
✎
13:39
|
//(19) Над Вами уже потешаются.
Command=Recordset.ActiveCommand; Recordset_Всего=Command.Execute("SELECT COUNT(*) FROM database.table"); Если НЕ Recordset_Всего.EOF Тогда ВсегоЗаписейВТаблице=Recordset_Всего.Fields(0).Value; КонецЕсли; |
|||
21
shuhard
11.09.09
✎
13:48
|
(19) пипец
код покажи |
|||
22
sapphire
11.09.09
✎
14:06
|
(21) А зачем?! Хочешь сказать, что (20) не отработает?;)
|
|||
23
shuhard
11.09.09
✎
14:15
|
(22) конечно не отработает, чел ведь так и всадил "FROM database.table"
|
|||
24
picom
11.09.09
✎
16:29
|
(20)
Подскажите еще в таблице ~90 т. строк Но результат предложенного кода ~181 т. |
|||
25
picom
12.09.09
✎
06:22
|
up
|
|||
26
picom
12.09.09
✎
12:00
|
up
|
|||
27
los_hooliganos
14.09.09
✎
06:29
|
(24) скорее всего неправильный джоин, показывай код с запросом.
|
|||
28
picom
14.09.09
✎
06:57
|
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения); Recordset = Новый COMОбъект("ADODB.Recordset"); Recordset.ActiveConnection = Connection; Source = "SELECT * FROM | [AKR_excel].[dbo].[table_values_137] |"; Command=Recordset.ActiveCommand; Recordset_Всего=Command.Execute("SELECT COUNT(*) FROM database.table_values_137"); Если НЕ Recordset_Всего.EOF Тогда ВсегоЗаписейВТаблице=Recordset_Всего.Fields(0).Value; КонецЕсли; Результат более чем в 2 раза превышает количество строк реальное |
|||
29
los_hooliganos
14.09.09
✎
08:31
|
Откуда известно про реальное количество строк???
Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрокаПодключения); Recordset = Новый COMОбъект("ADODB.Recordset"); Recordset.ActiveConnection = Connection; Source = "(SELECT * FROM | [AKR_excel].[dbo].[table_values_137] |)"; Command=Recordset.ActiveCommand; Recordset_Всего=Command.Execute("SELECT COUNT(*) FROM "+Source); Если НЕ Recordset_Всего.EOF Тогда ВсегоЗаписейВТаблице=Recordset_Всего.Fields(0).Value; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |