Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему не работает?
 
 автор: belvesta   (27.03.2007 в 21:06)   личное сообщение
 
 

Select Case Me.АorХ
Case "Ателье"
DoCmd.OpenReport "Мониторинг-А", acViewPreview
Case "Химчистка"
DoCmd.OpenReport "Мониторинг-Х", acViewPreview
Case "Null"
DoCmd.OpenReport "Мониторинг-АиХ", acViewPreview
End Select

  Ответить  
 
 автор: osmor   (27.03.2007 в 21:39)   личное сообщение
 
 

не работает все или только Case "Null" ?
любая операция с Null вернет NULL
т.е.

" " = ""

вернет False (ложь)

"" = ""

вернет True (Истина)

Null = ""
и
Null+1
и
Null*10
и
"слово" + Null + "не воробей"

вернет Null

и только

"слово" & Null & "не воробей"

вернет "словоне воробей"

  Ответить  
 
 автор: belvesta   (28.03.2007 в 00:38)   личное сообщение
 
 

ничего не работает.
В итоге мне нужно, чтобы при выборе (Ателье или химчистка) или не выборе ничего появлялся отчет либо 1, либо 2, либо 3.
Но ничего не работает.

  Ответить  
 
 автор: belvesta   (28.03.2007 в 00:41)   личное сообщение
 
 

может это из-за того, что я в свйствах "Данные" оставила пустое поле?

  Ответить  
 
 автор: Кукамака   (28.03.2007 в 01:05)   личное сообщение
 
 

А что возвращает Trim(Me.АorХ)?

  Ответить  
 
 автор: palarm   (28.03.2007 в 04:55)   личное сообщение
 
 

Me.АorХ.Text или Me.АorХ.Value
скорей всего как правильно догадалась Кукамака Me.АorХ. ничего не возвращает. Если это поле со списком, проверьте, какой столбец поставлен в подстановку.
Например в списке два столбца: id, Значение. У вас стоят в ширине столбцов 0;1. Отображается значение. Вы обращаетесь через Select к списку по значению, а ведь на самом деле там число (ключевик id). Вообщем вариантов много. Конструкция Select правильна, значит косяк в другом.

  Ответить  
 
 автор: ИгорьК   (28.03.2007 в 08:42)   личное сообщение
 
 

Посмотри Борей форма Отчёты о продажах.

  Ответить  
 
 автор: belvesta   (28.03.2007 в 10:15)   личное сообщение
 
 

Теперь заработало, только не все. Если я ничего не выбираю, то не открывается общий отчет.
А вообще скажите такой не просвещенной, как можно попроще сделать.
Я хочу в отчетности выходила форма, где нужно выбрать несколько параметров формирования отчета. Неужели мне на каждый параметр нужно свой запрос делать? Или все в одном можно?
Например, мне нужна выборка:

Ателье или химчистка (или и то и другое):
ФИО клиента (или все клиенты)
№ квитанции
Сформировать за период (или с самого начала на текущую дату)

  Ответить  
 
 автор: Ирча   (28.03.2007 в 10:20)   личное сообщение
 
 

Можно и так и этак... для выбора по нескольким пораметрам можно сделать запрос с динамически формируемой строкой Where
Либо открывать отчеты, используя третий параметр

  Ответить  
 
 автор: belvesta   (28.03.2007 в 10:21)   личное сообщение
 
 

можете привести пример этой динамической строки?

  Ответить  
 
 автор: belvesta   (28.03.2007 в 10:22)   личное сообщение
 
 

да, и почему у меня все-таки не открывается отчет, если я ничего не выбираю из списка?

  Ответить  
 
 автор: Ирча   (28.03.2007 в 10:29)   личное сообщение
 
 

думаю что Null не работает... попробуйте добавить в список "Все" и обрабатывайте его

  Ответить  
 
 автор: Ирча   (28.03.2007 в 10:33)   личное сообщение
 
 

По поводу динамического отбора... я это делаю так:

Dim srtSQL As String
Dim strRS As String
Dim strRS1 As String
Dim strRS2 As String
Dim strTD As String 'Тип документа
Dim strIS As String ' Исполнитель
Dim strDR As String ' Дата регистрации
Dim strSR As String ' Срок исполнения
Dim strVD As String ' Дата входящего документа
Dim strOT As String 'Отправитель
Dim strSOD As String 'Содержание
Dim strGOD As String ' Год
Dim strDIS As String ' Доп исполнитель
Dim strDost As String

If IsNull(Me.ТипДокум) Or Me.ТипДокум = "" Then
strTD = ""
Else: Poisk1 = Me.ТипДокум
strTD = " AND ((Типдок.ТипДок) Like '*" & psk1() & "*')"
End If
'**************
If IsNull(Me.Исполн) Or Me.Исполн = "" Then
strIS = ""
Else: Poisk2 = Me.Исполн
strIS = " AND ((Отдел.Отдел) Like '*" & psk2() & "*')"
End If
'***********
If Not IsNull(Me.Дата1) And Not IsNull(Me.Дата2) Then
Poisk3 = Me.Дата1
Poisk4 = Me.Дата2
strDR = "((Вх.[Дата регистрации]) Between psk3() And psk4())"
strSR = "((Вх.[Срок исполнения]) Between psk3() And psk4())"
strVD = "((Вх.Дата) Between psk3() And psk4())"
    ElseIf IsNull(Me.Дата1) And Not IsNull(Me.Дата2) Then
    Poisk4 = Me.Дата2
    strDR = "((Вх.[Дата регистрации])= psk4())"
    strSR = "((Вх.[Срок исполнения])= psk4())"
    strVD = "((Вх.Дата)= psk4())"
        ElseIf Not (IsNull(Me.Дата1) And IsNull(Me.Дата2)) Then
        Poisk3 = Me.Дата1
        strDR = "((Вх.[Дата регистрации])= psk3())"
        strSR = "((Вх.[Срок исполнения])= psk3())"
        strVD = "((Вх.Дата)= psk3())"
           ElseIf IsNull(Me.Дата1) And IsNull(Me.Дата2) Then
              strDR = "1=1"
              strSR = "1=1"
              strVD = "1=1"
End If
'******************
If IsNull(Me.Отпр) Or Me.Отпр = "" Then
strOT = ""
Else: Poisk5 = Me.Отпр
strOT = " AND ((Адресат.Адресат) Like '*" & psk5() & "*')"
End If

'******************
If IsNull(Me.Содерж) Or Me.Содерж = "" Then
strSOD = ""
Else: Poisk6 = Me.Содерж
strSOD = " AND ((Вх.Содержание) Like '*" & psk6() & "*')"
End If
'******************
If IsNull(Me.Год) Or Me.Год = "" Then
strGOD = ""
Else: Poisk7 = Me.Год
strGOD = " AND ((Format(Вх.[Дата регистрации],""yyyy"")) Like '*" & psk7() & "*')"
End If
'***************
If IsNull(Me.ДопИсп1) Or Me.ДопИсп1 = "" Then
strDIS = ""
Else: Poisk8 = Me.ДопИсп1
strDIS = " AND ((Вх.ДопИсп) Like '*" & psk8() & "*')"
End If
'*********
If (Me.Dost = True) Then
strDost = " And ((Вх.Доступ)=No)"
Else: strDost = ""
End If

strRS = "SELECT Вх.ID, IIf(IsNull([НомДоп]) Or [НомДоп]="""",[Входящий номер],[Входящий номер] & ""/"" & [НомДоп]) As Ном, Вх.[Дата регистрации], Вх.[Исходящий номер], Вх.Дата, Типдок.ТипДок, Адресат.Адресат, Вх.Содержание, Отдел.Отдел, Вх.ДопИсп, Вх.Ссылка, Вх.[Срок исполнения], Format([Вх.Исполено],""Yes/No"") AS Исполено, Вх.Доступ" _
& " FROM Типдок INNER JOIN (Отдел RIGHT JOIN (Адресат INNER JOIN Вх ON Адресат.№ПП=Вх.Отправитель) ON Отдел.№ПП=Вх.Исполнитель) ON Типдок.№ПП=Вх.[Тип корреспонденции] " _
& " WHERE (" & strDR & strTD & strIS & strOT & strSOD & strGOD & strDIS & strDost _
& ") OR (" & strSR & strTD & strIS & strOT & strSOD & strGOD & strDIS & strDost _
& ") OR (" & strVD & strTD & strIS & strOT & strSOD & strGOD & strDIS & strDost & ");"

  Ответить  
 
 автор: belvesta   (28.03.2007 в 10:36)   личное сообщение
 
 

это слишком сложно...

  Ответить  
 
 автор: belvesta   (28.03.2007 в 10:54)   личное сообщение
 
 

Как сделать в конструкторе? Не знаю как сделать выборку по датам.
То есть я сделала в форме2 поля дат, откуда нужно выбрать период. Много что перепробовала, но не выходит. Как нужно сделать? Мне нужно чтобы в итоге вышел отчет. И как сделать, если мы ничего не выбираем. У меня это так и не получилось

  Ответить  
 
 автор: palarm   (28.03.2007 в 12:23)   личное сообщение
 
 

скачайте это http://am.rusimport.ru/MSAccess/topic.aspx?ID=581
Там среди прочего есть большая форма с тучей параметров для вывода большого числа отчетов

  Ответить  
 
 автор: belvesta   (28.03.2007 в 16:04)   личное сообщение
 
 

отбой! я сделал вот так:
Private Sub Сформировать_Click()
Dim s as String

Select Case Me.AorX
Case "Ателье"
s = "А"
Case "Химчистка"
s = "Х"
Case ELSE
s = "АиХ"
End Select
DoCmd.OpenReport "Мониторинг-" & s, acViewPreview

End Sub

Но все-равно мне очень нужно тут и диапазон дат вводить и выводить в отчете. Я не знаю как это сделать.

  Ответить  
 
 автор: belvesta   (28.03.2007 в 15:32)   личное сообщение
 
 

Там, кстати, нет такого о чем я говорила.
Перед глазами пользователя сначала должна выходить форма, где необходимо выбрать из списка поле, а также выбрать период формирования. И исходя из этих данных нужно формировать отчет, наверное при нажатии на кнопку "сформировать". Да, кстати, у меня так и не работает кнопка если выбираем "пусто"

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList