powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Получение и присвоение значений параметров внутри запроса
16 сообщений из 16, страница 1 из 1
Получение и присвоение значений параметров внутри запроса
    #32342309
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли сделать в Access нечто подобное:

Parameters [Parameter_1][DataType];
Select [Поля...]
From [хр. проц.]( Select [Значение, передаваемое в хр.проц.] From [таблицы...] Where [Условие, использующее Parameter_1] )

Т.е. хр.проц., используемая в главном View должна получать значение аргумента из подзапроса (параметрического).
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342314
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя MS SQL2000 - то да, так делать можно с помощью UDF (User-defined functions - функций пользователя). Подробности в BOL
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342323
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется ввиду чистый Access, т.е.
база mdb > OleDB > Delphi

Т.е. если это в принципе сделать можно, то каков синтаксис непосредственно в Access View? В MSDN есть небольшое описание возможностей хр. процедур, но более сложных случаев (таких, как например этот) нет.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342335
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээээ.... Хранимка? В mdb?
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342356
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Темный
Чему ты удивляешься?
Если в билдере могут быть таблицы, то почему бы в дельфи не быть хранимкам.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342385
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА

Пошел на сковородке ERP-II писать. И с таблицами, и хранимками и т.д. и т.п. Данные в кастрюле. Связь между конфорками любезно предоставлена ОАО "Чубайс - @"
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342389
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Подзапрос с параметрами что ли нужен?
Если он сохраненый - то да, можно как обычный запрос - только не забудь в итоговом запросе присвоить все необходимые параметры для параметрических запросов (понятно обяснил?)

Select * From QueryWithParametrs

а вот можно написать ли

Select * From (Parameters [Parameter_1][DataType]; Select [Значение, передаваемое в хр.проц.] From [таблицы...] Where [Условие, использующее Parameter_1]) - это будет твое домашнее задание :)
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342466
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тёмному и Лоху Позорному:
Ваши псевдонимы очень точно определяют уровень ваших познаний.
Для вас и другних умников - "идите в MSDN и спросите".
Вообще, ADO-компоненты Delphi распознавали Access View, написанные определённым образом как ХП уже в Access 97 или 2000 - точно не помню.
В MSDN используется понятие ХП, хотя конечно это было бы правильнее называть параметрическим View, т.к. ХП предполагает наличие алгоритмического языка и возможность написания на нём кода. ХП Access же может содержать единственный SQL-оператор.

Для Senin Viktor.
Спасибо за ответ. Но всё-таки, я не нашёл описания синтаксиса передачи аргумента в ХП, которая находится в разделе From, т.е.:
есть ХП_1. Она описана как:

Parameters [Parameter_1][DataType];
Select [Поля...] From [Таблицы...] Where [Условие, использующее Parameter_1].

есть ХП_2. Она описана как:
Parameters [Parameter_2][DataType];
Select [Поля...] From ХП_1(вот сюда надо передать Parameter_2)

На такой синтаксис - передачу Parameter_2 в круглых скобках Access ругается: "ошибка в предложении From".
Если ты знаешь, где можно прочитать о подобном синтаксисе, не томи, кинь ссылку, пожалуйста.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342474
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перечитай свой вопрос. Перечитай мой вопрос. А потом попробуй поскрипеть мозгом.

В MDB нет хранимых процедур. Точка.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342486
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторВаши псевдонимы очень точно определяют уровень ваших познаний.
Это неверное утверждение. Если бы было сказано не уровень познаний, а способ общаться с окружающими, то можно было бы поспорить. А так - точно неверно.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342493
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как ты отнесёшся к такому синтаксису:

CREATE PROCEDURE ProcedureName
(Parameter1 datatype, Parameter2 datatype) AS
SQLStatement

DROP PROCEDURE ProcedureName

который прекрасно съедается MSJet. Заметь MSJet, работающим с файлом mdb, а не каким-нибудь SQL-сервером. Я же сказал "идите в MSDN и спросите". Это значит сюда: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acintsql.asp
Повторюсь, что по-моему правилнее эти ХП было бы называть параметрическими View.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342494
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/62552#445020\r
\r
Это Ваши слова. Засим предлагаю закончить это безобразие
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342554
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2dasistgut \r
\r
Все-таки ХП в Акесе нет. То что Create Proc работает - так это прихоть разработчика - и данная конструкция создает всего лишь обычный запрос Акеса. По ссылке,которую ты дал ничего нет касаемого слов CREATE PROCEDURE \r
\r
По поводу ников - то же не прав.\r
\r
>Но всё-таки, я не нашёл описания синтаксиса передачи аргумента в ХП, которая находится в разделе From\r
\r
Не надо ничего искать. Надо просто передать параметр в итоговый запрос.\r
А вот передаешь ты параметр не верно. Из недописанного FAQ /topic/45634&pg=4
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342586
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что бы совсем разогнать сомнения в отличии ХП от запросов

Создадим запрос, используя синтаксис создания ХП
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function CreateProc()
   Dim strProc As String
    
   strProc =  "Create Procedure qryCustByCity "  & _
       "(prmCity varchar) as "  & _
       "select * from Customers where City = prmCity" 
    
   CurrentProject.Connection.Execute strProc
            
End Function


Создаться запрос
Код: plaintext
1.
2.
3.
   PARAMETERS prmCity Text;
   SELECT *
   FROM Customers
   WHERE (((Customers.City)=[prmCity]));


Выполним его
Код: 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.
Public Function RSFromParameterQuery(strCity As String)
   Dim prm As ADODB.Parameter
   Dim cmd As ADODB.Command
   Dim rst As ADODB.Recordset
  
   Set cmd = New ADODB.Command
   Set cmd.ActiveConnection = CurrentProject.Connection
  
   cmd.CommandText =  "qryCustByCity" 
   cmd.CommandType = adCmdStoredProc
  
   Set prm = cmd.CreateParameter( "prmCity" , adVarChar, adParamInput, _
      Len(strCity))

   prm.Value = strCity
  
   cmd.Parameters.Append prm
  
   Set rst = New ADODB.Recordset
   rst.Open cmd
  
   Do Until rst.EOF
      Debug.Print rst( 0 ), rst( 1 ), rst( 2 )
     rst.MoveNext
   Loop
  
End Function


Получим сообщение об ошибке.(Invalid SQL Statement;expected 'DELETE', 'INSERT','PROCEDURE', 'SELECT' or 'UPDATE' )
И будем его получать всю жизнь, пока не изменим
cmd.CommandType = adCmdStoredProc
на
cmd.CommandType = adCmdTable


:)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with Microsoft Jet  4 . 0  you can use the ANSI CREATE PROCEDURE syntax to create 
a new query

In previous versions of Access, you could use either a procedure clause or a 
parameter query to create SQL statements that use parameters. Although both 
types of queries are still supported, another syntax you can use is the new 
CREATE PROCEDURE statement (its synonym is CREATE PROC). The new syntax is 
more ANSI- 92  compliant, and when scaling up to a Microsoft SQL Server database 
or MSDE, the syntax can be converted more easily. 

The CREATE PROCEDURE and DROP PROCEDURE statements can be executed only 
through the Jet OLE DB provider and ADO. They will return an error message if 
used through the Access SQL View user interface or DAO. Also note that 
procedures created with the CREATE PROCEDURE statement are saved in the 
database, but are not exposed as saved queries in the Access user interface. You 
can work with them only in ADO and ADOX programming code.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342674
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, со ссылкой я ошибся, извините.
Вот: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acadvsql.asp
Статья "Advanced Microsoft Jet SQL for Access 2000". В начале статьи есть оглавление, в котором ссылка на параграфы "Procedures" и "Using a Procedure".

Перечитайте, пожалуйста 8-й топик. Там я написал, что правильнее было бы называть их параметрическими представлениями, но MS использует термин "Procedure". Поэтому можно считать это вопросом терминологии.

В приведённом в предыдущем топике третьем абзаце из документации написано, что в пользовательском интерфейсе Access нет объектов класа ХП. Действительно, то, что создаётся с помощью Create Procedure... видно как запросы. Но в 3-м топике этого обсуждения указано:

база mdb > OleDB > ADO > Delphi

т.е. я работаю не из Access или VB, а из Delphi. Но компоненты ADO уже распознают эти объекты как ХП.

Но всё это не относится к основной теме.
Ребята увели разговор совсем в другую сторону от первоначального вопроса.
Вопрос был не в том, как передать значения параметров в объект ADODB.Command или в TADOStoredProc, а как правильно написать оператор SQL так, чтобы он внутри себя вызывал, пускай будет "View с параметрами", передавая этому "View с параметрами" значение, рассчитываемое им самим.

Вопрос о ХП теперь действительно может быть закрыт.
...
Рейтинг: 0 / 0
Получение и присвоение значений параметров внутри запроса
    #32342866
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2dasistgut
>Вопрос ...как правильно написать оператор SQL так, чтобы он внутри себя вызывал, пускай будет "View с параметрами", передавая этому "View с параметрами" значение, рассчитываемое им самим.

Ну ничего другого, кроме того, что я написал посоветовать не могу. И судя по отсуствию реакции на ранее данные советы - ты или не понял, что нужно делать либо тебе просто лень делать и ты ждешь готового решения.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Получение и присвоение значений параметров внутри запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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