powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как создать скалярную функцию?
10 сообщений из 10, страница 1 из 1
как создать скалярную функцию?
    #32216265
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть запрос
Select fkMark from tMark where (fkstatment=1644 and fkexam=4)

подскажите как написать фунцкию которая возвращает fkMark или -1 если нет ниодной записи в запросе?

что-то вроде
CREATE FUNCTION "Функция1"
(
/*
@parameter1 datatype = default value,
@parameter2 datatype
*/
)
RETURNS /* datatype */
AS
BEGIN
SELECT fkMark FROM tMarkOfExam WHERE (fkStatment = 1644) AND (fkExam = 4)
RETURN /* var */
END
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216272
Можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function myFunction()

dim myRst as Recordset

Set myRst = CurrentDb.OpenRecordset( "Select fkMark from tMark where (fkstatment="  "1644 " " and fkexam="  "4 " ") " )

if myRst.RecordCount> 0  then

myFunction=myRst!fkMark

else

myFunction= "-1 "

myRst.close

end Function
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216279
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм.. так ужо было.. я хчу не в модуле создавать функцию,
а на сервере. я не знаток адп, но похоже скалярная функция как раз возвращает значение. только пример. хоть один что бы понять как написать. =(
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216280
Ну еще имя самаво запроса вместа SQL можна вставить.
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216282
А тагда фик ево знаит, нада ребят спрасить
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216286
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT fkMark FROM tMarkOfExam WHERE (fkStatment = 1644) AND (fkExam = 4) -
может возвращать больше одной записи? и какого типа д.б fkMark ?
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216288
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хамский Шкет
всё равно сэнкс =)

2VIG
SELECT fkMark FROM tMarkOfExam WHERE (fkStatment = 1644) AND (fkExam = 4) - может возвращать больше одной записи? и какого типа д.б fkMark ?

по идее нет. fkStatment и fkExam - это уникальный ключ записи. т.е запись или есть (одна) или нет.
fkMark - int
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216294
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Syntax
Scalar Functions

CREATE  FUNCTION [ owner_name. ] function_name 
    ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 

RETURNS scalar_return_data_type

[ WITH < function_option> [ [,] ...n] ] 

[ AS ]

BEGIN 
    function_body 
    RETURN scalar_expression
END


Код: 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.
Examples
A. Scalar-valued user-defined function that calculates the ISO week
In this example, a user-defined function, ISOweek, takes a date argument and calculates the ISO week number.  For this function to calculate properly, SET DATEFIRST  1  must be invoked before the function is called. 

CREATE FUNCTION ISOweek  (@DATE datetime)
RETURNS int
AS
BEGIN
   DECLARE @ISOweek int
   SET @ISOweek= DATEPART(wk,@DATE)+ 1 
      -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR( 4 ))+'0104')
 --Special cases: Jan 1-3 may belong to the previous year
 
   IF (@ISOweek= 0 ) 
      SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)- 1  
         AS CHAR( 4 ))+'12'+ CAST( 24 +DATEPART(DAY,@DATE) AS CHAR( 2 )))+ 1 
 --Special case: Dec 29-31 may belong to the next year
 
   IF ((DATEPART(mm,@DATE)= 12 ) AND 
      ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>=  28 ))
      SET @ISOweek= 1 
   RETURN(@ISOweek)
END

...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216302
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION fn_myfunction (@fkstat int,@fkexam int )
RETURNS int
AS
BEGIN
   declare @result  int  
   SELECT @result=fkMark FROM tMarkOfExam WHERE (fkStatment = @fkstat) AND   (fkExam =@fkexam ) 
   return isnull(@result,- 1 )
END
...
Рейтинг: 0 / 0
как создать скалярную функцию?
    #32216312
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо Senin Viktor =))

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


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