如何实现只对可勾选的记录进行打印,请帮助 (50分)

  • 主题发起人 chengcheng178
  • 开始时间
没有问题就好,但是你要先在里面建好个表
 
代码完善一下吧,不用手工建表,用代码建个临时表
procedure TForm1.Button1Click(Sender: TObject);
var ss:String;i:integer;
begin

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('create table table1') ;
ADOQuery1.SQL.Add('(qq varchar(10))');
ADOQuery1.ExecSQL;
for i:=0 to CheckListBox1.Count-1do
if CheckListBox1.Checked then
begin
ss:= checklistbox1.itemS;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into table1 ') ;
ADOQuery1.SQL.Add('values'+'('+quotedstr(ss)+')');
ADOQuery1.ExecSQL;
end;

// 下面是你的打印部分
Form4.QuickRep1.DataSet:=adoquery1;
form4.QuickRep1.preview;
//删除临时表
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('drop table table1') ;
ADOQuery1.ExecSQL;
end;
 
还是不能连接表:
我把相关的代码贴上来.
procedure TForm2.Button3Click(Sender: TObject);
begin
with form1.ADOQuery2,CheckListBox1do
begin
SQL.Clear;
SQL.Add('SELECT distinct xingming,bianhao,sheng,xian,nyear,nmouth,nday FROM exportable');
Prepared;
Open;
//////////////////////////////////
Clear;
First;
while not eofdo
begin
Items.Add(Format('编号[%s] 姓名[%s]',[Fields[0].AsString,Fields[2].AsString]));
Next;
end;
end;
end;
点botton3后checklistbox1就有了记录,对要打印的记录的进行勾选
然后再点你说的botton1,不能调出form4窗口,提示表连接错误
 
提示:missing connection or connectionstring
 
不会啊,我才安装好了access调试了都行的
你用我上面的方法看看
建临时表
 
我就是用你的临时表作的
出现missing connection or connectionstring错误
你点什么键时checklistbox1出现了要选择的记录
 
不好意思,我是在sql srever上调试的
我刚才才安装好access
我马上在看看
 
我的作法是先点botton3后(代码已贴出)
checklistbox1就有了记录,对要打印的记录的进行勾选
然后再点你说的botton1,不能调出form4窗口,提示表连接错误
 
谢谢,请问你提供的语句中adoquery1是如何设置的,是不是和我的有所区别
 
恩,知道了,我看看
 
我的程序流程是这样的
在form1中对指定的数据库进行读取,数据库中贮存了学生和图片的信息,学生和图片是多对多的关系
通过form2中Button3提取出不同学生的基本信息,已经能成功实现
在form2中再点你说的程序Button1,则form4不能出现,有错误
 
to all:
需要这么复杂吗?????????
使用过滤器,在ADOQuery2的OnFilterRecord中写:
procedure TForm1.ADOQuery2FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=Checklistbox1.Checked[CheckListBox1.Items.IndexOf(Format('编号[%s] 姓名[%s]',[DataSet.Fields[0].AsString,DataSet.Fields[2].AsString]))];
end;
打印时:
ADOQuery1.Filtered:=True;
form4.QuickRep1.preview;
ADOQuery1.Filtered:=False;
 
试试TYZhang的方法吧,你说的连接问题
在我这边也有
非常奇怪一插入数据,access中的表就会自动删除
我写的哪个在sql ser可以的!
 
TO TYZhang
在form1中没有Checklistbox1,它是放在form2中
能不能说具体一些
你说的ADOQuery1.Filtered:=True;
form4.QuickRep1.preview;
ADOQuery1.Filtered:=False;放在什么地方
 
要不就用我的吧
我才调试好了
procedure TForm1.Button1Click(Sender: TObject);
var ss:String;i:integer;
begin

for i:=0 to CheckListBox1.Count-1do
if CheckListBox1.Checked then
begin
ss:= checklistbox1.itemS;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into table1(qq) ') ;
ADOQuery1.SQL.Add('values'+'('+quotedstr(ss)+')');
ADOQuery1.ExecSQL;
end;
Form4.QuickRep1.DataSet:=adoquery1;
form4.QuickRep1.preview;

end;
 
TO maozhuxi:
好的,谢谢,我试一下
 
TO maozhuxi:
我则才试了一下,还是出现同样的问题,请问你的adoqury1相关的属性是什么,在点什么键时出现checklistbox1中显示可勾选的记录,如果方便能把你测试源程序给我提供一下吗
 
to chengcheng178:
"在form1中没有Checklistbox1,它是放在form2中",那就引用Form2的吧!
procedure TForm1.ADOQuery2FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=Form2.Checklistbox1.Checked[Form2.CheckListBox1.Items.IndexOf(Format('编号[%s] 姓名[%s]',[DataSet.Fields[0].AsString,DataSet.Fields[2].AsString]))];
end;

"你说的ADOQuery1.Filtered:=True;
form4.QuickRep1.preview;
ADOQuery1.Filtered:=False;放在什么地方
",用它来替换你Button4的OnClick的form4.QuickRep1.preview;
procedure TForm2.Button4Click(Sender: TObject);
var
i:Integer;
AnyRec:Boolean;
begin
AnyRec:=False;
for i:=0 to CheckListBox1.Count-1do
if CheckListBox1.Checked then
AnyRec:=True;
if not AnyRec then
begin
MessageBox(Handle,'没有打印的记录!','信息',MB_OK or MB_ICONSTOP);
Exit;
end;
form1.ADOQuery1.Filtered:=True;//这这这这这这这这这这
form4.QuickRep1.preview;
form1.ADOQuery1.Filtered:=False;//还有这
end;

 
TO TYZhang:
谢谢,我试一下
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
565
import
I
D
回复
0
查看
791
DelphiTeacher的专栏
D
I
回复
0
查看
600
import
I
顶部