导出excel之后,不能加载fastreport报表,为什么~~~~?急急急急急~分不够再给!!(30分)

  • 主题发起人 eileen2004
  • 开始时间
E

eileen2004

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