unit MainForm;
interface
uses
Business.System, Business.Model, Business.Forms, Business.Data;
type
TMainForm = class(TForm)
FuncBroker: TFuncBroker;
InfoBrokerMOLDPLANUPLOADINFO: TInfoBroker;
Panel: TPanel;
DocViewMOLDPLANUPLOADINFO_JHSJWG: TDocView;
Panel1: TPanel;
ExcelToTable1: TExcelToTable;
MoldPlanDataSetBroker: TDataSetBroker;
NodeDataSetBroker: TDataSetBroker;
OpenDialog1: TOpenDialog;
InDataSetBroker: TDataSetBroker;
ToolBar1: TToolBar;
btnInExcel: TToolButton;
ToolButton1: TToolButton;
btnOutExcel: TToolButton;
ToolButton2: TToolButton;
btnSave: TToolButton;
SaveDialog1: TSaveDialog;
procedure BizFormCreate(Sender: TObject);
procedure BizFormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure btnInExcelClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnOutExcelClick(Sender: TObject);
private
{private declarations}
procedure SetUpMakeAddress(lDataSet:TDataSet);
procedure SaveMoldDataSet(MoldDS:TDataSet);
procedure ImportExcel();
procedure FillMoldDataSet();
procedure TrimDataSet(TempDS:TDataSet);
procedure TransData(InDataSet: TDataSet);//获取导入数据集的表头
procedure CreateUserDataSet();
procedure MoldPlanToUserDS(ProjectID:string);//获取某项目下属的模具计划 拆分数据到用户数据集 进行显示
procedure DataGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
Function ValidateData(ProjectID:string):Boolean;
public
{public declarations}
NodeDataSet: TDataSet;
UserDataSet: TUserDataSet;
lNodeNameToIDs:TStrings;
FaultMoldID:TStrings;
ZZDIndex:Integer;
ProjectID:string;
TransType:string;
end;
implementation
{**************************************
procedure: TransData
Describe: 拆分数据集
Author: DeyuLiu
Date: 2008-06-27
**************************************/}
procedure TMainForm.TransData(InDataSet:TDataSet);
var
lHeaderNames:TStrings;
i,j:Integer;
flag:Boolean;
str:string;
begin
try
if (InDataSet<>nil) and (InDataSet.RecordCount>1) then
begin
UserDataSet.Open;
UserDataSet.DisableControls;
UserDataSet.EmptyDataSet;
flag:=true;
lHeaderNames:=TStringList.Create;
InDataSet.First;
for i:=0 to InDataSet.FieldCount-1 do
begin
lHeaderNames.Add(InDataSet.Fields.AsString);
//第一个制造地
if flag then
begin
str:=InDataSet.Fields.AsString;
if (str.Length>3) and (str.Substring(str.Length-3,3)='制造地') then
begin
ZZDIndex:=i+1;
flag:=false;
end;
end;
end;
InDataSet.Next;
for j:=1 to InDataSet.RecordCount-1 do
begin
UserDataSet.Append;
for i:=0 to InDataSet.FieldCount-1 do
begin
try
if lHeaderNames<>'' then
begin
UserDataSet.FieldByName(lNodeNameToIDs.Values[lHeaderNames]).AsString := InDataSet.Fields.AsString; //赋值方式需要修改
end
else
begin
break;
end;
except
Dialogs.ShowMessage('导入的文档格式不正确');
UserDataSet.EmptyDataSet;
end;
end;
UserDataSet.Post;
InDataSet.Next;
end;
ValidateData(ProjectID);
UserDataSet.EnableControls;
end;
finally
// lHeaderNames.Free;
end;
end;
{**************************************
procedure: CreateUserDataSet
Describe: 创建自定义的用户数据集进行数据表现
Author: DeyuLiu
Date: 2008-06-27
**************************************/}
procedure TMainForm.CreateUserDataSet();
var
i : integer;
tempBizField: TBizField;
source:TDataSource;
database:TBizRef;
connectionstring:string;
connectionurl:array of string;
begin
try
source:=TDataSource.Create(self);
NodeDataSet:=NodeDataSetBroker.DataSet;
if (UserDataSet = nil) then
begin
UserDataSet := TUserDataSet.Create(self); //创建自定义数据集
//UserDataSet.ConnectionString:=CommonFunction.TCOMMONFUNCTION.GetSystemDBConnectionString;
lNodeNameToIDs:=TStringList.Create;
UserDataSet.DisableControls;
NodeDataSet.Open;
try
UserDataSet.ID := 'UserDataSet';
tempBizField := TUserDataField.Create(UserDataSet); //创建用户数据字段
tempBizField.DataSet := UserDataSet; //指定字段所在的数据集
tempBizField.ID := 'MoldID'; //设置字段ID
tempBizField.DataType := TDataType.dtString; //设置字段类型
tempBizField.Size := 10; //设置字段大小
tempBizField.DisplayName := '制号'; //设置字段显示名称
tempBizField.Name := 'MoldID';
lNodeNameToIDs.Add('制号=MoldID'); //设置字段名称
tempBizField := TUserDataField.Create(UserDataSet); //创建用户数据字段
tempBizField.DataSet := UserDataSet; //指定字段所在的数据集
tempBizField.ID := 'BZT'; //设置字段ID
tempBizField.DataType := TDataType.dtString; //设置字段类型
tempBizField.Size := 4; //设置字段大小
tempBizField.DisplayName := '标准套'; //设置字段显示名称
tempBizField.Name := 'BZT';
lNodeNameToIDs.Add('标准套=BZT'); //设置字段名称
NodeDataSet.First;
for i := 1 to NodeDataSet.RecordCount do
begin
if NodeDataSet.FieldByName('IsDisplay').AsInteger = 1 then
begin
tempBizField := TUserDataField.Create(UserDataSet); //创建用户数据字段
tempBizField.DataSet := UserDataSet; //指定字段所在的数据集
tempBizField.ID := NodeDataSet.FieldByName('NodeAlias').AsString; //设置字段ID
tempBizField.DataType := TDataType.dtString; //设置字段类型
tempBizField.Size := 12; //设置字段大小
tempBizField.ValidChars:='-';
tempBizField.DisplayName := NodeDataSet.FieldByName('NodeName').AsString; //设置字段显示名称
tempBizField.Name := NodeDataSet.FieldByName('NodeAlias').AsString; //设置字段名称
lNodeNameToIDs.Add(NodeDataSet.FieldByName('NodeName').AsString + '=' +NodeDataSet.FieldByName('NodeAlias').AsString);
end;
NodeDataSet.Next;
end;
NodeDataSet.First;
for i := 1 to NodeDataSet.RecordCount do
begin
if NodeDataSet.FieldByName('IsDisplay').AsInteger = 1 then
begin
tempBizField := TUserDataField.Create(UserDataSet); //创建用户数据字段
tempBizField.DataSet := UserDataSet; //指定字段所在的数据集
tempBizField.ID := NodeDataSet.FieldByName('NodeAlias').AsString + 'ZZD'; //设置字段ID
tempBizField.DataType := TDataType.dtString; //设置字段类型
tempBizField.Size := 16; //设置字段大小
tempBizField.DisplayName := NodeDataSet.FieldByName('NodeName').AsString + '制造地'; //设置字段显示名称
tempBizField.Name := NodeDataSet.FieldByName('NodeAlias').AsString + 'ZZD'; //设置字段名称
lNodeNameToIDs.Add(NodeDataSet.FieldByName('NodeName').AsString + '制造地=' +NodeDataSet.FieldByName('NodeAlias').AsString + 'ZZD');
//定义查找属性
database:=TBizRef.Create(self);
connectionstring:=CommonFunction.TCOMMONFUNCTION.GetSystemDBConnectionString;
connectionurl:=connectionstring.Split(['=']);
database.URL:=connectionurl[1];
tempBizField.LookupDef.DataBase:=database;
tempBizField.LookupDef.Kind:=TLookupKind.lkDataValues;
tempBizField.LookupDef.ValidateKind:=TLookupValidateKind.vkMust;
tempBizField.LookupDef.SQL.Text:='select FDisplayName from TDEPT where FPARENTGUID=(select FGUID from TDept where FID=''TQM'' ) ';
tempBizField.LookupDef.KeyField:='FDisplayName';
tempBizField.LookupDef.DisplayField:='FDisplayName';
//tempBizField.LookupDef.DropDownButton:=true;
tempBizField.LookupDef.Options:=[TLookupOption.loDropDownButton, TLookupOption.loDropDownList];
end;
NodeDataSet.Next;
end;
source.DataSet:=UserDataSet;
UserDataSet.Open;
MoldPlanUploadInfo.TJHSJWG(DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc).DataGrid.DataSource:=source;
UserDataSet.EnableControls;
except
UserDataSet.Free;
UserDataSet := nil;
raise;
end;
end
else
Dialogs.ShowMessage('自定义数据集不能被创建');
finally
//source.Free;
//lNodeNameToIDs.Free;
end;
end;
{**************************************
procedure: ImportExcel
Describe: 导入Excel到临时数据集
Author: Panyc
Date: 2008-06-23
**************************************/}
procedure TMainForm.ImportExcel();
var
ErrStr:string;
begin
try
ErrStr:='';
InDataSetBroker.DataSet.Open;
InDataSetBroker.DataSet.EmptyDataSet;
if OpenDialog1.Execute then
begin
MoldPlanUploadInfo.TJHSJWG(DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc).DataGrid.Cursor:=Business.Forms.Controls.crAppStart;
//MoldPlanUploadInfo.TJHSJWG(DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc).DataGrid.Cursor:=Business.Forms.Controls;
excelToTable1.FileName:=OpenDialog1.FileName;
ExcelToTable1.Execute(ErrStr);
TrimDataSet(InDataSetBroker.DataSet);
TransData(InDataSetBroker.DataSet);
SetUpMakeAddress(UserDataSet);
MoldPlanUploadInfo.TJHSJWG(DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc).DataGrid.Cursor:=Business.Forms.Controls.crDefault;
end;
Except
dialogs.ShowMessage('导入格式不正确');
UserDataSet.EmptyDataSet;
InDataSetBroker.DataSet.EmptyDataSet;
end;
end;
{**************************************
procedure: FillMoldDataSet
Describe: 填充模具计划数据集 该数据集与数据库同构
Author: Panyc
Date: 2008-06-24
**************************************/}
procedure TMainForm.FillMoldDataSet();
var
MoldPlanDS:TDataSet; //模具计划数据集
NodeDS:TDataSet; //节点数据集
FieldName,MoldID,NodeID,NodeName,MakeCompanyID,MakeCompanyName:string; //列名 模具编号
PlanOperator,MakeCompanyValue:string; //计划操作者
lQuery:TQuery;
RelationNodeName,RelationNodeID:string;
BuChang:integer;
sql:string; //查询语句
PlanDate:string;
RelPlanDate:string;
FieldCount,i,isExist:integer;
tempDate:TDateTime;
begin
try
lQuery:=TQuery.Create(nil);
lQuery.ConnectionString:=CommonFunction.TCOMMONFUNCTION.GetSystemDBConnectionString;
MoldPlanDS:=MoldPlanDataSetBroker.DataSet;
NodeDS:=NodeDataSetBroker.DataSet;
FieldCount:=UserDataSet.Fields.Count;
// PlanOperator:=SystemCore.TSystemCore.Operator.ID;
MoldPlanDS.Open;
MoldPlanDS.EmptyDataSet;
UserDataSet.First;
while not UserDataSet.Eof do //遍历演示数据集的行
begin
MoldID:=UserDataSet.FieldByName('MoldID').AsString;
NodeDS.Open;
NodeDS.First;
while not NodeDS.Eof do //轮询节点表
begin
isExist:=1;
RelationNodeID:='';
MakeCompanyID:='';
FieldName:='';
NodeID:=NodeDS.FieldByName('NodeID').AsString; //获取节点编号
NodeName:=NodeDS.FieldByName('NodeName').AsString; //获取节点名称
if NodeDS.FieldByName('IsDisplay').AsInteger=1 then // 当前节点数据在Excel中是存在的
begin
for i:=0 to FieldCount-1 do //遍历显示数据集的列
begin
if UserDataSet.Fields.DisplayName=NodeName then //找到和节点对应的列
begin
FieldName:=UserDataSet.Fields.FieldName;
break;
end;
end;
PlanDate:=UserDataSet.FieldByName(FieldName).AsString; //取出该列对应的值
if PlanDate='-' then //判断数据库中该节点是否有数据 如果有维持原有数据 同时将标示位置为0 如果不存在数据 则填充空
begin //表示该节点不存在
sql:='select PlanDate from AM_TMOLDPLAN where NodeID='''+NodeID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
PlanDate:=lQuery.FieldByName('PlanDate').AsString
else
PlanDate:='';
isExist:=0;
end;
MakeCompanyName:=FieldName+'ZZD';//去制造地的编号
MakeCompanyValue:= UserDataSet.FieldByName(MakeCompanyName).AsString;
sql:='select FID from TDEPT where FDisplayName='''+ MakeCompanyValue+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
MakeCompanyID:=lQuery.FieldByName('FID').AsString;
end
else
begin
RelationNodeID:=NodeDS.FieldByName('RelNodeID').AsString;
if RelationNodeID='' then
begin
//没有关联节点
PlanDate:='';
end
else
begin
//有关联节点
sql:='select NodeName from AM_TPlanNode where NodeID='''+RelationNodeID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
RelationNodeName:=lQuery.FieldByName('NodeName').AsString;
for i:=0 to FieldCount-1 do //遍历显示数据集的列
begin
if UserDataSet.Fields.DisplayName=RelationNodeName then //找到和节点对应的列
begin
FieldName:=UserDataSet.Fields.FieldName;
break;
end;
end;
RelPlanDate:=UserDataSet.FieldByName(FieldName).AsString; //如果关联节点为‘---'则看该节点在数据库中是否有初始值 有 维持 没有 置空 如果不是‘---‘重新计算
if RelPlanDate='-' then // 如果关联节点不存在 查看本身是否存在数据
begin
sql:='select PlanDate from AM_TMOLDPLAN where NodeID='''+NodeID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
PlanDate:=lQuery.FieldByName('PlanDate').AsString
else
PlanDate:='';
end
else
begin
//计算步长
BuChang:= NodeDS.FieldByName('Step').AsInteger;
tempDate:=SysUtils.StrToDateTime(RelPlanDate);
tempDate:=tempDate+BuChang;
PlanDate:= SysUtils.DateTimeToStr(tempDate);
end;
end;
end;
//将数据填充到保存数据集中
MoldPlanDS.Insert;
MoldPlanDS.FieldByName('NodeID').AsString:=NodeID;
MoldPlanDS.FieldByName('MoldID').AsString:=MoldID;
MoldPlanDS.FieldByName('MakeCompanyID').AsString:=MakeCompanyID;
MoldPlanDS.FieldByName('PlanDate').AsString:=PlanDate;
//MoldPlanDS.FieldByName('PlanOperatorID').AsString:=PlanOperator;
MoldPlanDS.FieldByName('IsExist').AsInteger:=isExist;
NodeDS.Next;
end;
UserDataSet.Next;
end;
finally
//lQuery.Free;
end;
end;
{**************************************
procedure: SaveMoldDataSet
Describe: 提交模具计划数据集 保存数据 同时覆盖项目表中的标准套值
Author: Panyc
Date: 2008-06-26
**************************************/}
procedure TMainForm.SaveMoldDataSet(MoldDS:TDataSet);
var
lQuery:TQuery;
sql:string;
NodeID,MoldID,MakeCompanyID,PlanOperatorID:string;
PlanDate:string ;
IsExist:string;
ID:string;
lTransactionHandle:TTransactionHandle;
bzt:string;
begin
try
lQuery:= TQuery.Create(nil);
lQuery.ConnectionString:=CommonFunction.TCOMMONFUNCTION.GetSystemDBConnectionString;
MoldDS.Open;
MoldDS.First;
try
lTransactionHandle := lQuery.Connection.Transaction.Start(False);
//修改标准套值 遍历显示的用户数据集
UserDataSet.Open;
UserDataSet.DisableControls;
UserDataSet.First;
while not UserDataSet.Eof do
begin
bzt:= UserDataSet.FieldByName('BZT').AsString;
MoldID:=UserDataSet.FieldByName('MoldID').AsString;
sql:='update AM_TMold set BZT='''+bzt+''' where MoldCode='''+MoldID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Execute;
UserDataSet.Next;
end;
UserDataSet.EnableControls;
while not MoldDS.Eof do
begin
//找当前记录在数据库中是否存在 存在则更新 不存在 添加
NodeID:=MoldDS.FieldByName('NodeID').AsString;
MoldID:=MoldDS.FieldByName('MoldID').AsString;
MakeCompanyID:=MoldDS.FieldByName('MakeCompanyID').AsString;
PlanDate:=MoldDS.FieldByName('PlanDate').AsString;;
ID:=MoldDS.FieldByName('ID').AsString;
//PlanOperatorID:= MoldDS.FieldByName('PlanOperatorID').AsString;
IsExist:=MoldDS.FieldByName('IsExist').AsString;
sql:='select * from AM_TMOLDPLAN where NodeID='''+NodeID+'''and MoldID='''+MoldID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
begin
//在数据库中存在数据 则更新
if PlanDate='' then
begin
sql:='update AM_TMOLDPLAN set MakeCompanyID='''+MakeCompanyID+
''',IsExist='''+IsExist+''',PlanOperatorID='''
+PlanOperatorID+''' where NodeID='''+NodeID+''' and MoldID='''+MoldID+'''';
end
else
begin
sql:='update AM_TMOLDPLAN set MakeCompanyID='''+MakeCompanyID+
''',PlanDate='''+PlanDate.ToString+''',IsExist='''+IsExist+''',PlanOperatorID='''
+PlanOperatorID+''' where NodeID='''+NodeID+''' and MoldID='''+MoldID+'''';
end;
end
else
begin
ID:=Business.System.JSCommon.CreateGUIDStr;
if PlanDate='' then
begin
sql:='insert into AM_TMOLDPLAN(ID,NodeID,MoldID,MakeCompanyID,PlanOperatorID,IsExist) values('''
+ID+''','''+NodeID+''','''+MoldID+''','''+MakeCompanyID+''','''+ PlanOperatorID+''','''+ IsExist+''')';
end
else
begin
sql:='insert into AM_TMOLDPLAN(ID,NodeID,MoldID,MakeCompanyID,PlanDate,PlanOperatorID,IsExist) values('''
+ID+''','''+NodeID+''','''+MoldID+''','''+MakeCompanyID+''','''+PlanDate.ToString+''','''+ PlanOperatorID+''','''+ IsExist+''')';
end;
end;
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Execute;
MoldDS.Next;
end;
lQuery.Connection.Transaction.Commit(lTransactionHandle);
Except
lQuery.Connection.Transaction.Rollback(lTransactionHandle);
end;
finally
//lQuery.Free;
end;
end;
{**************************************
procedure: SetUpMakeAddress
Describe: 填充数据集中的生产地 将空值填充为横纵向集成的数据
Author: Panyc
Date: 2008-06-25
**************************************/}
procedure TMainForm.SetUpMakeAddress(lDataSet:TDataSet);
var
i:integer;
inistr,str:string;
begin
//设置制造地
lDataSet.DisableControls;
lDataSet.First;
inistr:=lDataSet.Fields.FieldByNumber(ZZDIndex).AsString;
str:=inistr;
while not lDataSet.Eof do
begin
if lDataSet.Fields.FieldByNumber(ZZDIndex).AsString='' then
begin
lDataSet.Active:=true;
lDataSet.Edit;
lDataSet.Fields.FieldByNumber(ZZDIndex).AsString:= inistr;
str:=inistr;
end
else
begin
inistr:=lDataSet.Fields.FieldByNumber(ZZDIndex).AsString;
str:=inistr;
end;
for i:=20 to lDataSet.Fields.Count do
begin
if lDataSet.Fields.FieldByNumber(i).AsString='' then
begin
lDataSet.Active:=true;
lDataSet.Edit;
lDataSet.Fields.FieldByNumber(i).AsString:= str;
end
else
str:=lDataSet.Fields.FieldByNumber(i).AsString;
end;
lDataSet.Next;
end;
lDataSet.EnableControls;
end;
{**************************************
procedure: TrimDataSet
Describe: 处理数据集 显示数据集的显示方式为字符串 处理掉时间 保留日期
Author: Panyc
Date: 2008-06-25
**************************************/}
procedure TMainForm.TrimDataSet(TempDS:TDataSet);
var
i,j:integer;
arr:array of string;
begin
TempDS.Open;
TempDS.First;
for i:=0 to TempDS.RecordCount-1 do
begin
for j:=1 to TempDS.Fields.Count do
begin
arr:=TempDS.Fields.FieldByNumber[j].AsString.Split([' ']);
TempDS.Edit;
TempDS.Fields.FieldByNumber[j].AsString:=arr[0];
end;
TempDS.Next;
end;
end;
{**************************************
procedure: BizFormCreate
Describe: 窗体初始化 创建自定义的数据集
Author: Panyc
Date: 2008-06-25
**************************************/}
procedure TMainForm.BizFormCreate(Sender: TObject);
var
lParams:TStrings;
begin
//读出功能参数
lParams:=TStringList.Create;
lParams.Text:=FuncBroker.Func.Parameters;
ProjectID:=lParams.Values['ProjectID'];
TransType:=lParams.Values['Type'];
CreateUserDataSet();
DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc.Close;
DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc.Open(TDocMode.dmEdit,self);
MoldPlanUploadInfo.TJHSJWG(DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc).DataGrid.OnCustomDrawCell:=DataGridCustomDrawCell;
lParams.Free;
if TransType='Upload' then
begin
btnOutExcel.Enabled:=false;
end
else
begin
btnInExcel.Enabled:=false;
MoldPlanToUserDS(ProjectID);
end;
end;
{**************************************
procedure: BizFormCloseQuery
Describe: 关闭窗体时取消对数据已经更改的判断
Author: Panyc
Date: 2008-06-25
**************************************/}
procedure TMainForm.BizFormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=true;
end;
Function TMainForm.ValidateData(ProjectID:string):Boolean;
var
i:integer;
FieldValue,sql:string;
flag:Boolean;
lQuery:TQuery;
begin
try
if FaultMoldID=nil then
FaultMoldID:=TStringList.Create;
FaultMoldID.Clear;
flag:=true;
lQuery:=TQuery.Create(nil);
lQuery.ConnectionString:=CommonFunction.TCOMMONFUNCTION.GetSystemDBConnectionString;
//验证数据合法
if(UserDataSet<>nil) and (UserDataSet.RecordCount>1) then
begin
UserDataSet.Open;
UserDataSet.DisableControls;
UserDataSet.First;
while not UserDataSet.Eof do
begin
FieldValue:=UserDataSet.FieldByName('MoldID').AsString;
sql:='select * from AM_TMold where MoldCode='''+FieldValue+'''and MoldProjectID='''+ProjectID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if lQuery.IsEmpty then
begin
flag:=false;
FaultMoldID.Add(FieldValue);
//dialogs.ShowMessage('制号为:'+FieldValue+'的模具不属于当前项目!');
end;
UserDataSet.Next;
end;
if flag then
Result:=true
else
Result:=false;
end;
UserDataSet.EnableControls;
finally
//lQuery.Free;
end;
end;
{**************************************
procedure: MoldPlanToUserDS
Describe: 获取某项目下属的模具计划 拆分数据到用户数据集进行显示
Author: Panyc
Date: 2008-07-01
**************************************/}
procedure TMainForm.MoldPlanToUserDS(ProjectID:string);
var
lParam: TBizParam;
lQuery:TQuery;
MoldPlanDS:TDataSet;
NodeID,NodeName:string;
NodeAlias:string;
sql:string;
MoldID:string;
MakeCompanyName,MakeCompanyID:string;
MakeCompanyHeaderName:string;
begin
try
lQuery:=TQuery.Create(nil);
lQuery.ConnectionString:=CommonFunction.TCOMMONFUNCTION.GetSystemDBConnectionString;
lParam := SYSTEMUTILS.TContextUtils.GetParam(Self.Context, 'Biz:\OPERATION\AMCPMS\JHKZYWCSZ.ParamGroup', 'MoldProjectIDParam');
lParam.Value:=ProjectID;
MoldPlanDataSetBroker.DataSet.Open;
MoldPlanDataSetBroker.DataSet.Refresh;
MoldPlanDS:=MoldPlanDataSetBroker.DataSet;
MoldPlanDS.Open;
UserDataSet.Open;
UserDataSet.EmptyDataSet;
UserDataSet.DisableControls;
MoldPlanDS.First;
MoldID:='';
while not MoldPlanDS.Eof do //遍历模具计划数据集 显示某个项目下所有模具的计划数据
begin
if MoldPlanDS.FieldByName('MoldID').AsString<>MoldID then //查询节点
begin
UserDataSet.Append;
MoldID:=MoldPlanDS.FieldByName('MoldID').AsString;
UserDataSet.FieldByName('MoldID').AsString:=MoldID;
//查询标准套
sql:='select BZT from AM_TMold where MoldCode='''+MoldID+'''and MoldVersion=0';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
UserDataSet.FieldByName('bzt').AsString:=lQuery.FieldByName('BZT').AsString;
end;
NodeID:=MoldPlanDS.FieldByName('NodeID').AsString;
sql:='select NodeName,NodeAlias,IsDisplay from AM_TPLANNODE where NodeID='''+NodeID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
begin
if lQuery.FieldByName('IsDisplay').AsInteger=1 then
begin
NodeAlias:=lQuery.FieldByName('NodeAlias').AsString;
if (MoldPlanDS.FieldByName('PlanDate').AsString='') and (MoldPlanDS.FieldByName('IsExist').AsInteger=0) then
UserDataSet.FieldByName(NodeAlias).AsString:='-'
else
UserDataSet.FieldByName(NodeAlias).AsString:=MoldPlanDS.FieldByName('PlanDate').AsString;
MakeCompanyHeaderName:=NodeAlias+'ZZD';
MakeCompanyID:=MoldPlanDS.FieldByName('MakeCompanyID').AsString;
sql:='select FDisplayName from TDEPT where FID='''+ MakeCompanyID+'''';
lQuery.Close;
lQuery.CommandText:=sql;
lQuery.Open;
if not lQuery.IsEmpty then
begin
MakeCompanyName:=lQuery.FieldByName('FDisplayName').AsString;
UserDataSet.FieldByName(MakeCompanyHeaderName).AsString:=MakeCompanyName;
end;
end;
end;
MoldPlanDS.Next;
end;
UserDataSet.EnableControls;
finally
//lQuery.Free;
end;
// dialogs.ShowMessage(SysUtils.IntToStr(MoldPlanDataSetBroker.DataSet.RecordCount));
end;
{**************************************
procedure: DataGridCustomDrawCell
Describe: 重绘单元格的时候判断当前制号是否属于某项目
Author: Panyc
Date: 2008-07-01
**************************************/}
procedure TMainForm.DataGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
var
i:integer;
begin
if AColumn.Name<>'DataGridColumnMoldID' then
exit;
if FaultMoldID<>nil then
begin
for i:=0 to FaultMoldID.Count-1 do
begin
if AText=FaultMoldID then
begin
AFont.Color:=Business.System.Graphics.clRed;
end;
end;
end;
end;
{**************************************
procedure: btnInExcelClick
Describe: 导入Excel并填充磨具计划数据集
Author: Panyc
Date: 2008-07-03
**************************************/}
procedure TMainForm.btnInExcelClick(Sender: TObject);
begin
ImportExcel();
FillMoldDataSet();
//ValidateData(ProjectID);
end;
{**************************************
procedure: btnSaveClick
Describe: 保存提交模具计划数据集
Author: Panyc
Date: 2008-07-03
**************************************/}
procedure TMainForm.btnSaveClick(Sender: TObject);
begin
if ValidateData(ProjectID) then
SaveMoldDataSet(MoldPlanDataSetBroker.DataSet)
else
dialogs.ShowMessage('提交数据不合法,请检查数据!');
end;
{**************************************
procedure: btnOutExcelClick
Describe: DataGrid数据导出为Excel
Author: Panyc
Date: 2008-07-03
**************************************/}
procedure TMainForm.btnOutExcelClick(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
MoldPlanUploadInfo.TJHSJWG(DocViewMOLDPLANUPLOADINFO_JHSJWG.Doc).DataGrid.SaveToXLS(SaveDialog1.FileName,false);
end;
end;
end. |