>>>>>Boris, my understanding (from some reading on-line) is that SCOPE_IDENTITY() is better than @@IDENTITY. So I am looking at the message you suggested that describes how to get SCOPE_IDENTITY(). And I am trying to understand the code Alekesy wrote. One thing I don't understand and maybe you can help me. In his code:
>>>>>
>>>>>
>>>>>cInsertCmd = cInsertCmd + "; DECLARE @id int; SELECT @id = SCOPE_IDENTITY()" + ;
>>>>> "; EXEC #Get_ValHelper @id, ?@" + ;
>>>>> this.Alias + "." + ALLTRIM(this.IDENTITY_Field)
>>>>>
>>>>>
>>>>>what is the purpose of EXEC #Get_ValHelper @Id? and "?@" ? Are these necessary?
>>>>>
>>>>>TIA
>>>>
>>>>
>>>>To store the value of the @id in the VFP cursor field.
>>>>I think the syntax should be:
>>>>
>>>>cInsertCmd = cInsertCmd + "; DECLARE @id int; SELECT @id = SCOPE_IDENTITY()" + ;
>>>> "; EXEC #Get_ValHelper @id, ?@" + ;
>>>> this.Alias + "." + ALLTRIM(this.IDENTITY_Field) +" OUTPUT"
>>>>
>>>
>>>The syntax works OK as is. It's really tricky syntax, especially ?@Cursor.MyField -- I never knew you can use @ will fields, not with the memory variables or arrays.
>>
>>Hi Naomi,
>>
>>This is a message in the thread a few weeks ago on how to "refresh" identify column of a CA Cursor when adding a new record. I tried to use this approach in another project but get the following error:
>>
>>"Cannot use the Output option when passing a constant to a stored procedure"
>>
>>What I don't understand is, where is the constant? The code above passing variable "id" and a column name with alias. What am I missing? By the way, the following is my Stored Procedure:
>>
>>
>>ALTER PROCEDURE [dbo].[Get_Identity_value]
>> @in int,
>> @out int OUTPUT
>>AS
>>BEGIN
>> SET NOCOUNT ON;
>>
>> set @out=@in
>>
>>END
>>
>>
>>Do you what I am missing? Thank you.
>
>I don't get any error testing this SP in SQL Server:
>
>create PROCEDURE [dbo].[Get_Identity_value]
> @in int,
> @out int OUTPUT
>AS
>BEGIN
> SET NOCOUNT ON;
>
> set @out=@in
>
>END
>go
>declare @out int
>execute dbo.Get_Identity_value @in = 2, @out =@out output
>select @out
I can see that your SP is the same as mine; so this eliminates problem with stored procedure. But the way you call the stored procedure is different. First you declare the variable "out"; I didn't. But you didn't declare "in" and I did.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham