Access запросы caption и прочее

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
AD
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 11.08.2005 (Чт) 21:43

Access запросы caption и прочее

Сообщение AD » 11.08.2005 (Чт) 22:03

Создал в аксесе кучу запросов которые выводят всего 1 число, работают. Теперь нужно вывести результаты запросов на общую форму, но как это сделать не знаю. Пробовал через отчеты, но там соурсе только один может быть. Как вариант решил сделать на vb, но тоже не знаю как. Сорри если слишком простые вопросы, но сам не могу победить.[/syntax]
У вас нет доступа для просмотра вложений в этом сообщении.

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 13.08.2005 (Сб) 15:17

Сделай еще один запрос, который бы выводил все числа, получаемые из созданных уже запросов, а потом его и укажи, как источник данных для отчета.
select запрос1.*, запрос2.*, запрос3.* from запрос1, запрос2, запрос3.
В этой жизни нет ничего невозможного. Если у вас что-то не получается, значит, вы что-то делаете не так.

AD
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 11.08.2005 (Чт) 21:43

Сообщение AD » 13.08.2005 (Сб) 15:27

Сделал, только один косяк, если какой-то запрос не дает результата, то в отчете тоже пусто. Пробовал делать через iif, но не получается.

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 13.08.2005 (Сб) 22:58

Так ты ж говорил, что у тебя все запросы работают... Попробуй вместо iif функцию nz()
В этой жизни нет ничего невозможного. Если у вас что-то не получается, значит, вы что-то делаете не так.

AD
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 11.08.2005 (Чт) 21:43

Сообщение AD » 14.08.2005 (Вс) 19:41

SELECT IIf(IsNull(Count([код])),"0",(Count(*))) AS [Count-Код]
FROM карточка_home
GROUP BY карточка_home.факультет, карточка_home.специальности, карточка_home.[форма обучения], карточка_home.[база поступления]
HAVING (((карточка_home.факультет) Like "Эконом*") AND ((карточка_home.специальности) Like "Экономика*") AND ((карточка_home.[форма обучения]) Like "Сокра*") AND ((карточка_home.[база поступления])="Среднее"));
вот такой запрос, если есть записи, то получаю их число, если нет, то ничего не получаю, а хочется получить 0.
проверил запросы, если нет нужных записей то они не выводят ничего.

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 15.08.2005 (Пн) 12:27

Выкладывай mdb-шник - будем думать.
В этой жизни нет ничего невозможного. Если у вас что-то не получается, значит, вы что-то делаете не так.

AD
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 11.08.2005 (Чт) 21:43

Сообщение AD » 15.08.2005 (Пн) 13:51

вот сама база, со всеми моими потугами
У вас нет доступа для просмотра вложений в этом сообщении.

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 15.08.2005 (Пн) 18:40

Хм... Вот так с ходу могу пока только один вариант предложить - на открытие отчета назначить такой код:
Код: Выделить всё
Private Sub Report_Open(Cancel As Integer)
Dim ctl As Control
If Me.HasData = 0 Then
For Each ctl In Me.Controls
  If ctl.ControlType = 109 Then ctl.ControlSource = "=0"
Next
End If
End Sub

Он принудительно загоняет в каждое поле ноль, если запрос не возвращает записей.
В этой жизни нет ничего невозможного. Если у вас что-то не получается, значит, вы что-то делаете не так.

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 15.08.2005 (Пн) 19:12

Блин, люди, плюйте на меня! Я дурак. Написать-то написал, а вот проверить... Неверный, короче, код я выдал. Вот правильный:
Код: Выделить всё
Private Sub Report_Open(Cancel As Integer)
Dim ctl As Control
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset(CurrentDb.QueryDefs(Me.RecordSource).SQL)
If rst.RecordCount = 0 Then
For Each ctl In Me.Controls
  If ctl.ControlType = 109 Then ctl.ControlSource = "=0"
Next
End If
End Sub

В этом случае все пашет. Еще раз извиняюсь.
В этой жизни нет ничего невозможного. Если у вас что-то не получается, значит, вы что-то делаете не так.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList