|
由于从数据集中需要显示的数据比较多,故采用了编码添加表格文档单元格来显示从数据集的数据。现在的问题是,从数据集中有三条子项目纪录,但显示出来的三条子项目纪录都是相同的,请问这种问题如何解决?谢谢!如图所示:
procedure TMainForm.AddSubProject(SubProjectDS:TDataSet;SubProjectName:string);
var
lSheetDoc : TSheetDoc;
lSheet: TDataSheet;
lExporter: TSheetExporter;
lArea: TDataSheetArea;
lCell: TSheetCell;
I,J, lCnt: Integer;
begin
lSheetDoc := TSheetDoc(DocViewXMJBXX_XMJBXXBGWD.Doc);
lSheet := TDataSheet(lSheetDoc.Sheet);
lCnt := CurrentRow;
J := lCnt;
lSheet.Insert(1,lCnt-1,TSheetOperate.soAllRow,10,2);
lSheet.CellTypes[1,lCnt-1] := TCellType.ctCell;
lCell := lSheet.Cells[1,lCnt-1];
lCell.AsString := '子项目'+SubProjectName;
Inc(lCnt);
lSheet.Insert(1,lCnt-1,TSheetOperate.soAllRow,10,2);
lSheet.CellTypes[1,lCnt] := TCellType.ctCell;
lCell := lSheet.Cells[1,lCnt];
lCell.AsString := '项目名称';
lCell.Sides := [TCellSide.sLeft,TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[2,lCnt] := TCellType.ctField;
lCell := lSheet.Cells[2,lCnt];
TFieldCell(lCell).DataSetID := TSQLDataSet(SubProjectDS).ID;
TFieldCell(lCell).FieldName := SubProjectDS.FieldByName('ProjectName').FieldName;
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[7,lCnt] := TCellType.ctCell;
lCell := lSheet.Cells[7,lCnt];
lCell.AsString := '客户名称';
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop,TCellSide.sRight,TCellSide.sBottom];
lSheet.CellTypes[8,lCnt] := TCellType.ctField;
lCell := lSheet.Cells[8,lCnt];
TFieldCell(lCell).DataSetID := TSQLDataSet(SubProjectDS).ID;
TFieldCell(lCell).FieldName := SubProjectDS.FieldByName('CustomerName').FieldName;
lCell.Sides := [TCellSide.sLeft,TCellSide.sTop, TCellSide.sRight,TCellSide.sBottom];
Inc(lCnt);
Inc(lCnt);
lSheet.Insert(1,lCnt-1,TSheetOperate.soAllRow,10,2);
lSheet.CellTypes[1,lCnt] := TCellType.ctCell;
lCell := lSheet.Cells[1,lCnt];
lCell.AsString := '合同编号';
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[2,lCnt] := TCellType.ctField;
lCell := lSheet.Cells[2,lCnt];
TFieldCell(lCell).DataSetID := TSQLDataSet(SubProjectDS).ID;
TFieldCell(lCell).FieldName := SubProjectDS.FieldByName('ContractNo').FieldName;
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[7,lCnt] := TCellType.ctCell;
lCell := lSheet.Cells[7,lCnt];
lCell.AsString := '合同金额';
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[8,lCnt] := TCellType.ctField;
lCell := lSheet.Cells[8,lCnt];
TFieldCell(lCell).DataSetID := TSQLDataSet(SubProjectDS).ID;
TFieldCell(lCell).FieldName := SubProjectDS.FieldByName('ContractAmount').FieldName;
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
Inc(lCnt);
Inc(lCnt);
lSheet.Insert(1,lCnt-1,TSheetOperate.soAllRow,10,2);
lSheet.CellTypes[1,lCnt] := TCellType.ctCell;
lCell := lSheet.Cells[1,lCnt];
lCell.AsString := '合同签订时间';
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[2,lCnt] := TCellType.ctField;
lCell := lSheet.Cells[2,lCnt];
TFieldCell(lCell).DataSetID := TSQLDataSet(SubProjectDS).ID;
TFieldCell(lCell).FieldName := SubProjectDS.FieldByName('ContractSignDate').FieldName;
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[7,lCnt] := TCellType.ctCell;
lCell := lSheet.Cells[7,lCnt];
lCell.AsString := '合同结束时间';
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lSheet.CellTypes[8,lCnt] := TCellType.ctField;
lCell := lSheet.Cells[8,lCnt];
TFieldCell(lCell).DataSetID := TSQLDataSet(SubProjectDS).ID;
TFieldCell(lCell).FieldName := SubProjectDS.FieldByName('ContractEndDate').FieldName;
lCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
lArea := lSheet.Areas.Add(TAreaType.atDBArea) as TDataSheetArea;
lArea.DataSetID := TSQLDataSet(SubProjectDS).ID;
lArea.BoundsRect := Types.Bounds(J,1,lCnt,9);
lArea.EditorRepeatMode := TEditorRepeatMode.ermAutoGrow;
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
// lSheetDoc.Close;
// DocViewXMJBXX_XMJBXXBGWD.OpenView(TDocMode.dmEdit);
end;
procedure TMainForm.BizFormCreate(Sender: TObject);
begin
CurrentRow := TDataSheet(TSheetDoc(DocViewXMJBXX_XMJBXXBGWD.Doc).Sheet).AvailableRow;
end;
procedure TMainForm.BizFormShow(Sender: TObject);
var
I:Integer;
begin
if SubProjectDataSet.Active = false then
SubProjectDataSet.Active := true;
SubProjectDataSet.First;
while not SubProjectDataSet.Eof do
begin
I := I + 1;
SubProjectDataSet.Edit;
AddSubProject(SubProjectDataSet,sysUtils.IntToStr(I));
SubProjectDataSet.Next;
end;
FreshDoc;
end;
procedure TMainForm.FreshDoc;
var
lSheetDoc : TSheetDoc;
lSheet: TDataSheet;
lArea: TDataSheetArea;
begin
lSheetDoc := TSheetDoc(DocViewXMJBXX_XMJBXXBGWD.Doc);
lSheet := TDataSheet(lSheetDoc.Sheet);
lSheetDoc.Close;
DocViewXMJBXX_XMJBXXBGWD.OpenView(TDocMode.dmEdit);
end;
|
|