Hi,
Since upgrading to Delphi 10.2 and the latest version of DA, I’m getting this error when posting to a certain table:
An exception was raised on the server: Invalid GUID: ???.
I’m using FireDAC against an MSSQL database. The table in question has a GUID type column which I’m initialising using NewGUID in the client rules’ AfterInsert handler. The client populates the remaining columns and then posts the change and calls ApplyUpdates.
The server then throws this error. If I run the server in debug mode to try to trap the error, it’s deep in the bowels of the DA code when it’s executing the INSERT it has created on the fly. The error is reported as:
Project XXX raised exception class EConvertError with message ‘‘㑻㤳い䘲ⵆ䔰䈸㐭㌴ⴳあ㜰ㄭㅅ〷䘰㜸䐵絆’ is not a valid GUID value’.
The call stack at this point is:
:74acdb18 KERNELBASE.RaiseException + 0x48
:00428b46 ConvertErrorFmt + $1E
:00428c5d StringToGUID + $35
:00a9e0c4 TFDParam.GetAsGUIDs + $60
:00a9b45c TFDParam.GetData + $43C
:00bb4c76 ProcessArrayItem + $23A
:00bb4f6a TFDPhysODBCCommand.SetParamValues + $18E
:00bb54bc TFDPhysODBCCommand.InternalExecute + $EC
:00b95d6b Process_HandleSystemFailure + $6B
:00b95e9f Process_SingleRow + $47
:00b96df4 TFDPhysCommand.ExecuteBase + $1FC
:00b958b6 TFDPhysCommandAsyncExecute.Execute + $E
:00b52503 TFDStanAsyncExecutor.Run + $73
:00b906c8 TFDPhysCommand.ExecuteTask + $124
:00b97000 TFDPhysCommand.Execute + $60
:00b21b2d TFDCustomCommand.InternalExecute + $FD
:00b21df4 TFDCustomCommand.Execute + $30
:00b2817a TFDAdaptedDataSet.DoExecuteSource + $32
:00b2a495 TFDCustomQuery.ExecSQL + $D
uDAEBaseDataset.TDAEBaseDataset.Execute
uDABusinessProcessor.TDABusinessProcessor.ProcessDelta(TDAEFireDACConnection($87FA804) as IDAConnection,TDADelta($87A61E0) as IDADelta,[ctInsert,ctUpdate,ctDelete],$D048910)
DataAbstractService_Impl.TDataAbstractService.BP_ProcessChanges($D048910,[ctInsert,ctUpdate,ctDelete],True)
DataAbstractService_Impl.TDataAbstractService.UpdateData_StandardMode($D048A70)
DataAbstractService_Impl.TDataAbstractService.InternalUpdateData((TDADelta($87A61E0) as IDADelta),False)
DataAbstractService_Impl.TDataAbstractService.UpdateData(???)
ActivitiesService_Impl.TActivitiesService.UpdateActivityData($8711010,???)
Clarity_Invk.TActivitiesService_Invoker.Invoke_UpdateActivityData(TActivitiesService($769453C) as IInterface,TROBinMessage($8809944) as IROMessage,TROSCServerWorker($75F0AD8) as IROTransport,)
uROServer.TROInvoker.CustomHandleMessage(TROClassFactory($8828DB4) as IROClassFactory,TROBinMessage($8809944) as IROMessage,TROSCServerWorker($75F0AD8) as IROTransport,)
uROServer.TROInvoker.HandleMessage(???,???,TROSCServerWorker($75F0AD8) as IROTransport,)
uROServer.MainProcessMessage(TROBinMessage($8809944) as IROMessage,TROSCServerWorker($75F0AD8) as IROTransport,???,$8710E30,,True)
uROServer.TROMessageDispatcher.ProcessMessage(TROSCServerWorker($75F0AD8) as IROTransport,$8710D90,$8710E30,,True)
uROServer.TROServer.IntDispatchMessage($87DDD60,TROSCServerWorker($75F0AD8) as IROTransport,$8710D90,$8710E30,)
uROServer.TROServer.DispatchMessage(TROSCServerWorker($75F0AD8) as IROTransport,$8710D90,$8710E30,)
uROServer.TROServer.DispatchMessage(???,???,$8710E30)
uROBaseSuperTCPServer.TROInvokerQueueItem.Callback(???,???)
uROThreadPool.TROPooledThread.IntExecute
uROInitializedThread.TROInitializedThread.Execute
:004d66a8 ThreadProc + $4C
:0040bce2 ThreadWrapper + $2A
:747f38f4 KERNEL32.BaseThreadInitThunk + 0x24
:77675de3 ;
:77675dae ;
This is a total show-stopper for me right now and I can’t figure out what’s going on. Has something changed with regards to GUIDs in the latest version? Is this another FireDAC issue?