RM问题,初学delphi问一个弱智问题!(300分)

  • 主题发起人 主题发起人 cuidekun98
  • 开始时间 开始时间
C

cuidekun98

Unregistered / Unconfirmed
GUEST, unregistred user!
一个表中有多条数据,Form 上有Edit,将表中的一条数据反映到了几个Edit上,请问,怎么才能用RM打出来呢?我的意思是RM怎么知道的要打印这一条数据呢,而不是其他的。他是怎么定位的呢?不会是用select 查询出来 然后,query1.open返回的吧。谁能给出一个简单的例子呢,谢谢了。此问题300分奉上!
 
什么意思?
locate?
 
就是用RM设计一个报表,怎么来定位表中的某条数据,让报表打印出来呢?
 
var
Options: TLocateOptions;
ADOQuery.Locate('code',code,Options);
'code'是表里的字段名,第二个code 是值与表里的'code'相对应.
 
procedure TForm1.FlatButton1Click(Sender: TObject);
var
RMReport:TRMReport;
begin
// if ADOQuery1.IsEmpty then
// Exit;
ADOQuery1.Close;
ADOQuery1.SQL.Text :='select * from JLCL_T';
ADOQuery1.Open;
try
RMReport1 := TRMReport.Create(Self);
RMReport1.LoadFromFile('cld.rmf');
RMReport1.PrepareReport;
RMReport1.ShowReport;
finally
RMReport1.Free;
end;
end;

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
运行中出这个错误,请大侠帮忙!
 
这么多分,没人愿意要吗?
 
var
RMReport:TRMReport;
这里错了,应该是
RMReport1
引起那个错误的原因
非法的内存操作,如数组越界、没有分配内存的对象、野指针等
 
RM只打印数据集中的数据,把你想要的数据过滤出来就可以
 
那你就把这几个EDIT写到一个内存表中,然后把这个内存表写到RM中不就行了,我用FR实现过你所说的功能.
 
呵呵:)看得云里雾里的
 
可以简单一点的,如果你的计算量不大的话。
var
Report: TrmReport;
t:TRmView;
PrintFile:string;
begin
PrintFile:=AppPath + '/' + PrintFilePath + '/' + self.Name + '.rmf';
if FileExists(PrintFile) then
begin
with frm_bbdo
begin
RmReport1.LoadFromFile(PrintFile);
Report:= rmReport1;
t:=Report.FindObject('memo_p');
if t<>nil then
t.Memo.Text:='打印人:'+UserName;
Report.ShowReport;
end;
end;
end;
在RM中要有一个Memo的Name为'memo_p'
 
多人接受答案了。
 
后退
顶部