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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL-запрос, Использование одной Data1 в запросах 
V
    Опции темы
Flotskiy
Дата 13.7.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет всем! Нужна ваша помощь или совет.
(VB6; BD-Access97)
В таблице Glavnaja есть поле ForFak, куда заносятся такие сведения:
"ЭКОч"
"ЭКЗаоч"... и тд. всего 12 разновидностей. нужно вывести count по каждой из них
 В данном коде, приведенном ниже (Благодарю вас, это вы мне подсказали)
выводится Count записи " ЭКОч"

Код

Private Sub Form_Load()
 Data1.DatabaseName = gDataBaseName
 Data1.RecordSource = "Glavnaja"
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'----------------------------------------------------------------
Data1.RecordSource = "SELECT count(GlavID) " & _
    "FROM Glavnaja WHERE ForFak ='ЭКОч' AND Priem='Лето, 2006'"
    Data1.Refresh
        If Not IsNull(Data1.Recordset.Fields(0)) Then
        If Not IsEmpty(Data1.Recordset.Fields(0)) Then
            Label1.Caption = Data1.Recordset.Fields(0)
        End If
        End If
End Sub

Нельзя ли здесь использовать "For...Next", чтобы вывести данным кодом все 12 наименований или придется на форму ставить 12 элементов Data и 12 Label (что сейчас и есть у меня) или что-нибудь другой способ.
Всего доброго всем

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


Эксперт
***


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

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



SQL:
Код

SELECT ForFak , count(GlavID) FROM Glavnaja WHERE Priem='Лето, 2006' GROUP BY ForFak 

выведет recordset с 12 записями, пробежишься по recordset и выведешь нужные записи 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Flotskiy
Дата 14.7.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет, boevik. У меня задача в таком роде:
На форме есть 12 Label,  в которые нужно внести данные SQL-запросов, причем в конкретный Label свои данные, например:
"ЭКОч"    в Label1(0)
"ЭКЗаоч" в Label1(1)
"ЭКОС"    в Label1(2)
"ЭКЗС"     в Label1(3)
..... и тд, 12 данных. Если на какой запрос ответ Null, то ставим=0
Я мыслю так: програмно на форме создать 12 шт. элементов Data1 и Label1, создать массив Dim M(12) из 12 наименований: ЭКОч, ЭКЗаоч, ЭКОС, ЭКЗС...Э и тд, код SQL-запроса
Код

Data1(0).RecordSource = "SELECT count(GlavID) " & _
    "FROM Glavnaja WHERE ForFak =" & M(0) & AND Priem='Лето, 2006'"
    Data1(0).Refresh
           Label1(0).Caption = Data1(0).Recordset.Fields(0)
 

. Инструкцией For...Next перебирать Data1(0), массив M(0), Label1(0) и тд.
Осуществимо ли так? Если нет - значит нет, а если возможно, то прошу помощи (вы все ассы в таких вопросах).
Всего доброго всем.
 
--------------------
FlotskiySk k
PM MAIL   Вверх
Akina
Дата 14.7.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А зачем ты используешь Data? почему не переменные Database и Recordset?

Код

Public cn As ADODB.Connection
Public rs As ADODB.Recordset

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

With cn
    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\MyBases\MyBase.MDB'"
    .Open
End With

Tmp = "SELECT ForFak , count(GlavID) as Count_GlavID FROM Glavnaja WHERE Priem='Лето, 2006' GROUP BY ForFak"
With rs
    .Open Tmp, cn, adOpenStatic, adLockReadOnly, adCmdText
    If .RecordCount = 12 Then
        .MoveFirst
        For i = 0 to 11
            Label1(i).Caption = !Count_GlavID
            .MoveNext
        Next i
    End If
    .Close
End With


'....

If Not rs.State = adStateClosed Then rs.Close
If Not cn.State = adStateClosed Then cn.Close
 


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

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


Бывалый
*


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

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



Akina, благодарю за помощь, то что нужно.
Немного откорректировал для своих нужд и вот , может кому пригодится:
Код

Option Explicit
Public cn As ADODB.Connection
Public rs As ADODB.Recordset
__________________________________---
Private Sub Form_Load()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Dim Tmp As String
With cn
    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
    "Data Source=" & gDataBaseName
    .Open
End With
Tmp = "SELECT ForFak , count(GlavID) as Count_GlavID FROM Glavnaja  WHERE Priem='Ëåòî, 2006' GROUP BY ForFak"
With rs
    .Open Tmp, cn, adOpenStatic, adLockReadOnly, adCmdText
    If .RecordCount > 0 Then
        .MoveFirst
 Dim i
        For i = 0 To .RecordCount - 1
        Label1(i).Caption = !Count_GlavID
              .MoveNext
             Next i
             
   Dim j
        .MoveFirst
    
           For j = 0 To .RecordCount - 1
        Label2(j).Caption = !ForFak
      
            .MoveNext
            Next j
    End If
    .Close
End With

'....

If Not rs.State = adStateClosed Then rs.Close
If Not cn.State = adStateClosed Then cn.Close

End Sub


Тебе "+" за помощь
Всего доброго всем!  
--------------------
FlotskiySk k
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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