E
eileen2004
Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了一个工资系统,在界面上有把数据库的某个自段导入或导出excel的功能,为什么在一执行数据库导入或导出excel 代码后,在用fastreport编写的报表就没有办法预览,只能打开一个报表的灰色环境,给人感觉好想报表不能加载一样。<br> 后发现,只要不导入数据库或导出excel ,报表就是正常的,一旦执行导入或导出的功能,报表就不能看了。我的导入或导出使用ole 的方式实现的。以工资册导出到excel为例,代码如下:<br>procedure Tgzjsform.BitBtn3Click(Sender: TObject);<br>var<br> i: Integer;<br> XLApp: Variant;<br> Sheet: Variant;<br> sFilename,sPath:string;<br>begin<br> if gzjsform.SaveDialog1.Execute then<br> begin<br> sFileName := gzjsform.SaveDialog1.FileName;<br> sPath := ExtractFilePath(sFileName);<br> if Not DirectoryExists(sPath) then<br> begin<br> MessageDlg('输出文件的路径不存在!',mtWarning,[mbOK],0);<br> Exit;<br> end;<br> if FileExists(sFileName) then<br> begin<br> if MessageDlg('您选择输出的目标文件已经存在,是否覆盖?',mtConfirmation,[mbYes,mbNo],0) =mrNo then Exit;<br> end;<br> end<br> else exit;<br> if not VarIsEmpty(XLApp) then<br> begin<br> XLApp.DisplayAlerts := False;<br> XLApp.Quit;<br> VarClear(XLApp);<br> end;<br> try<br> XLApp := CreateOleObject('Excel.Application');<br> Screen.Cursor := crHourGlass;<br> except<br> Screen.Cursor := crDefault;<br> Exit;<br> end;<br> XLApp.WorkBooks.Add[XLWBatWorksheet];<br> XLApp.WorkBooks[1].WorkSheets[1].Name :='sheet';<br> Sheet := XLApp.Workbooks[1].WorkSheets[1];<br> XLApp.WorkBooks[1].Saved:=True;<br> sheet.cells[1,1]:='编号' ;<br> sheet.cells[1,2]:='姓名' ;<br> sheet.cells[1,3]:='月份' ;<br> sheet.cells[1,4]:='生活保障' ;<br> sheet.cells[1,5]:='岗位工资' ;<br> sheet.cells[1,6]:='工龄工资' ;<br> sheet.cells[1,7]:='企业服务津贴' ;<br> sheet.cells[1,8]:='岗位职称津贴' ;<br> sheet.cells[1,9]:='工资性补贴' ;<br> sheet.cells[1,10]:='补发工资' ;<br> sheet.cells[1,11]:='病事假扣工资' ;<br> sheet.cells[1,12]:='福利补贴' ;<br> sheet.cells[1,13]:='工资及福利合计 ' ;<br> sheet.cells[1,14]:='扣房租' ;<br> sheet.cells[1,15]:='扣电费' ;<br> sheet.cells[1,16]:='公积金' ;<br> sheet.cells[1,17]:='工会费' ;<br> sheet.cells[1,18]:='扣养老待业险';<br> sheet.cells[1,19]:='扣医疗保险' ;<br> sheet.cells[1,20]:='所得税' ;<br> sheet.cells[1,21]:='其他扣' ;<br> sheet.cells[1,22]:='扣款小计' ;<br> sheet.cells[1,23]:='实发工资' ;<br><br>with DataModule2.GzchangeQuery do<br>begin<br> first;<br> for i:=1 to DataModule2.GzchangeQuery.RecordCount do<br> begin<br> DataModule2.GzchangeQuery.Edit ;<br> Sheet.cells[i+1, 1] := DataModule2.GzchangeQuery.FieldByName('Enum').AsString ;<br> Sheet.cells[i+1, 2] := DataModule2.GzchangeQuery.FieldByName('Ename').asstring;<br> Sheet.cells[i+1, 3] := DataModule2.GzchangeQuery.FieldByName('Pdate').asstring;<br> Sheet.cells[i+1, 4] := DataModule2.GzchangeQuery.FieldByName('SHpay').asstring;<br> Sheet.cells[i+1, 5] := DataModule2.GzchangeQuery.FieldByName('GWpay').asstring;<br> Sheet.cells[i+1, 6] := DataModule2.GzchangeQuery.FieldByName('GLpay').asstring;<br> Sheet.cells[i+1, 7] := DataModule2.GzchangeQuery.FieldByName('Qyjt').asstring;<br> Sheet.cells[i+1, 8] := DataModule2.GzchangeQuery.FieldByName('Gwjt').asstring;<br> Sheet.cells[i+1, 9] := DataModule2.GzchangeQuery.FieldByName('Gzbt').asstring;<br> Sheet.cells[i+1, 10] := DataModule2.GzchangeQuery.FieldByName('Bfgz').asstring;<br> Sheet.cells[i+1, 11] := DataModule2.GzchangeQuery.FieldByName('Bsjk').asstring;<br> Sheet.cells[i+1, 12] := DataModule2.GzchangeQuery.FieldByName('Flbt').asstring;<br> Sheet.cells[i+1, 13] := DataModule2.GzchangeQuery.FieldByName('Gzflhj').asstring;<br> Sheet.cells[i+1, 14] := DataModule2.GzchangeQuery.FieldByName('Kfz').asstring;<br> Sheet.cells[i+1, 15] := DataModule2.GzchangeQuery.FieldByName('Kdf').asstring;<br> Sheet.cells[i+1, 16] := DataModule2.GzchangeQuery.FieldByName('Zfgjj').asstring;<br> Sheet.cells[i+1, 17] := DataModule2.GzchangeQuery.FieldByName('Kghf').asstring;<br> Sheet.cells[i+1, 18] := DataModule2.GzchangeQuery.FieldByName('Yldy').asstring;<br> Sheet.cells[i+1, 19] := DataModule2.GzchangeQuery.FieldByName('Ylbx').asstring;<br> Sheet.cells[i+1, 20] := DataModule2.GzchangeQuery.FieldByName('Ks').asstring;<br> Sheet.cells[i+1, 21] := DataModule2.GzchangeQuery.FieldByName('Qtkk').asstring;<br> Sheet.cells[i+1, 22] := DataModule2.GzchangeQuery.FieldByName('Kkxj').asstring;<br> Sheet.cells[i+1, 23] := DataModule2.GzchangeQuery.FieldByName('Sfgz').asstring;<br> post;<br> next;<br> end;<br> end;<br> Try<br> XLApp.DisplayAlerts := False;<br> XLApp.WorkBooks[1].SaveAs(sFileName); //保存;<br> XLApp.DisplayAlerts := True;<br> XLApp.Workbooks[1].close;<br> XLApp.quit;<br> XLApp:=Unassigned;<br> except<br> end;<br> Screen.Cursor := crDefault;<br> MessageDlg('您的通讯录已成功导出至Excel,文件名为'+sFileName+'!',mtInformation,[mbOK],0);<br><br><br>end;<br> 请各位高手帮忙看一看,到底是为什么导致只要导出导入就不能加载报表????急啊~~~ ,分不够再给!!!