Delphi(tokyo)로 JSON타입으로 RESPONSE할때 마지막 데이타값으로만 들어갑니다 ㅠ
조회수 845회
objFind := TJSONObject.Create; objFind1 := TJSONArray.Create; objFind4 := TJSONObject.Create; objFind3 := TJSONArray.Create; objFind2 := TJSONObject.Create;
With nxQuery2.Create(self) do
begin
try
Database := nxDatabase1;
for I := 0 to nxQuery1.FieldByName('CNT').AsInteger - 1 do
begin
SQL.Text := ' SELECT A.* , B.NAME PET_NAME '+#13+
' ,B.SNO PET_SNO '+#13+
' FROM HOSPPET A, PET B '+#13+
' WHERE A.STATE = 7 '+#13+
' AND A.TERM_NO = :TERM_NO '+#13+
' AND A.PET_NO = B.SNO '+#13;
nxQuery2.ParamByName('TERM_NO').AsInteger := nxQuery1.FieldByName('SNO').AsInteger;
nxQuery2.open;
if nxQuery2.RecordCount > 0 then
begin
objFind4.AddPair('termNo' ,TJSONNumber.Create(nxQuery1.FieldByName('SNO').AsInteger));
objFind4.AddPair('termRegCnt' ,TJSONNumber.Create(nxQuery1.FieldByName('CNT').AsInteger));
objFind4.AddPair('termName' ,nxQuery1.FieldByName('TERM_NAME').AsString);
for j := 0 to nxQuery2.RecordCount - 1 do
begin
objFind2.AddPair('petname',nxQuery2.FieldByName('PET_NAME').AsString);
objFind2.AddPair('test2','34');
objfind3.Add(objfind2);
nxQuery2.Next;
end;
objFind4.AddPair('termRegList',objFind3);
objFind1.Add(objFind4);
end;
nxQuery1.Next;
end;
Result.AddPair('code',TJSONNumber.Create(200));
Result.AddPair('cmd' ,api_name);
Result.AddPair('msg' ,objFind1);
finally
free;
end;
end;
위와같이 코딩이되어있는상태로 실행을하면 아래와 같이 나옵니다. 위소스는 바깥쪽 1~6까지 FOR문을 돌면서 DB상 TERM_NO와 같을시 해당 이름을 뿌려주는 소스입니다. 두개의 큰 JSONARRAY로 이루어진건 2,6이란 TERM_NO가 있기때문이고 안쪽 REGLIST 쪽에 3개의 데이타가 나온이유는 DB상 ROW가 3줄이기 때문입니다. 아직 조금 수정되어야 하는 부분이 많지만 안쪽 ROW데이타값이 마지막 6에 해당하는 '마노'라는 이름의 데이타만 나오는 이유가 뭘까요?
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력