分享Delphi处理EXCEL源码,源码如下: (****************************************************************************************) var FExcelApp:Variant; // Excel App FCellRange:Variant; // Excel Range FPicture:Variant; // pictures FCellNo:string; // Cell Strings g_strHeaderSQL: string; // Special Header Dataset SQL g_strDetailSQL: string; // Special Detail Dataset SQL g_TemplateFile: string; // Special Filename g_iCopies:integer; // Special PrintCopies g_strDefaultPath:string = ‘D:\\\\测试\\\\‘; // Default Path g_strSpecialFile:string = ‘MARK & SPENCER UK WORD.XLS‘; // Special File Name (****************************************************************************************) procedure TNewLabdipQuery.btnPrintSampleCardClick(Sender: TObject);var i,j:integer; TemplateFile,tTemplateFile,iniTemplateFile: string; grid_Color_Code, grid_Customer, grid_Submit:string; // *色号 *客户名 *Shape iCopies:Integer; // *打印份数 iSheetCount:Integer; // *工作表数量 bNeedmultiSheet:Boolean; // *是否需要处理多个文档 bOpenLabDataSource:Boolean; // *是否成功打开数据源 ibSpecialCount: Integer; // *特殊色号数量 bSpecial:Boolean; (* *标识某些需要特殊处理的客户: 把这些客户的数据保存到一个Dataset, 最后再处理,主要是为了让"多个LD当只交1个SAHDE时 ,尽可能打在一张纸上" *) bEnablePrinted, bEnableSave:Boolean; // *For Debugbegin bNeedmultiSheet := false; ibSpecialCount := 0; bOpenLabDataSource := True; g_strHeaderSQL := ‘‘; g_strDetailSQL := ‘‘; g_TemplateFile := ‘‘; // 是否打印 Or 是否保存文件 bEnablePrinted := True; bEnableSave := False; if (not asp_GetNewcolorCode.Active) or (asp_GetNewcolorCode.Eof) then begin Application.Messagebox(Pchar(‘没有要处理的数据,请先查询后打印送样卡!‘), Pchar(‘提示‘),Mb_IconInforMation+MB_OK); exit; end; // 增加个提示,防止误点击 if Application.Messagebox(Pchar(‘你真的要打印送样卡吗?‘), Pchar(‘提示‘),Mb_IconInforMation+MB_YESNO) = id_no then exit; // 如打印较多,增加个提示 if ds_GetNewcolorCode.DataSet.RecordCount>10 then if Application.Messagebox(Pchar(‘当前打印的色号超过 10 个,你确认要打印吗?‘), Pchar(‘提示‘),Mb_IconInforMation+MB_YESNO) = id_no then exit; try try // 获取模板存放路径 iniTemplateFile := ReadTemplatePath(‘PTMParameters‘, ‘LabDip‘, ‘TemplatePath‘, g_strDefaultPath); g_strSpecialFile := iniTemplateFile + ReadTemplatePath(‘PTMParameters‘, ‘LabDip‘, ‘SpecialFile‘, g_strSpecialFile); except on e:Exception do begin Screen.Cursor := crDefault; raise Exception.Create(‘获取模板存放路径出现错误!‘); end; end; Screen.Cursor := crSQLWait; AddSampleCardInfoToSB(‘开始打印送样卡...‘); // 开始遍历处理记录中的每个色号 ds_GetNewcolorCode.DataSet.First; while not ds_GetNewcolorCode.DataSet.Eof do begin bSpecial := false; grid_Color_Code := UpperCase(Trim(ds_GetNewcolorCode.DataSet.FieldByName(‘Color_Code‘).Value)); grid_Customer := UpperCase(Trim(ds_GetNewcolorCode.DataSet.FieldByName(‘Customer‘).Value)); grid_Submit := UpperCase(Trim(ds_GetNewcolorCode.DataSet.FieldByName(‘Submit‘).Value)); // 需要特殊处理,暂只有一个特殊客户 if (grid_Customer=‘MARK & SPENCER UK‘) AND (Length(grid_Submit)=1) then //if (grid_Customer=‘MARK & SPENCER UK‘) then begin inc(ibSpecialCount); bSpecial := True; //ShowMessage(‘ibSpecialCount‘); end; AddSampleCardInfoToSB(‘正在处理客户 [‘ + grid_Customer + ‘] 的资料...‘); // 获取 Excel 模板格式名 TemplateFile := Trim(GetSampleCardInfo(grid_Customer, grid_Submit, 0)); tTemplateFile := TemplateFile; TemplateFile := iniTemplateFile+ TemplateFile + ‘.xls‘; if bSpecial then begin g_TemplateFile := TemplateFile; TemplateFile := g_strSpecialFile; end; // 如果返回空的格式名,则不处理,继续下一个色号 if TemplateFile=‘‘ then begin ds_GetNewcolorCode.DataSet.Next; Continue; end; // 获取打印份数 iCopies := GetSampleCardInfo(grid_Customer, grid_Submit, 1); if bSpecial then begin g_iCopies := iCopies; iCopies := 1; end; //*** //Memo1.Lines.Text := Memo1.Lines.Text + grid_Color_Code+#13#10+ grid_Customer+#13#10+grid_Submit+#13#10+Inttostr(iCopies); // Exit; // 打开 EXCEL 模板文件 AddSampleCardInfoToSB(‘正在处理客户 [‘ + grid_Customer + ‘] 的资料(打开 EXCEL 模板文件)...‘); try if not OpenExcelTemplate(TemplateFile, 1) then begin FreeExcelApp; ds_GetNewcolorCode.DataSet.Next; Continue; end; except on e:Exception do begin FreeExcelApp; Screen.Cursor := crDefault; raise Exception.Create(‘打开 EXCEL 模板文件出现错误(检查文件名与系统设定是否一致)!‘); end; end; // 打开 LabDip 数据源 (色号信息 & 对色仪导出的颜色值) //if not OpenLabDataSource(‘11220GNFD01‘, ‘A‘) then exit; AddSampleCardInfoToSB(‘正在处理客户 [‘ + grid_Customer + ‘] 的资料(打开 色号信息 & 对色仪导出的颜色值)...‘); try // 如果需要特殊处理的数据,只处理附带的那个文件,同时返回SQL指令给全局变数 if bSpecial then bOpenLabDataSource := OpenLabDataSource(grid_Color_Code, grid_Submit,1); bOpenLabDataSource := OpenLabDataSource(grid_Color_Code, grid_Submit,0); if not bOpenLabDataSource then begin FreeExcelApp; ds_GetNewcolorCode.DataSet.Next; Continue; end; except on e:Exception do begin FreeExcelApp; Screen.Cursor := crDefault; raise Exception.Create(‘打开 LabDip数据源出现错误!‘); end; end; // 获取当前工作表的数量 if bSpecial then iSheetCount := 1 else iSheetCount := FExcelApp.WorkSheets.Count; // 某些情况需要处理多个文档,加个回圈 for i:=1 to iSheetCount do begin // 寻找 Range Cell 并输出数据 AddSampleCardInfoToSB(‘正在处理客户 [‘ + grid_Customer + ‘] 的资料(寻找 Range Cell 并输出数据)...‘); try if not ExportDataToExcel(adoqryColorCode, adoqryColorInformation, i) then begin FreeExcelApp; ds_GetNewcolorCode.DataSet.Next; Continue; end; except on e:Exception do begin FreeExcelApp; Screen.Cursor := crDefault; raise Exception.Create(‘输出数据出现错误!‘); end; end; end; // 打印 if bEnablePrinted then begin for i:=1 to iSheetCount do begin FExcelApp.WorkSheets[i].Activate; for j:=1 to iCopies do begin FExcelApp.ActiveSheet.PrintOut; end end; end; if bEnableSave then FExcelApp.ActiveWorkBook.SaveAs(iniTemplateFile+ tTemplateFile + ‘_副本.xls‘); FreeExcelApp; ds_GetNewcolorCode.DataSet.Next; end; (* ************************************** *) (* 处理特殊客户,多个色号打印在一张纸上 *) (* 基本上与上面处理流程一样,只是没有回圈 *) (* ************************************** *) if ibSpecialCount > 0 then begin AddSampleCardInfoToSB(‘正在处理特殊色号的资料...‘); //打开数据集 g_strHeaderSQL := LeftStr(g_strHeaderSQL, Length(g_strHeaderSQL)-10); g_strDetailSQL := LeftStr(g_strDetailSQL, Length(g_strDetailSQL)-10); //Memo1.Lines.Text := g_strHeaderSQL + #13#10+ #13#10+g_strDetailSQL+#13#10+Inttostr(g_iCopies); //Exit; if not OpenDataSet(adoqryColorCode, g_strHeaderSQL, 0, false) then begin Screen.Cursor := crDefault; exit; end; if not OpenDataSet(adoqryColorInformation, g_strDetailSQL, 1, false) then begin Screen.Cursor := crDefault; exit; end; // 打开 EXCEL 模板文件 AddSampleCardInfoToSB(‘正在处理特殊色号的资料(打开 EXCEL 模板文件)...‘); try if not OpenExcelTemplate(g_TemplateFile, 1) then FreeExcelApp; except on e:Exception do begin FreeExcelApp; Screen.Cursor := crDefault; raise Exception.Create(‘打开 EXCEL 模板文件出现错误(检查文件名与系统设定是否一致)!‘); end; end; // 依据多少个色号记录,计算多少个电子档 // 一张纸只打印 4 个色号,小于4条记录就 默认一个电子档 if ibSpecialCount>4 then begin if (ibSpecialCount mod 4)=0 then ibSpecialCount := ibSpecialCount div 4 else ibSpecialCount := (ibSpecialCount div 4) + 1; end else ibSpecialCount := 1; AddSampleCardInfoToSB(‘正在处理特殊色号的资料(寻找 Range Cell 并输出数据)...‘); // 寻找 Range Cell 并输出数据 try if not ExportDataToExcel(adoqryColorCode, adoqryColorInformation, 1, True) then FreeExcelApp; except on e:Exception do begin FreeExcelApp; Screen.Cursor := crDefault; raise Exception.Create(‘输出数据出现错误!‘); end; end; // 打印 if bEnablePrinted then begin for i:=1 to ibSpecialCount do begin FExcelApp.WorkSheets[i].Activate; for j:=1 to g_iCopies do begin FExcelApp.ActiveSheet.PrintOut; end end; end; if bEnableSave then FExcelApp.ActiveWorkBook.SaveAs(g_TemplateFile + ‘_副本.xls‘); FreeExcelApp; end; except on e:Exception do begin if not VarIsEmpty(FExcelApp) then begin FExcelApp.Quit; Screen.Cursor := crDefault; FExcelApp := Unassigned; end; //raise Exception.Create(‘打印送样卡出现错误!‘); end; end; ds_GetNewcolorCode.DataSet.First; AddSampleCardInfoToSB(‘成功打印送样卡...‘); Screen.Cursor := crDefault; end; // 打开模板文件function TNewLabdipQuery.OpenExcelTemplate(vFilename: string; iTabsheet: Integer): Boolean;begin Result := false; try FExcelApp := CreateOleObject(‘Excel.Application‘); except on e:Exception do begin Application.Messagebox(Pchar(‘无法创建Excel元件,请检查这台电脑是否正常安装Excel软件!‘+e.Message), Pchar(‘警告‘),MB_ICONWARNING+MB_OK); end; end; FExcelApp.WorkBooks.Open(vFilename); FExcelApp.application.DisplayAlerts := false; FExcelApp.WorkSheets[iTabsheet].Activate; Result := true;end; // 打开数据源// iType=0 正常处理 iType>0 特殊处理function TNewLabdipQuery.OpenLabDataSource(vColor_name, vShape: string;iType:Byte): Boolean; // 设置SQL语句 function SetDataSourceSQL(AColor_name,AShape: string; i:Byte; bMergerUnion:Boolean):string; var strmergerSQL:string; strMath:String; begin Result := ‘‘; strmergerSQL := ‘‘; if bMergerUnion then strmergerSQL := ‘ UNION ALL ‘; if i=0 then Result := strmergerSQL + ‘SELECT DISTINCT TOP 1 a.color_code + ‘‘ ‘‘ + ‘‘‘ + AShape + ‘‘‘ AS Batch_Name, ‘ + ‘b.Comment,a.*,b.submit,customerName=c.customer, PrintDate=getdate() ‘ + ‘FROM artdb..rtcolorhead a ‘ + ‘INNER JOIN systemdb..pbcustomerlist c on c.customer_code=a.customer ‘ + ‘LEFT JOIN artdb.dbo.RtColorLabDIP b on a.color_code=b.color_code and b.times=(‘ + ‘SELECT MAX(times) FROM artdb.dbo.RtColorLabDIP where color_code=b.color_code) ‘ + ‘WHERE a.color_code=‘‘‘ + AColor_name + ‘‘‘ ‘ else begin // 计算 DC & DH 列 strMath := ‘ DC = ROUND( ‘ + ‘ SQRT(SQUARE(CIE_a) + SQUARE(CIE_b)) - ‘ + ‘ SQRT(SQUARE(CIE_a-CIE_da) + SQUARE(CIE_b-CIE_db)), ‘ + ‘ 2), ‘ + ‘ DH = ROUND( ‘ + ‘ SQRT( ‘ + ‘ SQUARE(CIE_DE) - ‘ + ‘ SQUARE ‘ + ‘ ( ‘ + ‘ SQRT(SQUARE(CIE_a) + SQUARE(CIE_b)) - ‘ + ‘ SQRT(SQUARE(CIE_a-CIE_da) + SQUARE(CIE_b-CIE_db)) ‘ + ‘ ) - ‘ + ‘ SQUARE(CIE_DL) ‘ + ‘ ), ‘ + ‘ 2 ‘ + ‘ ) ‘ ; Result := strmergerSQL + ‘SELECT *, ‘ + strMath + ‘FROM [Esquel].[dbo].[DTEBatch] WHERE Batch_Name=‘‘‘ + AColor_name + ‘ ‘ + AShape + ‘‘‘ ‘; end; end; // 打开数据集 function OpenDataSet(adoqry:TADOQuery; strSQL:string; i:byte; bHits:Boolean=true):Boolean; begin Result := false; adoqry.Close; adoqry.SQL.Clear; adoqry.SQL.Add(strSQL); try adoqry.Open; except on e:Exception do begin Application.Messagebox(Pchar(‘打开数据集出现错误!‘+e.Message), Pchar(‘提示‘),MB_ICONWARNING+MB_OK); exit; end; end; // 是否提示 if bHits then begin if adoqry.Eof then begin if i=0 then ShowMessage(‘色号不存在!‘) else ShowMessage(‘颜色信息不存在!‘); end; end; Result := true; end;var strHeaderSQL: string; strDetailSQL: string; strmergerSQL: string; bManyShape: Boolean; // 多个Shape ? minShape, MaxShape: string; i, j, k:integer;begin Result := false; bManyShape := False; if vShape=‘‘ then begin Application.Messagebox(Pchar(‘色号[‘ + vColor_name + ‘] Shape至少为一个,请检查这个色号是否正为试样!‘), Pchar(‘提示‘),MB_ICONWARNING+MB_OK); exit; end; minShape := LeftStr(vShape, 1); if Pos(‘-‘, vShape) > 0 then begin bManyShape := True; MaxShape := RightStr(vShape, 1); end; // 设置数据源的SQL语句 strHeaderSQL := SetDataSourceSQL(vColor_name,minShape,0, False); strDetailSQL := SetDataSourceSQL(vColor_name,minShape,1, False); // 某些特殊的情况需要不打开数据集,累计所有SQL指令,在本函数外一次性打开 if iType>0 then begin g_strHeaderSQL := g_strHeaderSQL + strHeaderSQL + ‘ UNION ALL ‘; g_strDetailSQL := g_strDetailSQL + strDetailSQL + ‘ UNION ALL ‘; end; (* Debug *) // Memo1.Clear;// Memo1.Lines.Text := strHeaderSQL; // strDetailSQL := SetDataSourceSQL(vColor_name,minShape,1, False);// Memo1.Lines.Text := Memo1.Lines.Text + chr(13)+chr(10)+strDetailSQL;// exit; } (* Debug *) // 有多个Shape时,循环处理 if bManyShape then begin i := ord(minShape[1])+1; j := Ord(MaxShape[1]); for k := i to j do begin strHeaderSQL := strHeaderSQL + SetDataSourceSQL(vColor_name,chr(i),0, True); strDetailSQL := strDetailSQL + SetDataSourceSQL(vColor_name,chr(j),1, True); {* 暂没有多个Shape的需求 *} {if iType>0 then begin g_strHeaderSQL := g_strHeaderSQL + strHeaderSQL + ‘ UNION ALL ‘; g_strDetailSQL := g_strDetailSQL + strDetailSQL + ‘ UNION ALL ‘; end;} end; end; // 打开数据集 if iType=0 then begin if not OpenDataSet(adoqryColorCode, strHeaderSQL, 0, false) then exit; if not OpenDataSet(adoqryColorInformation, strDetailSQL,1, false) then exit; end; Result := true; end; // 汇出资料到 Excel function TNewLabdipQuery.ExportDataToExcel(HeadDS, DetailDS: TDataSet; iTabSheet:Integer; bSpecial:boolean): Boolean;var iHDRField, iDTLField, iHDRRecord, iDTLRecord: Integer; begin Result := false; try HeadDS.First; iHDRRecord:=0; //循环主表的每一条记录 while Not HeadDS.Eof do begin iHDRRecord := iHDRRecord +1; // 需要特殊处理的客户,自动切换工作表 if bSpecial then begin if iHDRRecord mod 4 = 0 then inc(iTabSheet); end; //循环当前记录的每一个字段 for iHDRField := 0 to HeadDS.FieldCount - 1 do begin // 填充主表内容 FCellNo := HeadDS.Fields[iHDRField].FieldName + ‘_H_‘ + IntToStr(iHDRRecord); //根据CellNo的值查找Excel相关栏位赋值 FCellRange := FExcelApp.WorkSheets[iTabSheet].Cells.Find(FCellNo); While not VarIsClear(FCellRange) do begin FCellRange.Value := HeadDS.Fields[iHDRField].AsString; FCellRange := FExcelApp.WorkSheets[iTabSheet].Cells.Find(FCellNo); end; end; //填充当前主表的子表内容 DetailDS.Filtered := true; DetailDS.Filter := ‘Batch_Name = ‘‘‘ + HeadDS.FieldByName(‘Batch_Name‘).AsString + ‘‘‘‘; DetailDS.First; iDTLRecord := 0; // 处理明细表 while Not DetailDS.Eof do begin iDTLRecord := iDTLRecord + 1; if bSpecial then begin if iDTLRecord mod 4 = 0 then inc(iTabSheet); end; for iDTLField := 0 to DetailDS.FieldCount - 1 do begin FCellNo := DetailDS.Fields[iDTLField].FieldName + ‘_D_‘+IntToStr(iHDRRecord)+‘_‘+IntToStr(iDTLRecord); FCellRange := FExcelApp.WorkSheets[iTabSheet].Cells.Find(FCellNo); While not VarIsClear(FCellRange) do begin FCellRange.Value := DetailDS.Fields[iDTLField].AsString; FCellRange := FExcelApp.WorkSheets[iTabSheet].Cells.Find(FCellNo); end; end; DetailDS.Next; end; HeadDS.Next; end; DetailDS.Filtered := False; except on e:Exception do begin FExcelApp.Quit; FExcelApp := Unassigned; Application.Messagebox(Pchar(‘定位资料到Excel出现错误!‘+e.Message), Pchar(‘提示‘),Mb_IconInforMation+MB_OK); exit; end; end; Result := True; end; // 获取 格式名称 & 打印份数function TNewLabdipQuery.GetSampleCardInfo(vcustomer, vShape: string; iType:Byte): Variant;var j: integer; strSQL,strCondition :string; minShape, MaxShape: string;begin if iType=0 then Result := ‘‘ else Result := 1; minShape := LeftStr(vShape, 1); j := 1; // 默认1个Shape // 同一客户正常只有2种格式,要么1个Shape,要么大于1的Shape strCondition := ‘AND shape=:shape ‘; // 多少个Shape A-C if Pos(‘-‘, vShape) > 0 then begin MaxShape := RightStr(vShape, 1); j := Ord(MaxShape[1]) - ord(minShape[1]) + 1; end; if j > 1 then strCondition := ‘AND shape>:shape ‘; strSQL := ‘SELECT TOP 1 FormatName, PrintCopies FROM dbo.LabDipSampleCardFormat ‘ + ‘WHERE customer=:customer ‘ + strCondition; with ADOQuery do begin close; SQL.Clear; SQL.Add(strSQL); Parameters.ParamByName(‘customer‘).Value := vcustomer;// Parameters.ParamByName(‘shape‘).Value := j; Parameters.ParamByName(‘shape‘).Value := 1; try Active := True; if IsEmpty or Eof then begin Application.Messagebox(Pchar(‘系统不存在此格式,验证错误!‘), Pchar(‘提示‘),MB_ICONWARNING+MB_OK); exit; end; except on e:exception do begin Application.Messagebox(Pchar(‘打开[送样格式表]出现错误!‘+e.Message), Pchar(‘提示‘),MB_ICONWARNING+MB_OK); exit; end; end; end; if iType=0 then Result := ADOQuery.fieldbyname(‘FormatName‘).Value else Result := ADOQuery.fieldbyname(‘PrintCopies‘).Value; end; // Added StatusBar Infoprocedure TNewLabdipQuery.AddSampleCardInfoToSB(vInfo: string);begin SB1.SimpleText := ‘ ‘ + vInfo; SB1.Refresh;end; procedure TNewLabdipQuery.N3Click(Sender: TObject);begin with asp_GetNewcolorCode do begin close; //Parameters.ParamByName(‘@CondStr‘).Value :=‘b.Complete_Date is Null and a.cancel_date is null and a.Dip_Mode in (‘‘新样‘‘,‘‘重打‘‘,‘‘试样‘‘,‘‘复板‘‘,‘‘公用色号‘‘) and Restore_Time is Null ‘; //Parameters.ParamByName(‘@CondStr‘).Value :=‘a.color_code=‘‘11220GNFD01‘‘ or a.color_code=‘‘13044BLFD01‘‘ AND b.Complete_Date is Null and a.cancel_date is null and a.Dip_Mode in (‘‘新样‘‘,‘‘重打‘‘,‘‘试样‘‘,‘‘复板‘‘,‘‘公用色号‘‘) and Restore_Time is Null ‘; Parameters.ParamByName(‘@CondStr‘).Value :=‘a.color_code=‘‘13044BLFD01‘‘ AND b.Complete_Date is Null and a.cancel_date is null and a.Dip_Mode in (‘‘新样‘‘,‘‘重打‘‘,‘‘试样‘‘,‘‘复板‘‘,‘‘公用色号‘‘) and Restore_Time is Null ‘; Open; end; asp_GetNewColorCode.Filter:=‘‘; asp_GetNewcolorCode.Filtered:=false;end; // 使 cxGrid 的过滤与数据集同步procedure TNewLabdipQuery.cxGrid1DBTableView1DataControllerFilterBeforeChange( Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: String);begin asp_GetNewcolorCode.Filtered:=false; asp_GetNewcolorCode.Filter:=AFilterText; end; procedure TNewLabdipQuery.cxGrid1DBTableView1DataControllerFilterChanged( Sender: TObject);begin asp_GetNewcolorCode.Filtered:=true;end; // 释放 Excell App 元件procedure TNewLabdipQuery.FreeExcelApp;begin if not VarIsEmpty(FExcelApp) then begin FExcelApp.Quit; FExcelApp := Unassigned; end;end; // 读取 Ini 文件中的模板路径function TNewLabdipQuery.ReadTemplatePath(vIniName, vSection, vIden,vdefValue: string): string;var iniFile:Tinifile; strIniFile: string; iHandle:Integer; bReset:Boolean;begin Result := vdefValue; bReset := false; strIniFile := ExtractFilePath(Application.ExeName) + vIniName + ‘.ini‘; if not FileExists(strIniFile) then begin iHandle := FileCreate(strIniFile); bReset := true; FileClose(iHandle); end; try iniFile := Tinifile.Create(strIniFile); if bReset then begin // Writed some Parameters // iniFile.WriteString(vSection, vIden, vdefValue) inifile.WriteString(‘LabDip‘, ‘TemplatePath‘, g_strDefaultPath); inifile.WriteString(‘LabDip‘, ‘SpecialFile‘, g_strSpecialFile); end else Result := iniFile.ReadString(vSection, vIden, vdefValue); finally iniFile.Free; end; // ShowMessage(Result); end; // Copies DataSetprocedure TNewLabdipQuery.CopyDataSet(SourceDS:TADOQuery; DestDS: TADODataSet;iMode:Byte);var i:Integer;begin if not DestDS.Active then DestDS.Active := true; if iMode=0 then begin SourceDS.First; while not SourceDS.Eof do begin DestDS.Append; for i:=0 to SourceDS.FieldCount-2 do begin DestDS.Fields[i].Value := SourceDS.Fields[i].Value; end; SourceDS.Next; end; end else begin DestDS.Recordset := SourceDS.Recordset; end; exit;end; //打开数据集function TNewLabdipQuery.OpenDataSet(adoqry:TADOQuery; strSQL:string; i:byte; bHits:Boolean=true):Boolean;begin Result := false; adoqry.Close; adoqry.SQL.Clear; adoqry.SQL.Add(strSQL); try adoqry.Open; except on e:Exception do begin Application.Messagebox(Pchar(‘打开数据集出现错误!‘+e.Message), Pchar(‘提示‘),MB_ICONWARNING+MB_OK); exit; end; end; // 是否提示 if bHits then begin if adoqry.Eof then begin if i=0 then ShowMessage(‘色号不存在!‘) else ShowMessage(‘颜色信息不存在!‘); end; end; Result := true;end; procedure TNewLabdipQuery.MARKSPENCERUK1Click(Sender: TObject);begin with asp_GetNewcolorCode do begin close;(*14342BLFM0214381BLFD0212163GNFM014930BRFD01*) Parameters.ParamByName(‘@CondStr‘).Value :=‘a.color_code=‘‘5545NYFD01‘‘ AND b.Complete_Date is Null and a.cancel_date is null and a.Dip_Mode in (‘‘新样‘‘,‘‘重打‘‘,‘‘试样‘‘,‘‘复板‘‘,‘‘公用色号‘‘) and Restore_Time is Null ‘; Open; end; asp_GetNewColorCode.Filter:=‘‘; asp_GetNewcolorCode.Filtered:=false;end;
本文出自 “畅想天空” 博客,请务必保留此出处http://kinwar.blog.51cto.com/3723399/1622437
原文地址:http://kinwar.blog.51cto.com/3723399/1622437