powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите разобраться с запросом!!!!
23 сообщений из 73, страница 3 из 3
Помогите разобраться с запросом!!!!
    #32784319
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKirillЯ так понял, что ты просто хочешь менять запрос в зависимости от некоторых параметров. Но тогда тебе не зачем форму завязывать на этот запрос, ты просто будешь менять Sql текст самого запроса в зависимости от указанных параметров.

А как это запрос то все равно должен быть
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784394
GKirill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softmaster GKirillА попробуй открыть (выполнить) этот запрос. Он что-нить выдает?
Да сам запрос выдает названия столбцов
столбцы пустые
Т.к. запрос ничего не выдает, значит сам запрос неправильно написан. Т.к. запрос в любом случае должен че-то выдавать. Да коннект к серверу (ODBC Connect Str) ты прописал?
softmasterА как это запрос то все равно должен быть
Дык запрос-то у тебя и останется, ты просто меняешь его Sql.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784564
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2GKirill

Если имена столбцов есть, то и коннект есть, ИМХО, Запрос неверный, скорее всего. Если есть способ напрямую с mysql поработать, надо на нем этот запрос запустить... скопировать строку запроса и запустить... заодно и проверить, как он сформировался
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784573
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKirill softmaster GKirillА попробуй открыть (выполнить) этот запрос. Он что-нить выдает?
Да сам запрос выдает названия столбцов
столбцы пустые
Т.к. запрос ничего не выдает, значит сам запрос неправильно написан. Т.к. запрос в любом случае должен че-то выдавать. Да коннект к серверу (ODBC Connect Str) ты прописал?
softmasterА как это запрос то все равно должен быть
Дык запрос-то у тебя и останется, ты просто меняешь его Sql.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Dim strSQL As String
strSQL = "SELECT DISTINCT v.description, " _
& "date_format(log_date, '%H:%i:%s') AS h," _
& "date_format(log_date, '%Y.%m.%d') AS d," _
& "u.user_name,p.department_name,u.notes " _
& "FROM vv v, users u, departments p, access_log a, readers r, tokens t " _
& "WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND " _
& "(a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND " _
& "(u.department_id = p.department_id) AND "

Dim df, mf, dt, mt As String

df = Day(Me.date_field_first)
If Len(df) =  1  Then
   df = "0" & df
End If
mf = Month(Me.date_field_first)
If Len(mf) =  1  Then
   mf = "0" & mf
End If
dt = Day(Me.date_field_second)
If Len(dt) =  1  Then
   dt = "0" & dt
End If
mt = Month(Me.date_field_second)
If Len(mt) =  1  Then
   mt = "0" & mt
End If

strSQL = strSQL _
& "(a.log_date>='" & CStr(Year(Me.date_field_first)) & "-" & mf & "-" & df _
& "') AND (a.log_date!!!!!<=!!!!!!!'" & CStr(Year(Me.date_field_second)) & "-" & mt & "-" _
& dt & "')"
strSQL = strSQL _
!!!!!!& " ORDER BY d,h"!!!!!!

CurrentDb.QueryDefs("ary").SQL = strSQL
Me.RecordSource = "ary"

Немного откаректировал твою процедуру запрос стал работать но как сделать что бы я мог при нажатии кнопа не только формировать запрос но и увидеть результат его работы
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784622
GKirill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softmasterНемного откаректировал твою процедуру запрос стал работать но как сделать что бы я мог при нажатии кнопа не только формировать запрос но и увидеть результат его работы
Запрос сам выполняется, я так понял, т.е. работает.
Если ты хочешь увидеть толькл рез-т его работы, то тебе не надо форму завязывать на нем. А надо его просто выполнить, т.е. вставить строку
Код: plaintext
DoCmd.OpenQuery "ary"
, т.е. твой код должен иметь примерно такой вид.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Dim strSQL As String
strSQL = "SELECT DISTINCT v.description, " _
& "date_format(log_date, '%H:%i:%s') AS h," _
& "date_format(log_date, '%Y.%m.%d') AS d," _
& "u.user_name,p.department_name,u.notes " _
& "FROM vv v, users u, departments p, access_log a, readers r, tokens t " _
& "WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND " _
& "(a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND " _
& "(u.department_id = p.department_id) AND "

Dim df, mf, dt, mt As String

df = Day(Me.date_field_first)
If Len(df) =  1  Then
   df = "0" & df
End If
mf = Month(Me.date_field_first)
If Len(mf) =  1  Then
   mf = "0" & mf
End If
dt = Day(Me.date_field_second)
If Len(dt) =  1  Then
   dt = "0" & dt
End If
mt = Month(Me.date_field_second)
If Len(mt) =  1  Then
   mt = "0" & mt
End If

strSQL = strSQL _
& "(a.log_date>='" & CStr(Year(Me.date_field_first)) & "-" & mf & "-" & df _
& "') AND (a.log_date!<='" & CStr(Year(Me.date_field_second)) & "-" & mt & "-" _
& dt & "') ORDER BY d,h"
CurrentDb.QueryDefs("ary").SQL = strSQL
DoCmd.OpenQuery "ary"
и ты должен увидеть на экране рез-т выполнения запроса.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784782
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о да дело сдвинулось с мертвой точки тепрь есть такая проблема
добавил строку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim un As String
un = (Me.users)
If Len(un) =  1  Then
   un = "0" & un
End If
strSQL = strSQL _
& "(u.user_name='" & un & "')AND "
что бы по конкретному юзеру
работает но только когда строка полная
Вопрос:
как сделать что бы если в случае с числами выходило окно введите число
или еще как нибудь а в случае с людьми пустое поле значит запрос по всем
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784927
GKirill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softmasterВопрос:
как сделать что бы если в случае с числами выходило окно введите число
или еще как нибудь
Код: plaintext
1.
Dim Ch as Integer
Ch = InputBox("Введите число","Ввод числа")
softmasterа в случае с людьми пустое поле значит запрос по всем

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim un As String
un = (Me.users)
If Len(un) =  1  Then
   un = "0" & un
End If
strSQL = strSQL _
& Iif(Nz(Me.users,"")="","","(u.user_name='" & un & "')")
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784942
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
три поля на форме... два с числами, одно с номерами юзеров...

следишь, чтоб len(me.поле_с_юзером)>0 если больше 0, то вставляй номер на этапе формирования запроса

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

и поле с юзером можно еще проверить на IsNumeric (не помню уже, есть такая в VBA, или как-то по другому зовется)
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784952
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кирил,

Iif - такого в mysql нету, кажись.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784956
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, совсем сплю....
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784958
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Dim strSQL As String
strSQL = "SELECT DISTINCT v.description, " _
& "date_format(log_date, '%H:%i:%s') AS h," _
& "date_format(log_date, '%Y.%m.%d') AS d," _
& "u.user_name,p.department_name,u.notes " _
& "FROM vv v, users u, departments p, access_log a, readers r, tokens t " _
& "WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND " _
& "(a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND " _
& "(u.department_id = p.department_id) AND "

Dim un As String
un = (Me.users)
If Len(un) =  1  Then
   un = "0" & un
End If
strSQL = strSQL _
& IIf(Nz(Me.users, "") = "", "", "(u.user_name='" & un & "')")

Dim Ch As Integer
Ch = InputBox("Введите число", "Ввод числа")

Dim df, mf, dt, mt As String

df = Day(Me.date_field_first)
If Len(df) =  1  Then
   df = "0" & df
End If
mf = Month(Me.date_field_first)
If Len(mf) =  1  Then
   mf = "0" & mf
End If
dt = Day(Me.date_field_second)
If Len(dt) =  1  Then
   dt = "0" & dt
End If
mt = Month(Me.date_field_second)
If Len(mt) =  1  Then
   mt = "0" & mt
End If

'Dim Ch As Integer
'Ch = InputBox("Введите число", "Ввод числа")

strSQL = strSQL _
& "(a.log_date>='" & CStr(Year(Me.date_field_first)) & "-" & mf & "-" & df _
& "') AND (a.log_date<='" & CStr(Year(Me.date_field_second)) & "-" & mt & "-" _
& dt & "')"

strSQL = strSQL _
& " ORDER BY d,h"

CurrentDb.QueryDefs("ary").SQL = strSQL
Me.RecordSource = "ary"

DoCmd.OpenQuery "ary", , acReadOnly
DoCmd.SetWarnings True
    
End Sub

Что то не идет !!!,
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784966
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shurgenzтри поля на форме... два с числами, одно с номерами юзеров...

следишь, чтоб len(me.поле_с_юзером)>0 если больше 0, то вставляй номер на этапе формирования запроса

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

и поле с юзером можно еще проверить на IsNumeric (не помню уже, есть такая в VBA, или как-то по другому зовется)

Не с номера а с именами
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784975
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда еще проще... на len() проверяй
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32784991
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shurgenzтогда еще проще... на len() проверяй
Как это записать
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785002
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
if len(me.поле_с_юзером)> 0  then
    формируешь
end if
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785005
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ужас... пошел я до дому
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785012
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после поля с юзером... надо еще .Value

Код: plaintext
1.
2.
if len(me.поле_с_юзером.Value)> 0  then
    формируешь
end if
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785030
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отцы просто земной Вам поклон
правда еще немного
вопросиков есть
как сделать когда
нет и
Код: plaintext
SELECT DISTINCT v.description, date_format(log_date, '%H:%i:%s') AS h,date_format(log_date, '%Y.%m.%d') AS d,u.user_name,p.department_name,u.notes FROM vv v, users u, departments p, access_log a, readers r, tokens t WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND (a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND (u.department_id = p.department_id) AND (u.user_name='')AND (a.log_date>=' 2004 - 11 - 10 ') AND (a.log_date<=' 2004 - 11 - 15 ') ORDER BY d,h
получаеться строка строиться так
соответсвенно пустой запрос что сделал не так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Dim strSQL As String
strSQL = "SELECT DISTINCT v.description, " _
& "date_format(log_date, '%H:%i:%s') AS h," _
& "date_format(log_date, '%Y.%m.%d') AS d," _
& "u.user_name,p.department_name,u.notes " _
& "FROM vv v, users u, departments p, access_log a, readers r, tokens t " _
& "WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND " _
& "(a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND " _
& "(u.department_id = p.department_id) AND "

Dim un As String
If Len(Me.users) >  0  Then
    un = (Me.users)
    End If
If Len(un) =  1  Then
   un = "0" & un
End If


strSQL = strSQL _
& "(u.user_name='" & un & "')AND "


'Dim Ch As Integer
'Ch = InputBox("Введите число", "Ввод числа")

Dim df, mf, dt, mt As String

df = Day(Me.date_field_first)
If Len(df) =  1  Then
   df = "0" & df
End If
mf = Month(Me.date_field_first)
If Len(mf) =  1  Then
   mf = "0" & mf
End If
dt = Day(Me.date_field_second)
If Len(dt) =  1  Then
   dt = "0" & dt
End If
mt = Month(Me.date_field_second)
If Len(mt) =  1  Then
   mt = "0" & mt
End If



strSQL = strSQL _
& "(a.log_date>='" & CStr(Year(Me.date_field_first)) & "-" & mf & "-" & df _
& "') AND (a.log_date<='" & CStr(Year(Me.date_field_second)) & "-" & mt & "-" _
& dt & "')"

strSQL = strSQL _
& " ORDER BY d,h"

CurrentDb.QueryDefs("ary").SQL = strSQL
Me.RecordSource = "ary"

DoCmd.OpenQuery "ary", , acReadOnly
DoCmd.SetWarnings True
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785042
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если одно из полей в формируемом запросе - null, вся строка в нулл сбросится.... удачи
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785054
Фотография softmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShurgenzЕсли одно из полей в формируемом запросе - null, вся строка в нулл сбросится.... удачи
Брат совсем без тебя ни как не получаеться
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32785623
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю, чтоб не особо морочить себя и других, сделать следующее:

все строки, где собирается strSQL разбить на отдельные команды... В отладчике потом по шагам посмотришь, где строка обнуляется

сделать это можно так:

из

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
strSQL = "SELECT DISTINCT v.description, " _
& "date_format(log_date, '%H:%i:%s') AS h," _
& "date_format(log_date, '%Y.%m.%d') AS d," _
& "u.user_name,p.department_name,u.notes " _
& "FROM vv v, users u, departments p, access_log a, readers r, tokens t " _
& "WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND " _
& "(a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND " _
& "(u.department_id = p.department_id) AND "

получится

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
strSQL = "SELECT DISTINCT v.description, " 
strSQL = strSQL & "date_format(log_date, '%H:%i:%s') AS h," 
strSQL = strSQL & "date_format(log_date, '%Y.%m.%d') AS d," 
strSQL = strSQL & "u.user_name,p.department_name,u.notes " 
strSQL = strSQL & "FROM vv v, users u, departments p, access_log a, readers r, tokens t " 
strSQL = strSQL & "WHERE (a.token_id = t.token_id) AND (a.token_id = u.token_id) AND " 
strSQL = strSQL & "(a.reader_id = r.reader_id) AND (a.reader_id = v.reader_id) AND " 
strSQL = strSQL & "(u.department_id = p.department_id) AND "

наподобие этого...
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32788348
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, читал-читал, но кое-чего не понял.
У меня на форме есть текстбокс tboPorts, в него надо прописать значение по умолчанию (которое высветится при загрузке формы), которое является подсчетом определенного поля таблицы. Создавать сохраненный запрос для этих целей не хочу, а динамически выполнить SQL запрос не получается...
Вот строка запроса (АксусьХР):
Код: plaintext
1.
2.
3.
strPorts = "SELECT DISTINCTROW ports.Коммутатор, Count(ports.Порт) AS [Порты] " & _
                "FROM ports " & _
                "WHERE (ports.Коммутатор = " & Me.id_set.Value & ")"

теперь результат выполнения его (число по идее), надо запихнуть в текстбокс:

Код: plaintext
1.
Me.tbo_add_ports.Value = РЕЗУЛЬТАТ ВЫПОЛНЕННИЯ ЗАПРОСА strPorts

а вот как выполнить его и получить результат - я не понял. Пробовал
Код: plaintext
1.
2.
  DoCmd.RunSQL strPorts  
  Me.tbo_add_ports.Value = strPorts
не то, так как это для запросов на изменение.
Код: plaintext
1.
2.
3.
    CurrentDb.QueryDefs("ЧТО ТУТ ПИСАТЬ").SQL = strPorts
    DoCmd.OpenQuery "ЧТО ТУТ ПИСАТЬ"
    И КАК СОХРАНЯТЬ РЕЗУЛЬТАТ?

Хелпы мне мало помогли, а книги нет.
Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом!!!!
    #32788982
GKirill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OrlicНарод, читал-читал, но кое-чего не понял.
У меня на форме есть текстбокс tboPorts, в него надо прописать значение по умолчанию (которое высветится при загрузке формы), которое является подсчетом определенного поля таблицы. Создавать сохраненный запрос для этих целей не хочу, а динамически выполнить SQL запрос не получается...
Вот строка запроса (АксусьХР):
Код: plaintext
1.
2.
3.
strPorts = "SELECT DISTINCTROW ports.Коммутатор, Count(ports.Порт) AS [Порты] " & _
                "FROM ports " & _
                "WHERE (ports.Коммутатор = " & Me.id_set.Value & ")"
Group By забыл, должно быть
Код: plaintext
1.
2.
3.
strPorts = "SELECT DISTINCTROW ports.Коммутатор, Count(ports.Порт) " & _
"AS [Порты] FROM ports " & _
"WHERE (ports.Коммутатор = " & Me.id_set.Value & ") " & _
"GROUP BY ports.Коммутатор"
Orlic
теперь результат выполнения его (число по идее), надо запихнуть в текстбокс:

Код: plaintext
1.
Me.tbo_add_ports.Value = РЕЗУЛЬТАТ ВЫПОЛНЕННИЯ ЗАПРОСА strPorts

а вот как выполнить его и получить результат - я не понял. Пробовал
Код: plaintext
1.
2.
  DoCmd.RunSQL strPorts  
  Me.tbo_add_ports.Value = strPorts

можешь написать примерно следующее:
Код: plaintext
1.
2.
3.
  Dim RstPorts as DAO.RecordSet
  Set RstPorts = Currentdb.OpenRecordSet(strPorts)
  Me.tbo_add_ports.Value = Iif(RstPorts.RecordCount> 0 ,RstPorts.Fields("Порты"), 0 )
...
Рейтинг: 0 / 0
23 сообщений из 73, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите разобраться с запросом!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]