Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
Сделал запрос.



SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать, IIf([ЗаявкиНаПечать]![ГофрНеГофр]="Да",[ГофрацияДизайнов]![ДатаГофр],[ПечатьДизайнов]![ДатаПечати]) AS Data, Дизайны.КодДизайна, Дизайны.Дизайн, Клиенты.Клиент, Оболочка.Диаметр, Оболочка.Цвет, IIf([ЗаявкиНаПечать]![ГофрНеГофр]="Да",[ГофрацияДизайнов]![Колво],[ПечатьДизайнов]![Колво]) AS Kolvo, ЗаявкиНаПечать.ГофрНеГофр
FROM Оболочка INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна)) LEFT JOIN ГофрацияДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать) INNER JOIN ПечатьДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки


К сообщению приложен файл. Размер - 83Kb
13 июн 18, 16:04    [21488853]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128


К сообщению приложен файл. Размер - 146Kb
13 июн 18, 16:04    [21488855]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
День добрый форумчанам!

помогите с запросом. так хорошо данный предмет не знаю, чтобы решить проблему самому((

не знаю как сделать, чтобы строки у которых пустые поля Data, kolvo не отображались?
13 июн 18, 16:07    [21488866]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff
Сделал запрос.


SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать, IIf([ЗаявкиНаПечать]![ГофрНеГофр]="Да",[ГофрацияДизайнов]![ДатаГофр],[ПечатьДизайнов]![ДатаПечати]) AS Data, Дизайны.КодДизайна, Дизайны.Дизайн, Клиенты.Клиент, Оболочка.Диаметр, Оболочка.Цвет, IIf([ЗаявкиНаПечать]![ГофрНеГофр]="Да",[ГофрацияДизайнов]![Колво],[ПечатьДизайнов]![Колво]) AS Kolvo, ЗаявкиНаПечать.ГофрНеГофр
FROM Оболочка INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна)) LEFT JOIN ГофрацияДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать) INNER JOIN ПечатьДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки
13 июн 18, 16:09    [21488874]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4279
taranoff
Сделал запрос.

SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать,
 IIf([ЗаявкиНаПечать]![ГофрНеГофр]="Да",
[ГофрацияДизайнов]![ДатаГофр],
[ПечатьДизайнов]![ДатаПечати]) AS Data,
 Дизайны.КодДизайна,
 Дизайны.Дизайн,
 Клиенты.Клиент,
 Оболочка.Диаметр,
 Оболочка.Цвет,
IIf([ЗаявкиНаПечать]![ГофрНеГофр]="Да",
[ГофрацияДизайнов]![Колво],
[ПечатьДизайнов]![Колво]) AS Kolvo,
 ЗаявкиНаПечать.ГофрНеГофр

FROM Оболочка
 INNER JOIN ((((Дизайны
 INNER JOIN Клиенты
   ON Дизайны.КодКлиента = Клиенты.КодКлиента)
 INNER JOIN ЗаявкиНаПечать
   ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна))
 LEFT JOIN ГофрацияДизайнов
   ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать)
 INNER JOIN ПечатьДизайнов
   ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать)
 ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки


а в чем вопрос
--удвоение строк
--пропажа строк
13 июн 18, 16:12    [21488882]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
ПЕНСИОНЕРКА,

у меня не получается фильтровать данные по датам, если там есть пустые строки.
вот фрагмент кода:

Function view_lst_gofr_prn(Optional ByVal strSource As String)

Dim DateStr1 As String, DateStr2 As String, strTMP As String

Dim s1 As String
Dim s2 As String, s3 As String, s4 As String, s8 As String
Dim s6 As String, s7 As String, s5 As String, strSQL As String, str_sort As String
  
 If rs_gofr.State = 1 Then rs_gofr.Close

' Преобразование формата даты к буржуйскому для работы фильтра
DateStr1 = Format(txt_data_begin, "mm/dd/yy")
DateStr1 = Replace(DateStr1, ".", "/")
DateStr2 = Format(txt_data_end, "mm/dd/yy")
DateStr2 = Replace(DateStr2, ".", "/")
   
  If Nz(DatesAreBad, "") Then MsgBox ("Фильтрация по датам отключена. Проверьте корректность ввода дат!") Else _
    s5 = " AND ([Data]>=#" & DateStr1 & "# And [Data]<=#" & DateStr2 & "#)"

   s7 = " AND (Дизайны.Дизайн Like '%" & txt_findDesign & "%')"
   s8 = " AND (Дизайны.КодДизайна Like '%" & txt_findKodD & "%')"
    
   
    Select Case strSource
        Case "Requery"
            strSQL = lst_gofr_prn.Recordset.Source
        Case ""
            strTMP = "SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать, IIf([ЗаявкиНаПечать]![ГофрНеГофр]='Да',[ГофрацияДизайнов]![ДатаГофр], [ПечатьДизайнов]![ДатаПечати]) AS Data, Дизайны.КодДизайна, Дизайны.Дизайн, Клиенты.Клиент, Оболочка.Диаметр, Оболочка.Цвет, IIf([ЗаявкиНаПечать]![ГофрНеГофр]='Да',[ГофрацияДизайнов]![Колво],[ПечатьДизайнов]![Колво]) AS Kolvo, ЗаявкиНаПечать.ГофрНеГофр FROM Оболочка INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна)) LEFT JOIN ГофрацияДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать) INNER JOIN ПечатьДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки"

        Case Else
            strSQL = lst_gofr_prn.Recordset.Source & strSource
     End Select
      If strSource <> "Requery" Then strSQL = strTMP & " WHERE true " & s7 & s8 & s5 
  

    rs_gofr.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText
    Set lst_gofr_prn.Recordset = rs_gofr
  
           
End Function
13 июн 18, 16:25    [21488936]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff,

спасибо Пенсионерка за быстрое желание помочь!

Вопрос снимается.
решил проблемку - в IIF начал искать по другому полю))
13 июн 18, 16:35    [21488973]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff,

поторопился)))
одну проблему решил - информация отображается та что нужно.

но ... не получается по дате отфильтровать инфу(

как понимаю в это строке "загвоздка":


s5 = " AND ([Data]>=#" & DateStr1 & "# And [Data]<=#" & DateStr2 & "#)"
13 июн 18, 16:40    [21488989]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
новая строка

strTMP = "SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать, IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр]) AS Data, Дизайны.КодДизайна, Дизайны.Дизайн, Клиенты.Клиент, Оболочка.Диаметр, Оболочка.Цвет, IIf([ГофрацияДизайнов]![Колво] Is Null,[ПечатьДизайнов]![Колво],[ГофрацияДизайнов]![Колво]) AS Kolvo, ЗаявкиНаПечать.ГофрНеГофр FROM Оболочка INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна)) LEFT JOIN ГофрацияДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать) INNER JOIN ПечатьДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки"


taranoff,
13 июн 18, 16:44    [21489003]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff,

пробовал так:

s5 = " AND ((IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр]) AS Data)>=#" & DateStr1 & "# And (IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр]) AS Data)<=#" & DateStr2 & "#)"


тоже не работает(
13 июн 18, 16:45    [21489004]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4014
taranoff,

Public Function GetDateSQL(ByVal dtm As Date) As String
  GetDateSQL = "#" & Format$(dtm, "mm\/dd\/yyyy hh:nn:ss") & "#"
End Function
13 июн 18, 16:49    [21489023]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
Озверин,

Извините, не пойму где это применить((
13 июн 18, 16:55    [21489040]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4014
taranoff, ф-ия GetDateSQL корректно форматирует Дату для использования в WHERE SQL запросов.

s5 = " AND (IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр])>=" & GetDateSQL(txt_data_begin) & " And IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр])<=#" & GetDateSQL(txt_data_end) & ")"
13 июн 18, 17:03    [21489064]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 4904
taranoff,
Как Вы пишите условие-так все прекрасно фильтруется: Поле Is Not Null
13 июн 18, 17:40    [21489149]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
Function view_lst_gofr_prn(Optional ByVal strSource As String)

Dim DateStr1 As String, DateStr2 As String, strTMP As String
Dim s1 As String
Dim s2 As String, s3 As String, s4 As String, s8 As String
Dim s6 As String, s7 As String, s5 As String, strSQL As String, str_sort As String
Dim sum_kol As Long, i As Integer
  
 If rs_gofr.State = 1 Then rs_gofr.Close

' Преобразование формата даты к буржуйскому для работы фильтра
DateStr1 = Format(txt_data_begin, "mm/dd/yy")
DateStr1 = Replace(DateStr1, ".", "/")
DateStr2 = Format(txt_data_end, "mm/dd/yy")
DateStr2 = Replace(DateStr2, ".", "/")
   
  If Nz(DatesAreBad, "") Then MsgBox ("Фильтрация по датам отключена. Проверьте корректность ввода дат!") Else _
    s5 = " AND (IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр])>=" & GetDateSQL(txt_data_begin) & " And IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр])<=#" & GetDateSQL(txt_data_end) & ")"

   s7 = " AND (Дизайны.Дизайн Like '%" & txt_findDesign & "%')"
   s8 = " AND (Дизайны.КодДизайна Like '%" & txt_findKodD & "%')"
    
    Select Case strSource
        Case "Requery"
            strSQL = lst_gofr_prn.Recordset.Source
        Case ""
            strTMP = "SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать, IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр]) AS Data, Дизайны.КодДизайна, Дизайны.Дизайн, Клиенты.Клиент, Оболочка.Диаметр, Оболочка.Цвет, IIf([ГофрацияДизайнов]![Колво] Is Null,[ПечатьДизайнов]![Колво],[ГофрацияДизайнов]![Колво]) AS Kolvo, IIf([ГофрацияДизайнов]![Колво] Is Null,'П','Г') AS GofrPrn FROM Оболочка INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна)) LEFT JOIN ГофрацияДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать) INNER JOIN ПечатьДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки"
        Case Else
            strSQL = lst_gofr_prn.Recordset.Source & strSource
     End Select
      If strSource <> "Requery" Then strSQL = strTMP & " WHERE (Дизайны.СписаниеДизайна = False) " & s7 & s8 & s5   
  
   'MsgBox (strSQL)  

    rs_gofr.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText
    Set lst_gofr_prn.Recordset = rs_gofr
  
    txt_count.Caption = "Показано строк: " & lst_gofr_prn.ListCount
            
End Function


немного переработал функцию, но все равно фильтр по датам не работает((
"что не так делают мои кривые ручёнки"?))
14 июн 18, 09:34    [21490062]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff,

после долгих экспериментов заработало...)

с таким кодом:

s5 = " AND ((IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр])>=#" & DateStr1 & "# And IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр])<=#" & DateStr2 & "#))"


убрал AS DATA, и заработало))

п.с. век живи - век учись)

спасибо всем за помощь!
14 июн 18, 09:57    [21490106]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff,

опять "рано закрыл тему"))
фильтрация работает, но "непонятки" с выводом информации.

вот что, пока, заметил:

1) из одной заявки дублирует строку из табл. "гофрация дизайна" столько раз, сколько есть строк в табл. "печать дизайнов"
2) из одной заявки показывает строку из табл. "печать дизайнов", только если нет строк в табл. "гофрация дизайна"

"нутром чую" что "бяка" здесь:

SELECT ЗаявкиНаПечать.КодЗаявкиНаПечать, IIf([ГофрацияДизайнов]![ДатаГофр] Is Null,[ПечатьДизайнов]![ДатаПечати],[ГофрацияДизайнов]![ДатаГофр]) AS Data, Дизайны.КодДизайна, Дизайны.Дизайн, Клиенты.Клиент, Оболочка.Диаметр, Оболочка.Цвет, IIf([ГофрацияДизайнов]![Колво] Is Null,[ПечатьДизайнов]![Колво],[ГофрацияДизайнов]![Колво]) AS Kolvo, IIf([ГофрацияДизайнов]![Колво] Is Null,'П','Г') AS GofrPrn FROM Оболочка INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) AND (Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна)) LEFT JOIN ГофрацияДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ГофрацияДизайнов.КодЗаявкиНаПечать) INNER JOIN ПечатьДизайнов ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки


но не хватает знаний понять что не так((
14 июн 18, 10:42    [21490253]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4014
taranoff, я нутром чую, что вам надо потратить пару дней на изучение sql.
14 июн 18, 11:03    [21490306]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
Озверин
taranoff, я нутром чую, что вам надо потратить пару дней на изучение sql.


согласен)
этим занимаюсь, как есть время на учебу
но пока ...(((
14 июн 18, 11:05    [21490312]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом.  [new]
taranoff
Member

Откуда:
Сообщений: 128
taranoff,

Всем спасибо!
Тема окончательно закрывается.
Пошёл учить "матчасть")
14 июн 18, 15:17    [21491227]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить