Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Нужно чтобы заполненные поля некоторой формы являлись значениями условий (в WHERE) в некотором запросе. Как енто сделать?

Грубо говоря:

SELECT *
FROM связанные_таблицы
WHERE [Значение_атрибута1] = [Введенное_значение_в_Поле13_Формы1]
24 фев 04, 13:01    [548466]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
IgorM
Member

Откуда: Тула - Москва, транзит
Сообщений: 633
Ну, в приципе можно так и писать (если запрос сохраненный):

SELECT *
FROM связанные_таблицы
WHERE [Значение_атрибута1] = [Forms]![Форма1]![Поле13]

А если запрос в коде, то:

... "SELECT *
FROM связанные_таблицы
WHERE [Значение_атрибута1] = " & [Forms]![Форма1]![Поле13]
24 фев 04, 13:05    [548481]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
https://www.sql.ru/faq/faq_topic.aspx?fid=156
https://www.sql.ru/faq/faq_topic.aspx?fid=157
24 фев 04, 13:08    [548491]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
А если теперь все тоже самое но применительно к проекту adp?


Функция1:

SELECT dbo.ЛИЦО.Fam AS Фамилия, dbo.ЛИЦО.Name AS Имя, dbo.ЛИЦО.Otch AS Отчество, dbo.АДРЕС.Street AS улица, dbo.АДРЕС.House AS [дом №],
dbo.АДРЕС.Korpus AS корпус, dbo.АДРЕС.Flat AS [квартира №], dbo.АДРЕС.Country AS Страна, dbo.ЛИЦО.Klichka AS кличка,
dbo.ЛИЦО.BirthPlace AS [Место Рождения], dbo.ЛИЦО.Grajdan AS Гражданство, dbo.ЛИЦО_АДРЕС.Type AS [Тип адреса]

FROM dbo.ЛИЦО INNER JOIN
dbo.ИЗВЕСТЕН_КАК ON dbo.ЛИЦО.ID = dbo.ИЗВЕСТЕН_КАК.ID INNER JOIN
dbo.ЛИЦО_АДРЕС ON dbo.ЛИЦО.ID = dbo.ЛИЦО_АДРЕС.ID INNER JOIN
dbo.АДРЕС ON dbo.ЛИЦО_АДРЕС.IDAdr = dbo.АДРЕС.IdAdr

WHERE (dbo.ЛИЦО.Name = [Forms] ! [Форма1] ! [Поле13]);


Результат:

Ошибка в предложении WHERE вблизи "!".
Не удается выполнить разбор текста запроса.

Ошибка ADO: Line 11: Incorrect syntax near "!"
24 фев 04, 13:16    [548525]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
А про то, что это adp - надо сразу говорить
InputParameters Ф1 тебе в помощь
24 фев 04, 13:19    [548532]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Хотя какой нафиг InputParameters
ADODB.Command и ADODB.Parameter - и Ф1
24 фев 04, 13:21    [548538]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Сделал главную форму frmMain и подчиненную frmSub.
На frmMain один элемент управления для поиска записей - поле fldName.

В свойствах frmSub
Данные->Источник записей:
SELECT ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country
FROM ЛИЦО INNER JOIN
ЛИЦО_АДРЕС ON ЛИЦО.ID = ЛИЦО_АДРЕС.ID INNER JOIN
АДРЕС ON ЛИЦО_АДРЕС.IDAdr = АДРЕС.IdAdr
WHERE (ЛИЦО.Name = ?)

Данные->Входные параметры:
ЛИЦО.Name = [frmMain]![fldName]

На форме frmSub 5 полей соотв-но для ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country

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

P.S. Я знаю что такие темы уже были.. Но они мне не помогли.

Вероятно нужно к этой кнопке обработчик события приписать? А что писать?

Заранее спасибо!
24 фев 04, 20:34    [549469]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
В кнопке писать следующее - Формируешь новый источник записей (RecordSource) для подчиненной формы (твой SELECT) по правилам, указанным Лохом Позорным и делаешь Requery этой подчиненной
24 фев 04, 21:01    [549484]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
А можно по-подробнее? Я имею виду конкретно то что именно надо написать. Синтаксис.
24 фев 04, 21:57    [549517]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Dim RSource as String

...
RSource="SELECT ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country " _
& "FROM ЛИЦО INNER JOIN ЛИЦО_АДРЕС ON ЛИЦО.ID = ЛИЦО_АДРЕС.ID INNER JOIN АДРЕС " _
& "ON ЛИЦО_АДРЕС.IDAdr = АДРЕС.IdAdr " _
& "WHERE (ЛИЦО.Name = " & [frmMain]![fldName] & ")"

Me.ИмяКонтролаПодчиненнойФормы.Form.RecordSource=RSource
Me.ИмяКонтролаПодчиненнойФормы.Form.Requery


Мог ошибиться, но принцип такой, и это все есть в ФАКе
25 фев 04, 10:31    [549817]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Dim RSource as String


RSource="SELECT ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country " _
& "FROM ЛИЦО INNER JOIN ЛИЦО_АДРЕС ON ЛИЦО.ID = ЛИЦО_АДРЕС.ID INNER JOIN АДРЕС " _
& "ON ЛИЦО_АДРЕС.IDAdr = АДРЕС.IdAdr " _
& "WHERE (ЛИЦО.Name = " & [frmMain]![fldName] & ")"

Me.frmSub.Form.RecordSource=RSource
Me.frmSub.Form.Requery


При нажатии на кнопку - ошибка:
Run-time error '2465'
"Приложению "Microsoft Access" не удается найти поле '|' указанное в выражении"

Подсвечивается строка:
RSource="SELECT ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country " _

& "FROM ЛИЦО INNER JOIN ЛИЦО_АДРЕС ON ЛИЦО.ID = ЛИЦО_АДРЕС.ID INNER JOIN АДРЕС " _
& "ON ЛИЦО_АДРЕС.IDAdr = АДРЕС.IdAdr " _
& "WHERE (ЛИЦО.Name = " & [frmMain]![fldName] & ")"
25 фев 04, 12:39    [550138]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Так есть ли этот объект [frmMain]![fldName] или его нет?

Заведи еще одну текстовую переменную
Dim str As String
и вставь перед RSource=...
присвоение str=Me!fldName и выдай его отладчиком Debug.Print str
Скажешь, чего получил
25 фев 04, 13:02    [550213]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Странно. Debug.Print и ничего не происходит.
Но я посмотрел значение переменной: str="критерий поиска", как и установлено в свойствах контрола fldName в Значениях по умолчанию.
25 фев 04, 13:24    [550276]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
А кто строковое поле в апострофы брать будет? Пушкин?
25 фев 04, 13:27    [550287]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
& "WHERE (ЛИЦО.Name = '" & [frmMain]![fldName] & "')"
25 фев 04, 13:28    [550290]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
И после кавычек:

Run-time error '2465'
"Приложению "Microsoft Access" не удается найти поле '|' указанное в выражении"
25 фев 04, 13:34    [550301]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
Еще один способ проверки: вместо назначения рекордсорса записать весь запрос в переменную и ее вывести в дебаге. Если покажется, что все ОК, попробовать создать запрос с таким текстом в конструкторе. О результатах доложить
25 фев 04, 13:43    [550323]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
елки зеленые...

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

З.Ы. И что такое [frmMain]![fldName]? Это ты сам придумал? Или кто подсказал? Поле такое (frmMain) у тебя есть на форме?
25 фев 04, 13:44    [550327]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Я что-то уже совсем запутался...

Блин. Решил сделать попроще. Сделал одну форму. В заголовке разместил кнопку и поле fldName.

В области данных - 5 полей для ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country

Для кнопки:
Private Sub Кнопка7_Click()

Dim RSource As String

RSource = "SELECT ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country " _
& "FROM ЛИЦО INNER JOIN ЛИЦО_АДРЕС ON ЛИЦО.ID = ЛИЦО_АДРЕС.ID INNER JOIN АДРЕС " _
& "ON ЛИЦО_АДРЕС.IDAdr = АДРЕС.IdAdr " _
& "WHERE (ЛИЦО.Name = " & [frmMain]![fldName] & ")"

Me.frmMain.Form.RecordSource = RSource
Me.frmMain.Form.Requery

End Sub


В свойствах формы прописал источник записей:

SELECT ЛИЦО.Fam, ЛИЦО.Name, ЛИЦО.Otch, ЛИЦО_АДРЕС.Type, АДРЕС.Country FROM ЛИЦО INNER JOIN ЛИЦО_АДРЕС ON ЛИЦО.ID = ЛИЦО_АДРЕС.ID INNER JOIN АДРЕС ON ЛИЦО_АДРЕС.IDAdr = АДРЕС.IdAdr WHERE (ЛИЦО.Name = ?)

и входные параметры:

ЛИЦО.Name nvarchar=[frmMain]![fldName]

И опять хрень какая-то.. При нажатии на кнопку выскакивает ошибка:
"Compiler error.
Method or data member not found"
25 фев 04, 14:29    [550491]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
твою мать...

ЧТО ТАКОЕ [frmMain]![fldName] ???

Высоко поднимая колени читать фак бегом марш
Как обратиться к полю формы или подчиненной формы

ебанарот
ну как так можно

Forms![имяформы]![имяконтрола]
25 фев 04, 14:41    [550535]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
incold
Member

Откуда:
Сообщений: 1580
2 Razz
Открой справку для свойства InputParameters.
И посмотри примеры использования.

P.S. А еще лучше купи Гетца 2-й том и прочитай (полностью).
Да и 1-й том тоже не помешает прочитать.
И пока не прочитаешь лучше не браться за разработку ADP+SQL.
25 фев 04, 14:43    [550553]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Лох Позорный
ну ты и урод...
е*и свою, Козел!

incold
Гетц 2-й есть. Читаю.
Но действительно и первый бы не помешал.
А занимаюсь я этим не по своей прихоти
к сожалению и времени не так много.

Если открыть страницу 272 и посмотреть внимательно параграф "Свойство InputParameters" то думаю даже позорный лох сможет прочитать (если в детстве, конечно, азбуку учил и хотябы по слогам читать умеет):

RecordSource: SELECT * FROM tbOrder WHERE CustomerID=? AND OrderDate>?;

InputParameters: CustomerID int=[Enter CustomerID]
OrderDate datetime=[Form]![FirstDate]

В результате значение параметра CustomerID будет запрошено у пользователя,
а параметр OrderDate автоматически заполнится значением из элемента управления FirstDate.
25 фев 04, 16:34    [550965]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Мальчик, ты сам то читать умеешь?
Сравни [Form]![FirstDate] и твое [frmMain]![fldName]
Найди десять отличий. Пройди накуй.
25 фев 04, 16:45    [551001]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Sfagnum
Member

Откуда: из лесу
Сообщений: 1492
не спорте горячии аксесные парни...

2 Razz в MsgBox Выведи сперва своё [frmMain]![fldName] если получилось, то попробуй свой запрос через MsgBox посмотреть вдруг чего увидишь...

Сделать можно всё!!!
Только бы знать как...
25 фев 04, 16:49    [551010]     Ответить | Цитировать Сообщить модератору
 Re: Как брать значение атрибута в условии запроса WHERE из поля некоторой формы?  [new]
Razz
Member

Откуда:
Сообщений: 56
Лох, а сразу ты этого не мог сказать без оскорблений?
25 фев 04, 16:57    [551043]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить