C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52779] Re:Re:Re:Re:해결했네요 ㅎㅎ 그런데 다른 문제가...-_-
아루스 [tinydew4] 1640 읽음    2008-03-19 14:32
선택된 레코드가 바뀌는 것은 GotoBookmark 로 위치가 바뀌기 때문에 그런겁니다.
그런데 코드 상으로 보기엔 원하는 코드인 것 같은데 잘 안나온다니 다른 문제가 있는건가...
Preview 하기 전에 Prepare 를 해보면 어떨까요?
(여기부터는 코딩 문제가 아니네요. ㅡㅜ)



rrr 님이 쓰신 글 :
: Form1->DBGrid1->DataSource->DataSet->GotoBookMark((void*)(SelectedRows->Items[i]));
: 이 부분을
: Form1->DBGrid1->DataSource->DataSet->GotoBookmark((void*)Form1->DBGrid1->SelectedRows->Items[i].c_str()); 이렇게 고치니까 되네요?
:
: 에러없이 컴파일이 되긴 하는데..
: 제가 원하던 선택한 레코드만 출력 하는 기능이 안되네요.
:
: 지금 동작하는게 dbgrid에서 어느 레코드를 선택하던 가장 위쪽 레코드만 출력이 되는군요.
: 폼에 quickrep과 버튼을 올려놓고 버튼을 누르면 QuickRep1->Preview(); 이 코드가 동작해서
: 미리보기창이 뜨는데요 이때 문서의 빈칸에 나타나는 데이터가 무조건 dbgrid의 맨 위 레코드정보 입니다.
:
: 그리고 프리뷰창을 띄우면 또 희한하게 dbgrid에서 레코드포인터가 가장 마지막 위치로 옮겨지네요.
:
: 선택한 레코드만 출력하게 하려면 코드를 어떻게 수정해야 할까요?

:
: rrr 님이 쓰신 글 :
: : Form1->DBGrid1->DataSource->DataSet->GotoBookMark((void*)(SelectedRows->Items[i]));
: : 이 부분에서
: : [C++ Error] Form4_Unit25.cpp(120): E2031 Cannot cast from 'AnsiString' to 'void *'
: :
: : 이런 에러가 뜨네요? 이게 뭔가요.........?
: : db는 쿼리로 연결했습니다.
: :
: : 아루스 님이 쓰신 글 :
: : : int i; // 유닛변수
: : :
: : : void __fastcall TForm9::QuickRep1NeedData(TObject *Sender, bool &MoreData)
: : : {
: : :     MoreData = (Form1->DBGrid1->SelectedRows->Count > i); //선택한 레코드 만큼 실행.
: : : }
: : :
: : : void __fastcall TForm9::DetailBand1BeforePrint(TQRCustomBand *Sender, bool &PrintBand)
: : : {
: : :     Form1->DBGrid1->DataSource->DataSet->GotoBookMark((void*)(SelectedRows->Items[i]));
: : :     QRLabel1->Caption = Form1->DBGrid1->DataSource->DataSet->FieldByName("Hanbun")->AsString;
: : :     i++;
: : : }
: : :
: : : void __fatscall TForm9::QuickRep1BeforePrint(TCustomQuickRep *Sender, bool &PrintReport)
: : : {
: : :     i = 0;
: : : }
: : :
: : :
: : : rrr 님이 쓰신 글 :
: : : : var
: : : :  i: Integer; // 유닛변수
: : : : procedure TForm9.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
: : : : begin
: : : :   MoreData := Form1.DBGrid1.SelectedRows.Count > i; //선택한 레코드 만큼 실행.
: : : : end;
: : : :
: : : : procedure TForm9.DetailBand1BeforePrint(Sender: TQRCustomBand;
: : : :   var PrintBand: Boolean);
: : : : begin
: : : :   with Form1.DBGrid1 do begin
: : : :     //선택한 레코드로 DB커서 이동
: : : :     DataSource.DataSet.GotoBookMark(Pointer(SelectedRows.Items[i]));
: : : :     // QRLabel에 Data를 넘긴다.
: : : :     QRLabel1.Caption := DataSource.DataSet.FieldByName('Hanbun').AsString;
: : : :   end;
: : : :   inc(i);
: : : : end;
: : : :
: : : : procedure TForm9.QuickRep1BeforePrint(Sender: TCustomQuickRep;
: : : :   var PrintReport: Boolean);
: : : : begin
: : : :   i := 0; //유닛변수 초기화
: : : : end;
: : : :
: : : :
: : : : ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
: : : :
: : : : http://www.delphiunion.com/dwp/QR/qreport.htm
: : : : 퀵리포트백서 사이트에서 dbgrid의 선택한 레코드만 출력하는 코드인데
: : : : 빌더에선 어떻게 써야할지 모르겠네요.
: : : :
: : : : 아시는분 코드좀 바꿔주세요 ㅎㅎ

+ -

관련 글 리스트
52756 델파이 코드좀 빌더코드로 바꿔주세요 rrr 1291 2008/03/18
52761     Re:델파이 코드좀 빌더코드로 바꿔주세요 아루스 1507 2008/03/18
52772         Re:Re:바꿔주신 코드를 넣고 컴파일 하니까 에러가....ㅠㅠ rrr 1212 2008/03/19
52775             Re:Re:Re:해결했네요 ㅎㅎ 그런데 다른 문제가...-_- rrr 1538 2008/03/19
52779                 Re:Re:Re:Re:해결했네요 ㅎㅎ 그런데 다른 문제가...-_- 아루스 1640 2008/03/19
52757     Re:델파이 코드좀 빌더코드로 바꿔주세요 장성호 1369 2008/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.