这里有2个问题: 1.之前运行还正常的,为什么会突然在某部机器上进入这模块时报'不支持的rmf格式'这个错(非管理员用户才报错,administrator正常),在其他机上的非管理员用户运行却没错,而且好像和管理员权限又没关系,因为我们试过给当前用户管理权限了还是出现同样的问题.重建个非管理员用户,程序开始可以正常运行,但过会就又出现这个错误了. 2.出现问题1后,我上网找了下,参考http://topic.csdn.net/t/20050906/11/4252259.html这个帖子2楼的建议,把RMReport报表控件的StoreInDFM设成false,程序模块倒是正常运行了,但是到打印预览时又报错'list index out of bounds(0)'(没改StoreInDFM为false之前打印都好好的,所以应该不是tsingfeng_bhcss所说的打印机问题,不过还是谢谢你的答案)能解决一个问题就行,可以的话2个都解决了当然更好,分少了的话再想办法加...
list index out of bounds(0)根据这判断,是你这边的这个list的count为0,也就是 没有item,而你还是去取了item[0]的值建议取值前先判断count的值是否大于0,或者循环中为for i := 0 to list.cout -1
看下打印过程有没有问题: procedure tbPrintAction(); var PrintDate,UserID:TRMView; begin qryQItems.DisableControls; rmrQItemsReport.LoadFromFile('psdh_Report.rmf');//StoreInDFM设成false新加进去的 rmrQItemsReport.Title := '配送订货单'; // 下面注释的这一段加进去报错,改StoreInDFM属性之前存在都没错的. { PrintDate:=rmrQItemsReport.Pages.Pages[0].FindObject('PrintDate'); if PrintDate<>nil then PrintDate.Memo.Text:='打印日期:'+FormatDateTime('yyyy-mm-dd hh:mm:ss',Module1.SysDate+Module1.SysTime); UserID:=rmrQItemsReport.Pages.Pages[0].FindObject('UserID'); if UserID<>nil then UserID.Memo.Text:='操作人:'+Module1.UserName; } rmrQItemsReport.ShowReport; qryQItems.EnableControls; end;
1.之前运行还正常的,为什么会突然在某部机器上进入这模块时报'不支持的rmf格式'这个错(非管理员用户才报错,administrator正常),在其他机上的非管理员用户运行却没错,而且好像和管理员权限又没关系,因为我们试过给当前用户管理权限了还是出现同样的问题.重建个非管理员用户,程序开始可以正常运行,但过会就又出现这个错误了.
2.出现问题1后,我上网找了下,参考http://topic.csdn.net/t/20050906/11/4252259.html这个帖子2楼的建议,把RMReport报表控件的StoreInDFM设成false,程序模块倒是正常运行了,但是到打印预览时又报错'list index out of bounds(0)'(没改StoreInDFM为false之前打印都好好的,所以应该不是tsingfeng_bhcss所说的打印机问题,不过还是谢谢你的答案)能解决一个问题就行,可以的话2个都解决了当然更好,分少了的话再想办法加...
procedure tbPrintAction();
var
PrintDate,UserID:TRMView;
begin
qryQItems.DisableControls;
rmrQItemsReport.LoadFromFile('psdh_Report.rmf');//StoreInDFM设成false新加进去的
rmrQItemsReport.Title := '配送订货单';
// 下面注释的这一段加进去报错,改StoreInDFM属性之前存在都没错的.
{
PrintDate:=rmrQItemsReport.Pages.Pages[0].FindObject('PrintDate');
if PrintDate<>nil then
PrintDate.Memo.Text:='打印日期:'+FormatDateTime('yyyy-mm-dd hh:mm:ss',Module1.SysDate+Module1.SysTime);
UserID:=rmrQItemsReport.Pages.Pages[0].FindObject('UserID');
if UserID<>nil then
UserID.Memo.Text:='操作人:'+Module1.UserName; }
rmrQItemsReport.ShowReport;
qryQItems.EnableControls;
end;