rmWeiWuZjjlGatherDm.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. unit rmWeiWuZjjlGatherDm;
  2. interface
  3. uses
  4. SysUtils, Classes, ProjectData, DB, sdDB, DBClient, sdIDTree, BillsTree;
  5. type
  6. TZjjl = class
  7. private
  8. FCode: string;
  9. FCertificateCode: string;
  10. FBGLCode: string;
  11. FPegName: string;
  12. FBeginPeg: string;
  13. FEndPeg: string;
  14. FFBFXName: string;
  15. FUnitName: string;
  16. FDrawingCode: string;
  17. FFormulaMemo: string;
  18. FRelaFile: string;
  19. FBillsCode: string;
  20. FBillsName: string;
  21. FBillsUnits: string;
  22. FBillsPrice: Double;
  23. FFilterDrawingCode: string;
  24. FBillsCurDealQuantity: Double;
  25. FBillsCurDealTotalPrice: Double;
  26. FBillsCurQcQuantity: Double;
  27. FBillsCurQcTotalPrice: Double;
  28. FBillsCurGatherQuantity: Double;
  29. FBillsCurGatherTotalPrice: Double;
  30. FBillsEndDealQuantity: Double;
  31. FBillsEndDealTotalPrice: Double;
  32. FBillsEndQcQuantity: Double;
  33. FBillsEndQcTotalPrice: Double;
  34. FBillsEndGatherQuantity: Double;
  35. FBillsEndGatherTotalPrice: Double;
  36. FBillsOrgQuantity: Double;
  37. FBillsOrgTotalPrice: Double;
  38. FBillsMisQuantity: Double;
  39. FBillsMisTotalPrice: Double;
  40. FBillsOthQuantity: Double;
  41. FBillsOthTotalPrice: Double;
  42. FBillsQuantity: Double;
  43. FBillsTotalPrice: Double;
  44. FFenBuName: string;
  45. FDanWeiName: string;
  46. function MergeStr(AStr1, AStr2: string): string;
  47. public
  48. constructor Create(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  49. procedure Merge(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  50. end;
  51. TrmWeiWuZjjlGatherData = class(TDataModule)
  52. cdsZjjl: TClientDataSet;
  53. cdsZjjlCode: TWideStringField;
  54. cdsZjjlCertificateCode: TWideStringField;
  55. cdsZjjlBGLCode: TMemoField;
  56. cdsZjjlPegName: TWideStringField;
  57. cdsZjjlBeginPeg: TWideStringField;
  58. cdsZjjlEndPeg: TWideStringField;
  59. cdsZjjlFBFXName: TWideStringField;
  60. cdsZjjlUnitName: TWideStringField;
  61. cdsZjjlDrawingCode: TWideStringField;
  62. cdsZjjlFormulaMemo: TMemoField;
  63. cdsZjjlRelaFile: TMemoField;
  64. cdsZjjlBillsCode: TStringField;
  65. cdsZjjlBillsName: TWideStringField;
  66. cdsZjjlBillsUnits: TWideStringField;
  67. cdsZjjlBillsPrice: TFloatField;
  68. cdsZjjlFilterDrawingCode: TWideStringField;
  69. cdsZjjlBillsCurDealQuantity: TFloatField;
  70. cdsZjjlBillsCurDealTotalPrice: TFloatField;
  71. cdsZjjlBillsCurQcQuantity: TFloatField;
  72. cdsZjjlBillsCurQcTotalPrice: TFloatField;
  73. cdsZjjlBillsCurGatherQuantity: TFloatField;
  74. cdsZjjlBillsCurGatherTotalPrice: TFloatField;
  75. cdsZjjlBillsEndDealQuantity: TFloatField;
  76. cdsZjjlBillsEndDealTotalPrice: TFloatField;
  77. cdsZjjlBillsEndQcQuantity: TFloatField;
  78. cdsZjjlBillsEndQcTotalPrice: TFloatField;
  79. cdsZjjlBillsEndGatherQuantity: TFloatField;
  80. cdsZjjlBillsEndGatherTotalPrice: TFloatField;
  81. cdsZjjlBillsOrgQuantity: TFloatField;
  82. cdsZjjlBillsOrgTotalPrice: TFloatField;
  83. cdsZjjlBillsMisQuantity: TFloatField;
  84. cdsZjjlBillsMisTotalPrice: TFloatField;
  85. cdsZjjlBillsOthQuantity: TFloatField;
  86. cdsZjjlBillsOthTotalPrice: TFloatField;
  87. cdsZjjlBillsQuantity: TFloatField;
  88. cdsZjjlBillsTotalPrice: TFloatField;
  89. cdsZjjlFenBuName: TWideStringField;
  90. cdsZjjlDanWeiName: TWideStringField;
  91. private
  92. FZjjlList: TList;
  93. FPreText: string;
  94. FPhaseIndex: Integer;
  95. function FindZjjl(ARec: TsdDataRecord; ANode: TBillsIDTreeNode): TZjjl;
  96. procedure GatherZjjl(AProjectData: TProjectData);
  97. procedure WriteData;
  98. public
  99. function AssignData(AProjectData: TProjectData): TDataSet;
  100. end;
  101. implementation
  102. uses
  103. ZhAPI, PhaseData, UtilMethods, BillsMeasureDm;
  104. {$R *.dfm}
  105. function GetThirdPartString(const AStr: string; AFilter: Char = '-'): string;
  106. var
  107. sgs: TStringList;
  108. begin
  109. sgs := TStringList.Create;
  110. try
  111. sgs.Delimiter := AFilter;
  112. sgs.DelimitedText := AStr;
  113. while sgs.Count > 3 do
  114. sgs.Delete(sgs.Count - 1);
  115. Result := sgs.DelimitedText;
  116. finally
  117. sgs.Free;
  118. end;
  119. end;
  120. function GetLeafXmj(ANode: TBillsIDTreeNode): TBillsIDTreeNode;
  121. begin
  122. Result := ANode;
  123. while Assigned(Result) and (Result.Rec.B_Code.AsString <> '') do
  124. Result := TBillsIDTreeNode(Result.Parent);
  125. end;
  126. function GetLeafXmjDrawingCode(ANode: TBillsIDTreeNode): String;
  127. var
  128. vLeafXmj: TsdIDTreeNode;
  129. begin
  130. Result := '';
  131. vLeafXmj := GetLeafXmj(ANode);
  132. if Assigned(vLeafXmj) then
  133. Result := vLeafXmj.Rec.ValueByName('DrawingCode').AsString;
  134. end;
  135. { TZjjl }
  136. constructor TZjjl.Create(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  137. // 取树结构的第ALevel层节点的名称(level从0开始)
  138. function GetNameByLevel(ANode: TBillsIDTreeNode; ALevel: Integer): string;
  139. begin
  140. Result := '';
  141. if not Assigned(ANode) then Exit;
  142. if ANode.Level = ALevel then
  143. Result := ANode.Rec.Name.AsString
  144. else if ANode.Level > ALevel then
  145. Result := GetNameByLevel(TBillsIDTreeNode(ANode.Parent), ALevel);
  146. end;
  147. function GetNameDanWei(ANode: TBillsIDTreeNode): string;
  148. begin
  149. // 取树结构的第二层节点的名称
  150. Result := GetNameByLevel(ANode, 1);
  151. end;
  152. // ANode为计量单元节点,APegNode为桩号节点
  153. function GetNameFenBu(ANode, APegNode: TBillsIDTreeNode): string;
  154. var
  155. vCurNode: TBillsIDTreeNode;
  156. begin
  157. // 如果计量单元节点的名称为桩号(转化为判断计量单元节点与桩号节点为同一个)
  158. if not Assigned(APegNode) or (ANode.ID = APegNode.ID) then
  159. // 取树结构的第三层节点的名称
  160. Result := GetNameByLevel(ANode, 2)
  161. // 否则,取桩号节点的子节点的名称
  162. else
  163. begin
  164. vCurNode := ANode;
  165. while vCurNode.Level > APegNode.Level + 1 do
  166. vCurNode := TBillsIDTreeNode(vCurNode.Parent);
  167. Result := vCurNode.Rec.Name.AsString;
  168. end;
  169. end;
  170. function GetPegNode(ANode: TBillsIDTreeNode): TBillsIDTreeNode;
  171. begin
  172. Result := nil;
  173. if not Assigned(ANode) then Exit;
  174. if CheckPeg(ANode.Rec.Name.AsString) then
  175. Result := ANode
  176. else
  177. Result := GetPegNode(TBillsIDTreeNode(ANode.Parent));
  178. end;
  179. var
  180. vLeafXmj, vPegNode: TBillsIDTreeNode;
  181. begin
  182. FCode := ARec.ValueByName('Code').AsString;
  183. FCertificateCode := ARec.ValueByName('CertificateCode').AsString;
  184. FBGLCode := ARec.ValueByName('BGLCode').AsString;
  185. FPegName := ARec.ValueByName('PegName').AsString;
  186. FBeginPeg := ARec.ValueByName('BeginPeg').AsString;
  187. FEndPeg := ARec.ValueByName('EndPeg').AsString;
  188. FFBFXName := ARec.ValueByName('FBFXName').AsString;
  189. FUnitName := ARec.ValueByName('UnitName').AsString;
  190. FDrawingCode := ARec.ValueByName('DrawingCode').AsString;
  191. FFormulaMemo := ARec.ValueByName('FormulaMemo').AsString;
  192. FRelaFile := ARec.ValueByName('RelaFile').AsString;
  193. FBillsCode := ANode.Rec.ValueByName('B_Code').AsString;
  194. FBillsName := ANode.Rec.ValueByName('Name').AsString;
  195. FBillsUnits := ANode.Rec.ValueByName('Units').AsString;
  196. FBillsPrice := ANode.Rec.ValueByName('Price').AsFloat;
  197. FFilterDrawingCode := GetThirdPartString(GetLeafXmjDrawingCode(ANode));
  198. if Assigned(AStageRec) then
  199. begin
  200. FBillsCurDealQuantity := AStageRec.ValueByName('DealQuantity').AsFloat;
  201. FBillsCurDealTotalPrice := AStageRec.ValueByName('DealTotalPrice').AsFloat;
  202. FBillsCurQcQuantity := AStageRec.ValueByName('QcQuantity').AsFloat;
  203. FBillsCurQcTotalPrice := AStageRec.ValueByName('QcTotalPrice').AsFloat;
  204. FBillsCurGatherQuantity := AStageRec.ValueByName('GatherQuantity').AsFloat;
  205. FBillsCurGatherTotalPrice := AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  206. FBillsEndDealQuantity := AStageRec.ValueByName('DealQuantity').AsFloat;
  207. FBillsEndDealTotalPrice := AStageRec.ValueByName('DealTotalPrice').AsFloat;
  208. FBillsEndQcQuantity := AStageRec.ValueByName('QcQuantity').AsFloat;
  209. FBillsEndQcTotalPrice := AStageRec.ValueByName('QcTotalPrice').AsFloat;
  210. FBillsEndGatherQuantity := AStageRec.ValueByName('GatherQuantity').AsFloat;
  211. FBillsEndGatherTotalPrice := AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  212. end;
  213. FBillsOrgQuantity := ANode.Rec.OrgQuantity.AsFloat;
  214. FBillsOrgTotalPrice := ANode.Rec.OrgTotalPrice.AsFloat;
  215. FBillsMisQuantity := ANode.Rec.MisQuantity.AsFloat;
  216. FBillsMisTotalPrice := ANode.Rec.MisTotalPrice.AsFloat;
  217. FBillsOthQuantity := ANode.Rec.OthQuantity.AsFloat;
  218. FBillsOthTotalPrice := ANode.Rec.OthTotalPrice.AsFloat;
  219. FBillsQuantity := ANode.Rec.Quantity.AsFloat;
  220. FBillsTotalPrice := ANode.Rec.TotalPrice.AsFloat;
  221. vLeafXmj := GetLeafXmj(ANode);
  222. vPegNode := GetPegNode(ANode);
  223. FFenBuName := GetNameFenBu(vLeafXmj, vPegNode);
  224. FDanWeiName := GetNameDanWei(vLeafXmj);
  225. end;
  226. procedure TZjjl.Merge(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  227. begin
  228. FCertificateCode := MergeStr(FCertificateCode, ARec.ValueByName('CertificateCode').AsString);
  229. FBGLCode := MergeRelaBGL(FBGLCode, ARec.ValueByName('BGLCode').AsString);
  230. FDrawingCode := MergeStr(FDrawingCode, ARec.ValueByName('DrawingCode').AsString);
  231. FFormulaMemo := MergeStr(FFormulaMemo, ARec.ValueByName('FormulaMemo').AsString);
  232. FRelaFile := MergeStr(FRelaFile, ARec.ValueByName('RelaFile').AsString);
  233. if Assigned(AStageRec) then
  234. begin
  235. FBillsCurDealQuantity := FBillsCurDealQuantity + AStageRec.ValueByName('DealQuantity').AsFloat;
  236. FBillsCurDealTotalPrice := FBillsCurDealTotalPrice + AStageRec.ValueByName('DealTotalPrice').AsFloat;
  237. FBillsCurQcQuantity := FBillsCurQcQuantity + AStageRec.ValueByName('QcQuantity').AsFloat;
  238. FBillsCurQcTotalPrice := FBillsCurQcTotalPrice + AStageRec.ValueByName('QcTotalPrice').AsFloat;
  239. FBillsCurGatherQuantity := FBillsCurGatherQuantity + AStageRec.ValueByName('GatherQuantity').AsFloat;
  240. FBillsCurGatherTotalPrice := FBillsCurGatherTotalPrice + AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  241. FBillsEndDealQuantity := FBillsEndDealQuantity + AStageRec.ValueByName('DealQuantity').AsFloat;
  242. FBillsEndDealTotalPrice := FBillsEndDealTotalPrice + AStageRec.ValueByName('DealTotalPrice').AsFloat;
  243. FBillsEndQcQuantity := FBillsEndQcQuantity + AStageRec.ValueByName('QcQuantity').AsFloat;
  244. FBillsEndQcTotalPrice := FBillsEndQcTotalPrice + AStageRec.ValueByName('QcTotalPrice').AsFloat;
  245. FBillsEndGatherQuantity := FBillsEndGatherQuantity + AStageRec.ValueByName('GatherQuantity').AsFloat;
  246. FBillsEndGatherTotalPrice := FBillsEndGatherTotalPrice + AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  247. end;
  248. FBillsOrgQuantity := FBillsOrgQuantity + ANode.Rec.OrgQuantity.AsFloat;
  249. FBillsOrgTotalPrice := FBillsOrgTotalPrice + ANode.Rec.OrgTotalPrice.AsFloat;
  250. FBillsMisQuantity := FBillsMisQuantity + ANode.Rec.MisQuantity.AsFloat;
  251. FBillsMisTotalPrice := FBillsMisTotalPrice + ANode.Rec.MisTotalPrice.AsFloat;
  252. FBillsOthQuantity := FBillsOthQuantity + ANode.Rec.OthQuantity.AsFloat;
  253. FBillsOthTotalPrice := FBillsOthTotalPrice + ANode.Rec.OthTotalPrice.AsFloat;
  254. FBillsQuantity := FBillsQuantity + ANode.Rec.Quantity.AsFloat;
  255. FBillsTotalPrice := FBillsTotalPrice + ANode.Rec.TotalPrice.AsFloat;
  256. end;
  257. function TZjjl.MergeStr(AStr1, AStr2: string): string;
  258. begin
  259. if (AStr1 <> '') then
  260. begin
  261. if (AStr2 <> '') then
  262. Result := AStr1 + ';' + AStr2
  263. else
  264. Result := AStr1;
  265. end
  266. else
  267. begin
  268. if (AStr2 <> '') then
  269. Result := AStr2
  270. else
  271. Result := '';
  272. end;
  273. end;
  274. { TrmWeiWuZjjlGatherData }
  275. function TrmWeiWuZjjlGatherData.AssignData(
  276. AProjectData: TProjectData): TDataSet;
  277. begin
  278. FZjjlList := TList.Create;
  279. try
  280. if AProjectData.PhaseData.Active then
  281. begin
  282. FPreText := AProjectData.PhaseData.PhaseProperty.ZJJLPreText;
  283. FPhaseIndex := AProjectData.PhaseIndex;
  284. GatherZjjl(AProjectData);
  285. WriteData;
  286. end;
  287. Result := cdsZjjl;
  288. finally
  289. ClearObjects(FZjjlList);
  290. FZjjlList.Free;
  291. end;
  292. end;
  293. function TrmWeiWuZjjlGatherData.FindZjjl(ARec: TsdDataRecord; ANode: TBillsIDTreeNode): TZjjl;
  294. var
  295. sCode, sName, sUnits, sDrawingCode: string;
  296. fPrice: Double;
  297. i: Integer;
  298. vZ: TZjjl;
  299. begin
  300. sCode := ANode.Rec.ValueByName('B_Code').AsString;
  301. sName := ANode.Rec.ValueByName('Name').AsString;
  302. sUnits := ANode.Rec.ValueByName('Units').AsString;
  303. sDrawingCode := GetThirdPartString(GetLeafXmjDrawingCode(ANode));
  304. fPrice := ANode.Rec.valueByName('Price').AsFloat;
  305. Result := nil;
  306. for i := 0 to FZjjlList.Count - 1 do
  307. begin
  308. vZ := TZjjl(FZjjlList.Items[i]);
  309. if SameText(vZ.FBillsCode, sCode) and SameText(vZ.FBillsName, sName) and SameText(vZ.FBillsUnits, sUnits) and
  310. (PriceRoundTo(fPrice - vZ.FBillsPrice) < 0.00001) and
  311. SameText(sDrawingCode, vZ.FFilterDrawingCode) then
  312. begin
  313. Result := vZ;
  314. Break;
  315. end;
  316. end;
  317. end;
  318. procedure TrmWeiWuZjjlGatherData.GatherZjjl(AProjectData: TProjectData);
  319. var
  320. i: Integer;
  321. vNode: TBillsIDTreeNode;
  322. Rec, BillsRec, StageRec: TsdDataRecord;
  323. vZ: TZjjl;
  324. begin
  325. for i := 0 to AProjectData.PhaseData.ZJJLData.sddZJJL.RecordCount - 1 do
  326. begin
  327. Rec := AProjectData.PhaseData.ZJJLData.sddZJJL.Records[I];
  328. vNode := TBillsIDTreeNode(AProjectData.BillsMeasureData.BillsMeasureTree.FindNode(Rec.ValueByName('BillsID').AsInteger));
  329. StageRec := AProjectData.PhaseData.StageData.StageRecord(Rec.ValueByName('BillsID').AsInteger);
  330. if Assigned(Rec) and Assigned(vNode) then
  331. begin
  332. vZ := FindZjjl(Rec, vNode);
  333. if not Assigned(vZ) then
  334. begin
  335. vZ := TZjjl.Create(Rec, StageRec, vNode);
  336. FZjjlList.Add(vZ);
  337. end
  338. else
  339. vZ.Merge(Rec, StageRec, vNode);
  340. end;
  341. end;
  342. end;
  343. procedure TrmWeiWuZjjlGatherData.WriteData;
  344. function GetCodeFormat(ACount: Integer): string;
  345. begin
  346. if ACount < 10 then
  347. Result := '-%d'
  348. else if ACount < 100 then
  349. REsult := '-%.2d'
  350. else if ACount < 1000 then
  351. Result := '-%.3d'
  352. else if ACount < 10000 then
  353. Result := '-%.4d'
  354. else if ACount < 100000 then
  355. Result := '-%.5d';
  356. end;
  357. var
  358. i: Integer;
  359. vZ: TZjjl;
  360. sFormat: String;
  361. begin
  362. cdsZjjl.Active := True;
  363. cdsZjjl.EmptyDataSet;
  364. if FPreText <> '' then
  365. sFormat := FPreText + Format('-%.2d', [FPhaseIndex]) + GetCodeFormat(FZjjlList.Count)
  366. else
  367. sFormat := FPreText + Format('%.2d', [FPhaseIndex]) + GetCodeFormat(FZjjlList.Count);
  368. for i := 0 to FZjjlList.Count - 1 do
  369. begin
  370. vZ := TZjjl(FZjjlList.Items[i]);
  371. cdsZjjl.Append;
  372. cdsZjjlCode.AsString := Format(sFormat, [i+1]);
  373. cdsZjjlCertificateCode.AsString := vZ.FCertificateCode;
  374. cdsZjjlBGLCode.AsString := vZ.FBGLCode;
  375. cdsZjjlPegName.AsString := vZ.FPegName;
  376. cdsZjjlBeginPeg.AsString := vZ.FBeginPeg;
  377. cdsZjjlEndPeg.AsString := vZ.FEndPeg;
  378. cdsZjjlFBFXName.AsString := vZ.FFBFXName;
  379. cdsZjjlUnitName.AsString := vZ.FUnitName;
  380. cdsZjjlDrawingCode.AsString := vZ.FDrawingCode;
  381. cdsZjjlFormulaMemo.AsString := vZ.FFormulaMemo;
  382. cdsZjjlRelaFile.AsString := vZ.FRelaFile;
  383. cdsZjjlBillsCode.AsString := vZ.FBillsCode;
  384. cdsZjjlBillsName.AsString := vZ.FBillsName;
  385. cdsZjjlBillsUnits.AsString := vZ.FBillsUnits;
  386. cdsZjjlBillsPrice.AsFloat := vZ.FBillsPrice;
  387. cdsZjjlFilterDrawingCode.AsString := vZ.FFilterDrawingCode;
  388. cdsZjjlBillsCurDealQuantity.AsFloat := vZ.FBillsCurDealQuantity;
  389. cdsZjjlBillsCurDealTotalPrice.AsFloat := vZ.FBillsCurDealTotalPrice;
  390. cdsZjjlBillsCurQcQuantity.AsFloat := vZ.FBillsCurQcQuantity;
  391. cdsZjjlBillsCurQcTotalPrice.AsFloat := vZ.FBillsCurQcTotalPrice;
  392. cdsZjjlBillsCurGatherQuantity.AsFloat := vZ.FBillsCurGatherQuantity;
  393. cdsZjjlBillsCurGatherTotalPrice.AsFloat := vZ.FBillsCurGatherTotalPrice;
  394. cdsZjjlBillsEndDealQuantity.AsFloat := vZ.FBillsEndDealQuantity;
  395. cdsZjjlBillsEndDealTotalPrice.AsFloat := vZ.FBillsEndDealTotalPrice;
  396. cdsZjjlBillsEndQcQuantity.AsFloat := vZ.FBillsEndQcQuantity;
  397. cdsZjjlBillsEndQcTotalPrice.AsFloat := vZ.FBillsEndQcTotalPrice;
  398. cdsZjjlBillsEndGatherQuantity.AsFloat := vZ.FBillsEndGatherQuantity;
  399. cdsZjjlBillsEndGatherTotalPrice.AsFloat := vZ.FBillsEndGatherTotalPrice;
  400. cdsZjjlBillsOrgQuantity.AsFloat := vZ.FBillsOrgQuantity;
  401. cdsZjjlBillsOrgTotalPrice.AsFloat := vZ.FBillsOrgTotalPrice;
  402. cdsZjjlBillsMisQuantity.AsFloat := vZ.FBillsMisQuantity;
  403. cdsZjjlBillsMisTotalPrice.AsFloat := vZ.FBillsMisTotalPrice;
  404. cdsZjjlBillsOthQuantity.AsFloat := vZ.FBillsOthQuantity;
  405. cdsZjjlBillsOthTotalPrice.AsFloat := vZ.FBillsOthTotalPrice;
  406. cdsZjjlBillsQuantity.AsFloat := vZ.FBillsQuantity;
  407. cdsZjjlBillsTotalPrice.AsFloat := vZ.FBillsTotalPrice;
  408. cdsZjjlFenBuName.AsString := vZ.FFenBuName;
  409. cdsZjjlDanWeiName.AsString := vZ.FDanWeiName;
  410. cdsZjjl.Post;
  411. end;
  412. end;
  413. end.