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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Суммирование нескольких Label.Caption 
:(
    Опции темы
Flotskiy
Дата 7.12.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Всем добрый день!
Подскажите, pse, на такой примерно вопрос:
SQL- запросом получил кол-во студентов 1 курса,
Вторым- получил кол-во студентов 2 курса, и т.д.
Данные вывел в Label(1-10) , потом все данные нужно просуммировать примерно так:
Код

Label11.Caption=Label1.Caption & Label2.Caption ... и т.д.

Конечно, ничего не получается, а когда Label заменил на TextBox
то все нормально. Если я правильно сообразил, на форме нужно менять Label на TextBox, и корректировать код. Большой объем работы.
Посоветуйте.
С уважением

--------------------
FlotskiySk k
PM MAIL   Вверх
Exception
Дата 7.12.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А что именно не выходит?
PM   Вверх
Flotskiy
Дата 7.12.2005, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Run-time error, Привет.
Запросом В Label1 выводится кол-во студентов 1 курса ( 50) чел.
В Label2 выводится кол-во студентов 2 курса (60) и т.д.
Цитата
Label11.Caption=Label1.Caption & Label2.Caption ... и т.д.

Хотел просуммировать и вывести в Label11 (50+60 =110), а данный код выводит (5060)
Примерно так
С уважением


--------------------
FlotskiySk k
PM MAIL   Вверх
Exception
Дата 7.12.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

Label11.Caption = CInt(Label1.Caption) + CInt(Label2.Caption)

PM   Вверх
Akina
Дата 7.12.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Label.Caption имеет тип String. Вообще-то.
Так что
Код

LabelSum.Caption = Trim(Str(Val(Label1.Caption)+Val(Label2.Caption)+...))

Можно слегка упростить себе жизнь по типу:
Код

temp=0
for each OneControl in Controls
   if OneControl.tag = "StudentsAmount" Then
      temp=tem + val(OneControl.Caption)
   end if
next
LabelSum.Caption = Trim(Str(temp))



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Exception
Дата 7.12.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну да smile
Код был состряпан на уроке из головы smile
PM   Вверх
Akina
Дата 7.12.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Flotskiy @ 7.12.2005, 13:08)
SQL- запросом получил кол-во студентов 1 курса,
Вторым- получил кол-во студентов 2 курса, и т.д.

А почему бы SQL-запросом не получить еще и общее количество студентов, а?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bankuss
Дата 7.12.2005, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Val лучше заменить Cint, а так все прально
PM MAIL   Вверх
Exception
Дата 7.12.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Akina @ 7.12.2005, 16:33)
А почему бы SQL-запросом не получить еще и общее количество студентов, а?

Это лишняя нагрузка на базу данных. Но при 100-1000 записях это не принципиально
PM   Вверх
Akina
Дата 7.12.2005, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(bankuss @ 7.12.2005, 17:52)
Val лучше заменить Cint

Ты прав, CInt в данном случае будет работать почти вдвое быстрее... впрочем кто это заметит?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 7.12.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Akina @ 7.12.2005, 17:02)
впрочем кто это заметит?

ИХМО такой подоход - неправильный.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Flotskiy
Дата 8.12.2005, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Доброе утро всем!
Благодарю за участие, в решении данного вопроса. Сию буду разбираться.
Немного поясню. В Access построил запрос на выборку:
Код

SELECT Count(StudentG.Familj) AS Count_Familj
FROM StudentG
GROUP BY StudentG.Kurs, StudentG.Fak
HAVING (((StudentG.Kurs) Like "1") AND ((StudentG.Fak)="Г"))
ORDER BY Count(StudentG.Familj);

Таких запросов очень много и связываю с формой (Label) при помощи Control Data, в итоге на форме около 30 Data. Что-то нагородил...
Второй метод запросов пробовал в самой форме:
Код

Option Explicit

    connectString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
                 & "Data Source=C:\Biblioteka1\bibliot.mdb"
Dim connectString As String
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
  Dim sSqlString As String
  Set adoConnection = New ADODB.Connection
  Set adoRecordset = New ADODB.Recordset
' XXXXXXXXXXXXXXXXXXXX 0_ЭК_Оч  XXXXXXXXXXXXXXXXXX
        sSqlString = "SELECT StudID " & _
                     " FROM StudentG " & _
                     " WHERE Kurs='1' AND Fak='" & strFak & "' AND FormaOb='" & lblVid(0).Caption & "'" 
adoConnection.Open connectString
adoRecordset.CursorLocation = adUseClient
adoRecordset.Open sSqlString, adoConnection
lblKol(0).Caption = adoRecordset.RecordCount
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Вот такой SQL-код вытаскивает данные: кол-во студентов 1 курса, факультета "Экономика", форма обучения "Очное"
Таким образом повторяется код еще 30 раз, на другие данные.
Очень тяжелая прога. Наверно есть какай-то другой способ добывание данных
Посоветуйте, pse.
С уважением


--------------------
FlotskiySk k
PM MAIL   Вверх
Flotskiy
Дата 8.12.2005, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Привет всем!
Взял Run-time error
Цитата

Label11.Caption = CInt(Label1.Caption) + CInt(Label2.Caption)

Получилось то что надо
Благодарю всех, наилучшие пожелания!



--------------------
FlotskiySk k
PM MAIL   Вверх
Akina
Дата 8.12.2005, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Flotskiy @ 8.12.2005, 09:31)
Получилось то что надо

Предлагаю все-таки поправить - ты используешь неявное приведение типа Integer к типу String, а такая привычка опасна...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Flotskiy
Дата 8.12.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Akina, исправил на
Код

Label11.Caption = Val(Label1.Caption) + Val(Label2.Caption)

Благодарю за помощь. Всего доброго

--------------------
FlotskiySk k
PM MAIL   Вверх
Exception
Дата 8.12.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Flotskiy @ 8.12.2005, 14:55)
Akina, исправил на

код Visual Basic
1:

Label11.Caption = Val(Label1.Caption) + Val(Label2.Caption)





Благодарю за помощь. Всего доброго

Скорее
Код

Label11.Caption = Str$(Val(Label1.Caption) + Val(Label2.Caption))


PM   Вверх
Exception
Дата 8.12.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Flotskiy @ 8.12.2005, 07:27)
Наверно есть какай-то другой способ добывание данных

Используй выражение COUNT
PM   Вверх
Akina
Дата 8.12.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Правильно так:
Код

Label11.Caption = CStr(CInt(Label1.Caption) + CInt(Label2.Caption))

Почему:
CInt преобразует к Integer, а Val - к Variant(Integer)
CStr преобразует к String, а Str - к Variant(String)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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


Эксперт
****


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

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



Тогда вместо Str Str$. Но я этого раньше не замечал, респект
PM   Вверх
Akina
Дата 8.12.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Run @ 8.12.2005, 19:41)
Тогда вместо Str Str$. Но я этого раньше не замечал

В VB6 нет функции Str$. Однако компилятор ее нормально проглатывает - потому что в целЯх совместимости, но использует все одно Str. Это видно по времени исполнения:

Код

Dim t As Double
Dim i As Long
Dim s As String

t = Timer
For i = 1 To 100000
    s = CStr(CInt("123"))
Next
t = Timer - t
Debug.Print t
t = Timer
For i = 1 To 100000
    s = Str(CInt("123"))
Next
t = Timer - t
Debug.Print t
t = Timer
For i = 1 To 100000
    s = Str$(CInt("123"))
Next
t = Timer - t
Debug.Print t

Цитата(Debug)
0,109
0,172
0,172

Соотношение времен приблизительно 2:3, т.к. в первом случае 2 преобразования (String - Integer - String), а во втором и третьем - три (String - Integer - Variant - String).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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