HI,
I’ve below code :
[ROServiceMethod]
[ROCustom('HttpApiPath','getevtgamedet')]
function getevtgamedet(GAMEM_KEY_SYS:integer): binary;
function TAllTableService.getevtgamedet(GAMEM_KEY_SYS:integer): binary;
var
srcData: IDADataset;
srcGrp, srcEvt, srcGdraw, srcGdrawD : IDADataset;
sjoson:TDAJSONDataStreamer;
wb:TDAWhereBuilder;
cdsResult:TDaMemDataTable;
begin
try
Result := TROHttpApiResult.Create(HTTP_200_code, id_ContentType_application_json_charset_utf8,'',false);
cdsResult:=CreateResultInfo;
cdsResult.Append;
cdsResult.FieldByName('TableName').AsString := 'GAMEM_TBL';
cdsResult.FieldByName('START_TM').AsDateTime := now;
wb:=TDAWhereBuilder.Create;
wb.Expression :=
wb.NewBinaryExpression(
wb.NewField('','GAMEM_KEY_SYS'),
wb.NewConstant(GAMEM_KEY_SYS),dboequal) ;
srcData := AllTableDASchema.NewDataset(Connection,'GAMEM_TBL',[],wb.Xml);
srcData.Open;
cdsResult.FieldByName('TableRows').AsInteger := srcData.RecordCount;
cdsResult.FieldByName('END_TM').AsDateTime := now;
cdsResult.FieldByName('Result').AsString := '1';
cdsResult.Post;
cdsResult.Append;
cdsResult.FieldByName('TableName').AsString := 'EVT_TBL';
cdsResult.FieldByName('START_TM').AsDateTime := now;
wb.Expression :=
wb.NewBinaryExpression(
wb.NewField('','EVT_KEY_SYS'),
wb.NewConstant(srcData.FieldByName('GAMEM_GEVENT_SYS_FK').AsInteger),dboequal) ;
srcEvt := AllTableDASchema.NewDataset(Connection,'EVT_TBL',[],wb.Xml);
cdsResult.FieldByName('TableRows').AsInteger := srcData.RecordCount;
cdsResult.FieldByName('END_TM').AsDateTime := now;
cdsResult.FieldByName('Result').AsString := '1';
cdsResult.Post;
cdsResult.Append;
cdsResult.FieldByName('TableName').AsString := 'GDRAW_MTR';
cdsResult.FieldByName('START_TM').AsDateTime := now;
wb.Expression :=
wb.NewBinaryExpression(
wb.NewField('','GDRAW_KEY_SYS'),
wb.NewConstant(srcData.FieldByName('GAMEM_GDRAW_SYS_FK').AsInteger),dboequal) ;
srcGdraw := AllTableDASchema.NewDataset(Connection,'GDRAW_MTR',[],wb.Xml);
srcGdraw.Open;
cdsResult.FieldByName('TableRows').AsInteger := srcGdraw.RecordCount;
cdsResult.FieldByName('END_TM').AsDateTime := now;
cdsResult.FieldByName('Result').AsString := '1';
cdsResult.Post;
cdsResult.Append;
cdsResult.FieldByName('TableName').AsString := 'GDRAW_DET';
cdsResult.FieldByName('START_TM').AsDateTime := now;
wb.Expression :=
wb.NewBinaryExpression(
wb.NewField('','GDRAWD_KEY_SYS'),
wb.NewConstant(srcData.FieldByName('GAMEM_BLUE_GDRAWD_SYS_FK').AsInteger),dboequal) ;
srcGdrawD := AllTableDASchema.NewDataset(Connection,'GDRAW_DET',[],wb.Xml);
cdsResult.FieldByName('TableRows').AsInteger := srcGdrawD.RecordCount;
cdsResult.FieldByName('END_TM').AsDateTime := now;
cdsResult.FieldByName('Result').AsString := '1';
cdsResult.Post;
cdsResult.Append;
cdsResult.FieldByName('TableName').AsString := 'grp_all_view';
cdsResult.FieldByName('START_TM').AsDateTime := now;
wb.Expression :=
wb.NewBinaryExpression(
wb.NewField('','GRP_KEY_SYS'),
wb.NewConstant(srcGdraw.FieldByname('GDRAW_TREE_SYS_FK').AsInteger),dboequal);
srcGrp := AllTableDASchema.NewDataset(Connection,'grp_all_view',[],wb.Xml);
cdsResult.FieldByName('TableRows').AsInteger := srcGrp.RecordCount;
cdsResult.FieldByName('END_TM').AsDateTime := now;
cdsResult.FieldByName('Result').AsString := '1';
cdsResult.Post;
Except
On E:Exception Do
Begin
CodeSite.Send('getEventMsg:'+E.Message);
End;
End;
sjoson:=TDAJSONDataStreamer.Create(Self);
Try
sjoson.Initialize(Result,aiwrite);
try
sjoson.WriteDataset( (cdsResult as IDADataset), [woRows], -1);
sjoson.WriteDataset(srcData, [ woRows], -1);
sjoson.WriteDataset(srcEvt, [ woRows], -1);
sjoson.WriteDataset(srcGdraw, [ woRows], -1);
sjoson.WriteDataset(srcGdrawD, [ woRows], -1);
sjoson.WriteDataset(srcGrp, [ woRows], -1);
finally
sjoson.Finalize;
end;
FreeAndNil(sjoson);
srcData := Nil;
srcEvt := Nil;
srcGdraw := Nil;
srcGdrawD := Nil;
srcGrp :=Nil;
cdsResult.Close;
FreeAndNil(cdsResult);
FreeAndNil(wb);
Except
On E:Exception Do
Begin
CodeSite.Send('getEventMsgSyn:'+E.Message);
End;
End;
end;
Delphi 11.1 , RODA : 10.0.0.1545
Testing Case: Jmeter use httpAPI post method to call , concurrent 15 thread in loop repeat call this httpAPI method.
I get the address violation when debug to run I get the attached picture breakpoint on the call stack.
I’ve also tested in delphi 10.4.1 with RODA 10.0.0.1495. I get the same error.
Please advise how to locate the error.
Joe