[fpc-pascal] MSSQL and ftAutoInc: FPC 2.6.5 changes the behavior of 2.6.2 but AutoInc not works yet
LacaK
lacak at zoznam.sk
Fri Apr 25 07:46:23 CEST 2014
Do you have tried for ftAutoInc field simply set ReadOnly:=False; ?
-Laco.
P.S. there is feature request about automatic fetching of new values of
idnetity columns, but implementing it in generic way for all supported
SQLConnections is not trivial ;-)
> Hi,
>
> I'm using 2.6.5 (fixes_2_6) now but something broke between 2.6.2 and
> 2.6.5 using AutoInc fields.
> AutoInc never worked well (at least for MSSQL) and because that I have
> my own "Query" [1] that implements AutoInc values very well.
>
> I override the ApplyRecUpdate method from TSQLQuery and update the
> AutoInc field getting the value in DB using FLib.GetLastAutoIncValue
> method that, for MSSQL, I use "select scope_identity() as id" (see
> code below)
>
> The problem is to use Field.SetData to put a value. If the field is
> AutoInc it is ReadOnly too and I got a exception:
> Edit;
> Fields[I].SetData(@LastId);
> Post;
>
> But in 2.6.2 version it worked.
>
> I need to know the ID (identity column). So, if the behavior was
> changed between 2.6.5 and 2.6.2, then the AutoInc fields needs to
> works too, no?
>
> Now, how I can get the ID using AutoInc, please?
>
> === BEGIN CODE ===
> procedure TghSQLdbQuery.ApplyRecUpdate(UpdateKind: TUpdateKind);
> var
> I: Integer;
> LastId: NativeInt;
> Fld: TField;
> begin
> inherited;
>
> if UpdateKind <> ukInsert then
> Exit;
>
> for I := 0 to Fields.Count -1 do
> begin
> Fld := Fields.Fields[I]
> if Fld.IsNull and
> ((Fld.DataType = ftAutoInc) or (LowerCase(Fld.FieldName) =
> 'id') and (Fld is TNumericField)) then
> begin
> La stId=FLib.GetLastAutoIncValue
> if LastId <= 0 then
> Exit;
>
> Edit;
> Fields[I].SetData(@LastId);
> Post;
> Exit;
> end;
> end;
> end;
> === END CODE ===
>
> [1] https://github.com/mdbs99/Greyhound
>
> Regards,
> Marcos Douglas
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
>
More information about the fpc-pascal
mailing list