Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сумма поля / 25 сообщений из 30, страница 1 из 2
12.10.2005, 08:39:54
    #33318792
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Как присвоить сумму поля в переменную для дальнейших операций с ним.
Программа на Visual Basic 6.0, база формата dbf.
...
Рейтинг: 0 / 0
12.10.2005, 09:10:48
    #33318845
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Уточните вопрос.
...
Рейтинг: 0 / 0
12.10.2005, 09:18:43
    #33318867
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Задача такая:
Есть база в котором есть имена, цех(название цеха), число1 (время работы), число2 (сумма работы).
Есть форма с помощью которого можно фильтровать по имени и цеху.

Необходимо, чтобы каждый раз при добавлении, удалении, или фильтровании в отдельных label-ах вычислялась их количество, сумма число1, сумма число2
...
Рейтинг: 0 / 0
12.10.2005, 09:23:53
    #33318878
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
я так думаю, есть ьакие варианты
1)надо каждый раз при добавлении, удалении, фильтрации выполнять запрос и полученные результаты выкладывать в лейблы
2) в рекордсете с данными, в котором происходит фильтрация, удаление и добавление, бежать по полям и суммировать их

ИМХО я бы отдал предпочтение 1 варианту
...
Рейтинг: 0 / 0
12.10.2005, 09:27:04
    #33318884
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
sql = "Select Sum('duration') From smc"
Запрос такого типа??
Дело в том, что я не знаю как выдавать его значение лейблу
...
Рейтинг: 0 / 0
12.10.2005, 09:31:10
    #33318892
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Так и не понял какая сумма:
Сумма одного поля по всем строкам или сумма полей в одной строке.
А к лейблу поле рекордсета привязать можно.
...
Рейтинг: 0 / 0
12.10.2005, 09:34:10
    #33318904
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Сумма одного поля по всем строкам
...
Рейтинг: 0 / 0
12.10.2005, 09:36:42
    #33318913
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Я привязал лейбл к базе, но там только одна запись, а необходимо чтобы там была их сумма
...
Рейтинг: 0 / 0
12.10.2005, 09:47:13
    #33318949
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Вариант с отдельным запросом:
Код: plaintext
1.
2.
rsSum.Open "SELECT ....", ..., ...
Label1.DataField = "..."
Set Label1.DataSource = rsSum
Вариант с пробежкой по строкам рекордсета:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub ИТОГО()
  Dim rsX as ADODB.Recordset, d AS Double
  Set rsX = rs.Clone
  Do until rsX.EOF
    if not IsNull(rsX("Поле")) Then d = d + rsX("Поле")
  Loop
  Label1.Caption = d
End Sum
...
Рейтинг: 0 / 0
12.10.2005, 09:51:58
    #33318972
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
А здесь rsSum - это datPrimaryRS.Recordset??
...
Рейтинг: 0 / 0
12.10.2005, 09:57:13
    #33318984
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Здесь
Dim rsSum as ADODB.Recordset
Set rsSum = New ADODB.Recordset
для считывания отдельного запроса (итоговые суммы)

a
rs - это ваш рекордсет с данными, в которых надо сосчитать сумму
...
Рейтинг: 0 / 0
12.10.2005, 09:58:04
    #33318987
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
И еще: rsSum объявлять на уровне формы.
...
Рейтинг: 0 / 0
12.10.2005, 10:13:32
    #33319055
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Написал
================================
Dim rsSum As ADODB.Recordset
___________________________________
Private Sub Command1_Click()
Set rsSum = New ADODB.Recordset

rsSum.Open "Select Sum('duration') From smc"
Label3.DataField = "duration"
Set Label3.DataSource = rsSum

End Sub
___________________________________
================================

Ругается, что объект закрыт (см.в приложении)
...
Рейтинг: 0 / 0
12.10.2005, 10:22:38
    #33319087
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
авторНаписал
================================
Dim rsSum As ADODB.Recordset
___________________________________
Private Sub Command1_Click()
Set rsSum = New ADODB.Recordset

rsSum.Open "Select Sum('duration') From smc"
Label3.DataField = "duration"
Set Label3.DataSource = rsSum

End Sub

Попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Command1_Click()
Set rsSum = New ADODB.Recordset

rsSum.Open "Select Sum('duration') From smc"
Label3.Caption = rsSum( 0 )

End Sub
Когда то делал такое.Извини если не так, писал прям здесь.
...
Рейтинг: 0 / 0
12.10.2005, 10:29:17
    #33319120
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Я думал что вы знаете формат открытия ADO рекордсета.
Вам подойдет это:
Код: plaintext
1.
   rsSum.Open "Select Sum('duration') From smc" _
            , Conn1, adOpenStatic, adLockReadOnly, adCmdText
Conn1 здесь - ADODB.Connection предварительно открытый.
...
Рейтинг: 0 / 0
12.10.2005, 10:49:25
    #33319162
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
А здесь запрос правильный?
===
Select Sum('duration') From smc,
===
где duration-поле, smc-таблица
...
Рейтинг: 0 / 0
12.10.2005, 10:51:47
    #33319168
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Такой запрос допустим, но обращение к нему по имени поля 'duration' будет ошибочным.
Лучше так
"Select Sum('duration') AS SumDuration From smc"
...
Рейтинг: 0 / 0
12.10.2005, 11:47:03
    #33319373
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Теперь ошибка следующего типа:
...
Рейтинг: 0 / 0
13.10.2005, 15:11:20
    #33322874
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Что здесь
rsSum.Open "Select Sum('duration') From smc", Conn1, adOpenStatic, adLockReadOnly, adCmdText
означает
Conn1.

Во время набора текста там появляется ActiveConnection. Здесь Conn1-переменная или любой текст??
...
Рейтинг: 0 / 0
13.10.2005, 15:13:15
    #33322888
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Может вам книжки уже пора пора почитать? Или хотя бы MSDN полистайте, что ли.
...
Рейтинг: 0 / 0
13.10.2005, 15:34:52
    #33322997
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
в данном случае это
Conn1 as new adodb.connection

только не забудьте его открыть, или же используйте уже открытый конекшен

а как Вы вообще работаете с базой?
...
Рейтинг: 0 / 0
13.10.2005, 15:56:41
    #33323094
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Я это уже пробовал.
Выводит ошибку как в первом рисунке этого треда, т.е. Объект закрыт или не допускается в данном контексте.
...
Рейтинг: 0 / 0
13.10.2005, 16:56:48
    #33323316
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Приведите свой код, начиная от коннекта к базе. А то разговор слепого с глухим получается.
...
Рейтинг: 0 / 0
14.10.2005, 13:31:02
    #33325009
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Спасибо всем. получилось:

=============================
Sub baza_sum()
On Error Resume Next

Dim conn1 As ADODB.Connection
Dim rsSum As ADODB.Recordset
Dim sqlstr As String

Set rsSum = New ADODB.Recordset
Set conn1 = New ADODB.Connection

strConn1 = "Provider='MSDASQL';dsn=Ôàéëû dBASE;uid=;pwd=;"
sqlstr = "Select Sum(duration), Sum(usd) From smc;"

conn1.Open strConn1
rsSum.Open sqlstr, conn1, adOpenStatic, adLockReadOnly, adCmdText
Label2.Caption = datPrimaryRS.Recordset.RecordCount
Label3.Caption = rsSum(0)
Label4.Caption = rsSum(1)

End Sub
====================
...
Рейтинг: 0 / 0
14.10.2005, 13:33:36
    #33325015
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма поля
Теперь та же проблема в другом виде.
В начале все прекрано суммируется, но когда база фильтруется эта функция все равно считает всю базу. Что надо подправить, чтобы она суммировала фильтрованную базу.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сумма поля / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]