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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание SQL запроса на основе инфы вводимой юзер. 
:(
    Опции темы
Devourer
Дата 23.8.2008, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.8.2008

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



 smile  
Есть текстовое поле заполняемое пользователем. 
Необходимо что-бы по нажатии кнопки происходило формирование SQL запроса(условие для запроса формировал бы пользователь)

Код

SELECT [таблица].поле1 , [таблица].[поле2], [таблица2].поеле1 , [таблица2].поеле2
FROM таблица LEFT JOIN [таблица2] ON [таблица].поле1 = [таблица].поле1
WHERE (([таблица].[поле2])<[date]);


где date---данные из текстового поля.

И вывод всех подходящих под условие значений.


P.S.
Заранее очень благодарен за помощь, сори за нубство, сам читаю книги, но надо крайне срочно...  
PM MAIL ICQ   Вверх
bopoha
Дата 24.8.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Запрос это обыкновенная строка, т.е.:

Код

Dim sql as String

sql = "....." '-- статическая часть запроса
'-- Если нам нужно искать по дате
if Not IsNull(Me.Pole) Then
    sql = sql & " WHERE Pole = #" & Format( Me.Pole, "dd/mm/yyyy" ) & "#"
End if

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


При чем, если использовать этот запрос для формы, то лучше обойтись формированием предложения WHERE и использовать его:

Код

Dim stWhere as String

if Not IsNull(Me.Pole) Then
    stWhere = " Pole = #" & Format( Me.Pole, "dd/mm/yyyy" ) & "#"
End if

'-- отображаем данные
if stWhere <> "" Then
    Me.Filter = stWhere
    Me.FilterOn = True
End If

PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 24.8.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Если форма открыта - можно использовать в тексте запроса ссылку непосредственно на значение поля формы. И менять ничего не потребуется.

Код

SELECT [таблица].поле1 , [таблица].[поле2], [таблица2].поле1 , [таблица2].поле2
FROM таблица LEFT JOIN [таблица2] ON [таблица].поле1 = [таблица].поле1
WHERE (([таблица].[поле2])<CDate(Forms("Форма ввода условий").Controls("TextBox1").Text))



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

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Akina, так лучше не делать в долгосрочной перспективе. Поверьте мне. Да и работает очень не надежно. т.к. нет проверки.
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 24.8.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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


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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.8.2008

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



Код

Private Sub кнопка_Click()
Dim stWhere As String
If IsNull(Me.lo) Then
    stWhere = "поле  is null"
Else 
    stWhere ="поле <" & me.lo 
End If

My.formp_form.Form.Filter = stWhere
My.formp_form.Form.FilterOn = True
End If

End Sub

Тут какая-то ошибка... не подскажете что за она????

Идея такая---Нажимаем кнопку, из текстового поля(lo) считывается число, по нему проводится фильтрация в подчиненной форме(formp).

Это сообщение отредактировал(а) Devourer - 24.8.2008, 22:25
PM MAIL ICQ   Вверх
bopoha
Дата 24.8.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Devourer, вы меня поражаете. Попробуйте хоть раз скомпилировать, чтоли.

Код

My.formp_form.Form.Filter = stWhere
My.formp_form.Form.FilterOn = True
End If '-- это лишний

End Sub


PM MAIL WWW ICQ Skype GTalk   Вверх
Devourer
Дата 25.8.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.8.2008

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



End If '-- это лишний
Сори попало случайно...

Но не работает всеравно (
PM MAIL ICQ   Вверх
Akina
Дата 25.8.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Devourer, что именно не работает? ошибка? в какой строке, какая именно... не тот результат? в какой строке в какой переменной при трассировке повляется неверное значение...
Телепатов нет, а тянуть с вас подробности клещами никому не интересно


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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.8.2008

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



Ошибка 424
Object Required

Код который был запущен-
Код

Private Sub Кнопка4_Click()
Dim stWhere As String
z = Me!lo
If Me.lo = 0 Then
    stWhere = "Февраль_ЛО is null"
Else
stWhere = "Февраль_ЛО] >" & Me.lo
End If
My.formp_form.Form.Filter = stWhere ' вот в этой строке всплывает ошибка
My.formp_form.Form.FilterOn = True 
End Sub

PM MAIL ICQ   Вверх
Akina
Дата 25.8.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А что такое My? Может, следует использовать Me?


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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.8.2008

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



Большое спасибо Akina и bopoha за помощ... ))))

Поставил бы + но мало постов ) 
PM MAIL ICQ   Вверх
Akina
Дата 25.8.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Devourer @  25.8.2008,  13:25 Найти цитируемый пост)
Поставил бы + но мало постов

Сделано.


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

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

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

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

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


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

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


 




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


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

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