>>>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.
"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