📄 bas_qry_bomamount.pas
字号:
else
SQL_Txt:=SQL_Txt+' ItemCode='+
Quotedstr(lc_ItemCode_Set.Strings[i]);}
SQL_Txt:='exec findslave '+
' '''+ExtEdt_ItemCode.Text+''' ';
with AdoQry_Main do
begin
Close;
sql.clear;
sql.Add(SQL_Txt);
Prepared;
open;
{ for i:=0 to lc_ItemCode_Set.Count-1 do
begin
AdoQry_Main.Locate('ItemCode',lc_ItemCode_Set.Strings[i],[loCaseInsensitive]);
edit;
// fieldbyname('ItemName').asstring:=fieldbyname('ItemCode').asstring+
// ' '+
// fieldbyname('ItemName').asstring;
fieldbyname('PmBatch').asfloat:=
strtofloat(lc_qty.Strings[i]);
fieldbyname('CapacityHours').asfloat:=
strtofloat(lc_qty_Precent.Strings[i]);
end;}
end;
DBGridEh1.Refresh;
Pnl_Hint.Caption:='共计:'+inttostr(AdoQry_Main.RecordCount)+'行';
pnl_Hint.Refresh;
end;
procedure TFrm_Bas_Qry_BomAmount.ExtEdt_ItemCodeExit(Sender: TObject);
begin
inherited;
if lc_String=ExtEdt_ItemCode.Text then exit;
// lc_ItemCode_Set:=TstrinGlist.Create;
// lc_qty:=TstrinGlist.Create;
// lc_qty_Precent:=TstrinGlist.Create;
AdoQry_Main.Close;
DBGridEh1.Refresh;
if MasterCodeUsable(ExtEdt_ItemCode.Text) then
begin
pnl_Hint.Caption:='正在进行查询...请稍候!';
pnl_Hint.Refresh;
ExtEdt_ItemCode.Color:=clMenu;
Extedt_ItemCode.Refresh;
// GetBomAmount(ExtEdt_ItemCode.Text );
// Bom_Filter;
Show_it;
ExtEdt_ItemCode.Color:=clWindow;
SetPnl_Head(ExtEdt_ItemCode.Text );
ExtEdt_ItemCode.SetFocus ;
end
else
begin
DispInfo('输入的代码没找到!',1);
ExtEdt_ItemCode.SetFocus ;
Abort;
end;
// lc_ItemCode_Set.Free;
// lc_qty.Free;
// lc_qty_Precent.Free;
end;
procedure TFrm_Bas_Qry_BomAmount.Act_PreviewExecute(Sender: TObject);
begin
inherited;
if (AdoQry_Main.active=False ) or ( (AdoQry_Main.active=True) and (AdoQry_Main.recordCount=0)) then
begin
DispInfo('没有数据可打印预览!',3);
abort;
end;
SetReport;
ExtPrintReport1.preview;
end;
procedure TFrm_Bas_Qry_BomAmount.SetReport;
var
i,j:integer;
begin
inherited;
ExtPrintReport1.DataSet :=nil;
ExtPrintReport1.Headers.clear;
i:=0;
with ExtPrintReport1 do
begin
for j:=0 to DBGridEH1.Columns.Count-1 do
if DBGridEH1.Columns[j].Visible then
begin
Headers.Add;
Headers.Items[i].Caption :=DBGridEH1.Columns[j].Title.Caption;
Headers.Items[i].FieldName :=DBGridEH1.Columns[j].FieldName;
Headers.Items[i].DisplayWidth:=DBGridEH1.Columns[j].Width div (DBGridEH1.Columns[j].Font.Size-2);
Headers.Items[i].Alignment :=DBGridEH1.Columns[j].Alignment;
// if(Temp_DBGridEh.Columns[j].PickList.Count>0)and
// (Temp_DBGridEh.Columns[j].KeyList.Count>0)then
// begin
// Headers.Items[i].style:=dstransform;
// Headers.Items[i].TransformFunction:=GetTransValue;
// end
// else
// SetColumnsStyle(i,DBGridEH.Columns[j].FieldName);
inc(i);
end;
DataSet:=AdoQry_Main;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select SysParamValueC '+
'From SysParam '+
'where SysParamCode=''Name0''';//Name0是使用本系统的客户的名称
AdoQry_Tmp.Open;
ExtPrintReport1.Title1:=AdoQry_Tmp.fieldbyname('SysParamValueC').AsString;
ExtPrintReport1.Title2:='产品材料汇总表';
{AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Add('Select ReportName1,ISOCode1 '+
'From ReportCtrl '+
'where SysMenuId='''+MenuId+'''');
AdoQry_Tmp.Open;
ExtPrintReport1.Title2:=AdoQry_Tmp.fieldbyname('ReportName1').AsString;}
//ExtPrintReport1.SubTitle1:=AdoQry_Tmp.fieldbyname('ISOCode1').AsString;
//ExtPrintReport1.Title2:=Pnl_Title.Caption;
{//ExtPrintReport1.Subtitle2:=Lbl_ConditionTitle.Caption+Lbl_VendorCode.Caption+'
//'+Lbl_VendorName1.Caption+Lbl_VendorName.Caption;
//ExtPrintRepor1t.Subtitle3:=Lbl_include1.Caption+Lbl_include.Caption;}
ExtPrintReport1.subTitle1:='产品代码:'+ExtEdt_ItemCode.text+' '+
'产品名称:'+lbl_ItemName.Caption+' ';
end;
end;
procedure TFrm_Bas_Qry_BomAmount.Act_PrintExecute(Sender: TObject);
begin
inherited;
if (AdoQry_Main.active=False ) or ( (AdoQry_Main.active=True) and (AdoQry_Main.recordCount=0)) then
begin
DispInfo('没有数据可打印!',3);
abort;
end;
SetReport;
ExtPrintReport1.print(self);
end;
procedure TFrm_Bas_Qry_BomAmount.Act_ExcelExecute(Sender: TObject);
begin
inherited;
DBGridEhToExcel(DBGridEh1);
end;
procedure TFrm_Bas_Qry_BomAmount.DBGridEhToExcel(DBGridEh: TDBGridEh);
var
Excel,Sheet:variant;
KeyList:String;
i,j,x,y,z:Integer;
begin
Screen.Cursor:=CrAppStArt;
try
Excel:=UnAssigned;
Excel:=CreateOleObject('Excel.Application');
Excel.Visible:=False;
Excel.WorkBooks.Add;
except
Excel:=UnAssigned;
Screen.Cursor:=CrDefault;
DispInfo('本机未安装EXCEL,本功能必须在安装有EXCEL的电脑上才能运行!',1);
Abort;
end;
if varIsEmpty(Excel) then
begin
Screen.Cursor:=CrDefault;
DispInfo('建立Excel对象不成功,请重试!',1);
Excel:=UnAssigned;
Abort;
end;
x:=DbGridEh.FrozenCols;
DbGridEh.FrozenCols:=0;//设置锁定列为0
j:=0;
for i:=0 to DBGridEh.Columns.Count-1 do
begin
if DBGridEh.Columns[I].Visible Then
j:=j+1;
end; //取得显示列总列数
i:=Round(j/2);
Sheet:=Excel.WorkSheets[1];
//Sheet.Name:=TForm(DbGridEh.Parent.Parent).Caption;
Sheet.Cells[1,i]:=''''+TForm(DbGridEh.Parent.Parent).Caption;
Sheet.cells[2,1]:='日期:'+FormatDateTime('yyyy"年"mm"月"dd"日"',Now);
Sheet.Cells[2,j-1]:='制表:'+UserCode; //以上为表头输出
J:=1;
for I:=0 To DBGridEh.Columns.Count-1 Do
if DBGridEh.Columns[I].Visible Then
begin
Sheet.Cells[3,J]:=''''+DbGridEh.Columns[I].Title.Caption; //设置列标题
j:=j+1;
end;
if not DbGridEh.DataSource.DataSet.Active Then
begin
Excel.Quit;
Excel:=UnAssigned;
Screen.Cursor:=CrDefault;
Abort;
end;
with DBGridEh.DataSource.DataSet do
begin
First;
I:=4; //行记数
While Not Eof Do
begin
Y:=1;
For J:=0 To DbgridEh.Columns.Count-1 Do //列记数
begin
If DbGridEh.Columns[J].Visible Then
begin
KeyList:='';
If (DbgridEh.Columns[J].KeyList.Count>0) Then
For z:=0 To DbgridEh.Columns[J].KeyList.Count-1 Do
If KeyList='' Then
KeyList:=DbgridEh.Columns[J].KeyList.Strings[z]
Else
KeyList:=KeyList+','+DbgridEh.Columns[J].KeyList.Strings[z];
If (DbgridEh.Columns[J].KeyList.Count>0) And (Pos(fieldbyname(DbGridEh.Columns[J].FieldName).AsString,KeyList)>0)
And (DbgridEh.Columns[J].PickList.Count>=DbGridEh.Columns[J].KeyList.IndexOf(fieldbyname(DbGridEh.Columns[J].FieldName).AsString)) then
Sheet.Cells[I,Y]:=''''+DbGridEh.Columns[J].PickList.Strings[DbGridEh.Columns[J].KeyList.IndexOf(fieldbyname(DbGridEh.Columns[J].FieldName).AsString)]
Else
begin
If (fieldbyname(DbGridEh.Columns[J].FieldName).DataType=FtDateTime)
Or (fieldbyname(DbGridEh.Columns[J].FieldName).DataType=FtDate)
Or (fieldbyname(DbGridEh.Columns[J].FieldName).DataType=FtTime)Then
Sheet.Cells[I,Y]:=FormatDateTime('yyyy.mm.dd',fieldbyname(DbGridEh.Columns[J].FieldName).AsDateTime)
Else If (fieldbyname(DbGridEh.Columns[J].FieldName).DataType<>FtString) Then
Sheet.Cells[I,Y]:=fieldbyname(DbGridEh.Columns[J].FieldName).AsString
Else
Sheet.Cells[I,Y]:=''''+fieldbyname(DbGridEh.Columns[J].FieldName).AsString;
end;
Y:=Y+1;
end;
end;
I:=I+1;
Next;
end;
end;
Screen.Cursor:=CrDefault;
Excel.Visible:=True;
DbGridEh.FrozenCols:=X;
Excel:=UnAssigned;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -