powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сумма поля
25 сообщений из 30, страница 1 из 2
Сумма поля
    #33318792
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как присвоить сумму поля в переменную для дальнейших операций с ним.
Программа на Visual Basic 6.0, база формата dbf.
...
Рейтинг: 0 / 0
Сумма поля
    #33318845
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточните вопрос.
...
Рейтинг: 0 / 0
Сумма поля
    #33318867
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача такая:
Есть база в котором есть имена, цех(название цеха), число1 (время работы), число2 (сумма работы).
Есть форма с помощью которого можно фильтровать по имени и цеху.

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

ИМХО я бы отдал предпочтение 1 варианту
...
Рейтинг: 0 / 0
Сумма поля
    #33318884
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql = "Select Sum('duration') From smc"
Запрос такого типа??
Дело в том, что я не знаю как выдавать его значение лейблу
...
Рейтинг: 0 / 0
Сумма поля
    #33318892
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и не понял какая сумма:
Сумма одного поля по всем строкам или сумма полей в одной строке.
А к лейблу поле рекордсета привязать можно.
...
Рейтинг: 0 / 0
Сумма поля
    #33318904
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сумма одного поля по всем строкам
...
Рейтинг: 0 / 0
Сумма поля
    #33318913
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я привязал лейбл к базе, но там только одна запись, а необходимо чтобы там была их сумма
...
Рейтинг: 0 / 0
Сумма поля
    #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
Сумма поля
    #33318972
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А здесь rsSum - это datPrimaryRS.Recordset??
...
Рейтинг: 0 / 0
Сумма поля
    #33318984
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь
Dim rsSum as ADODB.Recordset
Set rsSum = New ADODB.Recordset
для считывания отдельного запроса (итоговые суммы)

a
rs - это ваш рекордсет с данными, в которых надо сосчитать сумму
...
Рейтинг: 0 / 0
Сумма поля
    #33318987
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще: rsSum объявлять на уровне формы.
...
Рейтинг: 0 / 0
Сумма поля
    #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
Сумма поля
    #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
Сумма поля
    #33319120
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думал что вы знаете формат открытия ADO рекордсета.
Вам подойдет это:
Код: plaintext
1.
   rsSum.Open "Select Sum('duration') From smc" _
            , Conn1, adOpenStatic, adLockReadOnly, adCmdText
Conn1 здесь - ADODB.Connection предварительно открытый.
...
Рейтинг: 0 / 0
Сумма поля
    #33319162
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А здесь запрос правильный?
===
Select Sum('duration') From smc,
===
где duration-поле, smc-таблица
...
Рейтинг: 0 / 0
Сумма поля
    #33319168
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой запрос допустим, но обращение к нему по имени поля 'duration' будет ошибочным.
Лучше так
"Select Sum('duration') AS SumDuration From smc"
...
Рейтинг: 0 / 0
Сумма поля
    #33319373
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь ошибка следующего типа:
...
Рейтинг: 0 / 0
Сумма поля
    #33322874
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что здесь
rsSum.Open "Select Sum('duration') From smc", Conn1, adOpenStatic, adLockReadOnly, adCmdText
означает
Conn1.

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

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

а как Вы вообще работаете с базой?
...
Рейтинг: 0 / 0
Сумма поля
    #33323094
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я это уже пробовал.
Выводит ошибку как в первом рисунке этого треда, т.е. Объект закрыт или не допускается в данном контексте.
...
Рейтинг: 0 / 0
Сумма поля
    #33323316
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите свой код, начиная от коннекта к базе. А то разговор слепого с глухим получается.
...
Рейтинг: 0 / 0
Сумма поля
    #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
Сумма поля
    #33325015
s_akmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь та же проблема в другом виде.
В начале все прекрано суммируется, но когда база фильтруется эта функция все равно считает всю базу. Что надо подправить, чтобы она суммировала фильтрованную базу.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сумма поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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