parniant
چهارشنبه 13 آذر 1387, 17:28 عصر
با سلام
تو برنامم برای گزارشگیری باید اطلاعاتم رو از دو جدول بیارم یعنی اولا افرادی( ttclocknahaye ) که سال و ترم اونها با combo1,combo4 مطابقت داشته باشند تمام اونها رو انتخاب کنه اطلاعات هر کدوم رو با عکسشان رو در کارتشان چاپ کنه
var
code:string;
pic:TJPEGImage;
stream:TStream;
begin
ADOQuery4.Close;
ADOQuery4.Open;
adoQuery4.SQL.Clear;
ADOQuery4.Close;
adoquery4.SQL.Add('select * from ttclocknahaye ');
ADOQuery4.SQL.Add('WHERE (tyear LIKE''' + combobox1.TEXT+'%'')and (tterm like ''' + ComboBox4.Text+'%'')order by ido');
adoQuery4.Open;
adoQuery4.First;
while not ADOQuery4.eof do
begin
ADOQuery4.Next;
end;
adoQuery4.First;
while not ADOQuery4.eof do
begin
sodor_kart.Image1.Stretch:=true;
with ADOQuery1 do
begin
sql.Text:='select * from tteacher where ido= :p1';
Parameters.ParamByName('p1').Value:=(ADOQuery4.Fie ldValues['ido']);
code:=(ADOQuery4.FieldValues['ido']);
Open;
end;
pic:=TJPEGImage.Create;
stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
if stream.Size<>0 then
begin
if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
report_sum.QRDBImage1.Picture.Bitmap.LoadFromStrea m(stream)
else
begin
pic.LoadFromStream(stream);
report_sum.QRDBImage1.Picture.Assign(pic);
end;
end
else
report_sum.QRDBImage1.Picture.Graphic:=nil;
stream.Free;
pic.Free;
ADOQuery5.Close;
ADOQuery5.Open;
adoQuery5.SQL.Clear;
ADOQuery5.Close;
adoquery5.SQL.Add('select post from tteacher');
ADOQuery5.SQL.Add('WHERE (ido LIKE''' + code+''')');
adoQuery5.Open;
adoQuery5.First;
while not adoQuery5.Eof do
begin
report_sum.QRDBText5.Caption:=(ADOQuery5.FieldValu es['post']);
adoQuery5.Next;
end;
// report_sum.quickrep1.Print;
report_sum.quickrep1.preview;
ADOQuery4.Next;
end;
end;
این دستورات می یاد اطلاعات همه ی افراد رو چاپ می کنه اما فقط عکس نفر اول رو برای همه ی افراد می زاره مشکل رو چطور باید حل کنم ؟ با تشکر
تو برنامم برای گزارشگیری باید اطلاعاتم رو از دو جدول بیارم یعنی اولا افرادی( ttclocknahaye ) که سال و ترم اونها با combo1,combo4 مطابقت داشته باشند تمام اونها رو انتخاب کنه اطلاعات هر کدوم رو با عکسشان رو در کارتشان چاپ کنه
var
code:string;
pic:TJPEGImage;
stream:TStream;
begin
ADOQuery4.Close;
ADOQuery4.Open;
adoQuery4.SQL.Clear;
ADOQuery4.Close;
adoquery4.SQL.Add('select * from ttclocknahaye ');
ADOQuery4.SQL.Add('WHERE (tyear LIKE''' + combobox1.TEXT+'%'')and (tterm like ''' + ComboBox4.Text+'%'')order by ido');
adoQuery4.Open;
adoQuery4.First;
while not ADOQuery4.eof do
begin
ADOQuery4.Next;
end;
adoQuery4.First;
while not ADOQuery4.eof do
begin
sodor_kart.Image1.Stretch:=true;
with ADOQuery1 do
begin
sql.Text:='select * from tteacher where ido= :p1';
Parameters.ParamByName('p1').Value:=(ADOQuery4.Fie ldValues['ido']);
code:=(ADOQuery4.FieldValues['ido']);
Open;
end;
pic:=TJPEGImage.Create;
stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
if stream.Size<>0 then
begin
if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
report_sum.QRDBImage1.Picture.Bitmap.LoadFromStrea m(stream)
else
begin
pic.LoadFromStream(stream);
report_sum.QRDBImage1.Picture.Assign(pic);
end;
end
else
report_sum.QRDBImage1.Picture.Graphic:=nil;
stream.Free;
pic.Free;
ADOQuery5.Close;
ADOQuery5.Open;
adoQuery5.SQL.Clear;
ADOQuery5.Close;
adoquery5.SQL.Add('select post from tteacher');
ADOQuery5.SQL.Add('WHERE (ido LIKE''' + code+''')');
adoQuery5.Open;
adoQuery5.First;
while not adoQuery5.Eof do
begin
report_sum.QRDBText5.Caption:=(ADOQuery5.FieldValu es['post']);
adoQuery5.Next;
end;
// report_sum.quickrep1.Print;
report_sum.quickrep1.preview;
ADOQuery4.Next;
end;
end;
این دستورات می یاد اطلاعات همه ی افراد رو چاپ می کنه اما فقط عکس نفر اول رو برای همه ی افراد می زاره مشکل رو چطور باید حل کنم ؟ با تشکر