Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сумма чисел из столбца 
:(
    Опции темы
ArtNeoX
Дата 20.2.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



База данных
ячейки в столбце числовые
как определить сумму всех чисел в определенном столбце базы данных (DataGrid)
PM MAIL   Вверх
kulibin
Дата 20.2.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Вот функция незамысловатая - но я ею часто пользуюсь и она у меня присутствует в любом проекте:
Код

Public Function GetVal(fld As String, tbl As String, Optional whr As String = "") As String
Dim rs As New ADODB.Recordset
rs.Open "select " & fld & " from " & tbl & " " & whr, con, adOpenStatic, adLockReadOnly
If Not IsNull(rs.Fields(0)) And rs.RecordCount > 0 Then GetVal = rs.Fields(0) Else GetVal = ""
rs.Close
Set rs = Nothing
End Function

ну и потом:
Код

sum=GetVal("SUM(your_fild)","your_db_table")
'или если выборка по условию то так:
sum=GetVal("SUM(your_fild)","your_db_table","WHERE your_fild2=" & var)

ну и если данные по ходу редактируются - то вставь ето дело в обработчик события грида либо рекордсета - щас не помню какого smile
рекордсета наверное - токо естественно рекордсет надо объявить withevens
Код

Dim WithEvents rs_test As ADODB.Recordset
'вроде это:
Private Sub rs_test_WillChangeField(ByVal cFields As Long, ByVal Fields As Variant, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
       sum=GetVal("SUM(your_fild)","your_db_table","WHERE your_fild2=" & var)
'подберёш короче там событие по вкусу
'а может и сам знаеш - вобщем свисти если вопросы будут :)
End Sub

PM MAIL WWW ICQ   Вверх
ArtNeoX
Дата 20.2.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



А как показать только строки в DataGrid, в которых в определенном столбце (текстовый) содержится слово "Да".
Остальные скрыть. И подсчитать колличество получившихся в результате запроса строк.
PM MAIL   Вверх
kulibin
Дата 21.2.2006, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



однако ты даёш smile - а SQL по твоему зачем придумали? smile
Код

set datagrid.datasource=nothing
rs.close
rs.open "select * from tbl where fld1='да'",con, . . .
set datagrid.datasource=rs

как-то так - точно не помню - давно датагридом не пользовался
топорный он очень - возможностей форматирования никаких
я пользую flexgrid - тоже не без приколов техника (с большим количеством строк проблемы)- но разукрасить её можно очень жестоко smile.

PM MAIL WWW ICQ   Вверх
kulibin
Дата 21.2.2006, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



а - чуть не забыл - можно же ещё rs.filter="fild1='да'" - только если курсор на клиенте
однако sql учить всёравно нужно smile
PM MAIL WWW ICQ   Вверх
ArtNeoX
Дата 22.2.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



что то ничего не получается.
rs.Open "select " & fld & " from " & tbl & " " & whr, con, adOpenStatic, adLockReadOnly
вообще светится красным.
PM MAIL   Вверх
kulibin
Дата 24.2.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



не должна эта строка светиться красным - это я так понял по моей функции той? ты референс на адо поставил? ты всю функцию перерисовал - или кусок? там переменные передаются как аргументы функции - если ты не всю функцию перерисовал - то переменные эти не забудь объявить. а скорее всего ты референс забыл поставить на адо.
а вообще тебе бы засесть за справку по адо на пару-тройку дней - и не морочить людям одно место
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.