안녕하세요,,델 쓴지 아니 프로그램 한지 이제 두달 좀 넘은 왕초보입니다..
뭔가 할 때마다 걸리는 군요...-_-;;
DBgrid에서 multiselect를 한다음 프린트를 하려합니다..
그런데,,프린트를 하면 DataSet이 lsat로 가버리네요..
select된 row값은 계속 가지고 있는데, dataset을 next하는 것이 안 먹히고 바로 eof로 갑니다.
예시---
with DataSet do
DataSet.first;
begin
// for row := 0 to DataSet.RecordCount - 1 do
while not DataSet.eof do
begin
if DBGrid.SelectedRows.CurrentRowSelected then
begin
try
RForm1 := TRForm1.Create(Application);
RForm1.print
finally
RForm1.Hide;
RForm1.Free;
end;
end;
DataSet.next;
end;
end;
대충 위와 같습니다...
multiselect 프린트를 찾아보기는 했지만 잘 안되더라구요.
조금 급합니다..^^
고수님들의 많이 도움 바랍니다..
> 안녕하세요,,델 쓴지 아니 프로그램 한지 이제 두달 좀 넘은 왕초보입니다..
> 뭔가 할 때마다 걸리는 군요...-_-;;
>
> DBgrid에서 multiselect를 한다음 프린트를 하려합니다..
> 그런데,,프린트를 하면 DataSet이 lsat로 가버리네요..
> select된 row값은 계속 가지고 있는데, dataset을 next하는 것이 안 먹히고 바로 eof로 갑니다.
>
> 예시---
> with DataSet do
> DataSet.first;
> begin
> // for row := 0 to DataSet.RecordCount - 1 do
> while not DataSet.eof do
> begin
> if DBGrid.SelectedRows.CurrentRowSelected then
> begin
> try
> RForm1 := TRForm1.Create(Application);
> RForm1.print
> finally
> RForm1.Hide;
> RForm1.Free;
> end;
> end;
> DataSet.next;
> end;
> end;
>
>
> 대충 위와 같습니다...
>
> multiselect 프린트를 찾아보기는 했지만 잘 안되더라구요.
> 조금 급합니다..^^
> 고수님들의 많이 도움 바랍니다..
>
procedure TForm1.Print_BtnClick(Sender: TObject);
var
x:word;
TempBookmark:TBookMark;
brgin
if sender = Print_Btn then
begin
try
Screen.cursor := crHourGlass;
DBGrid.Datasource.Dataset.DisableControls;
with DBGrid.SelectedRows do
if Count > 0 then
begin
TempBookmark:= DBGrid.Datasource.Dataset.GetBookmark;
for x:= 0 to Count -1 do
begin
if IndexOf(items[x]) > -1 then
begin
DBGrid.Datasource.Dataset.Bookmark:=Items[x];
with S_Sql do
begin
Clear;
//Update 쿼리 들어감
end;
// showmessage(DBGrid.Datasource.Dataset.Fields[x].AsString);
// DBGrid.Datasource.Dataset.Fields[x].AsString -- x에 따라 grid의 값을 가져옮.
report_print;//print procedure
end;
end;
DBGrid.Datasource.Dataset.GotoBookmark(TempBookmark);
DBGrid.Datasource.Dataset.FreeBookmark(TempBookmark);
end;
DBGrid.Datasource.Dataset.EnableControls;
finally
Screen.cursor := crDefault;
end;
end; //if
end;//begin
dateset을 이용하지 않는 방법을 찾아서 해 봤더니 되더군요...
어떤 분이 올리신 팁으로 해결했습니다..
감사...