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

FireBird Q&A
[2406] Re:Re:Re:Re:Re:Re 해결 했습니다...
freeman [builder88] 2510 읽음    2007-03-17 21:29
1. DMod->ZQuery->ExecSQL(); --->  이분분을 아래와 수정하니 SEQ_NO를 참조 할 수있습니다.....
      2. DMod->ZQuery->Open();
         차이점에 대해서 말씀 좀 해주시죠, 그냥 인서트 하는데  DMod->ZQuery->Open(); 이렇게 사용하면
         좀 안되는~~~ 하는 것으로 아는데
         FB20에서 새롭게 나온 기능 INSERT RETURNING문법은 에러 없이 인서트되고 참조도 됩니다.
         답변 부탁 드릴께요        

      String Command;
      Command.sprintf("INSERT INTO CDATA (SEQ_NO, SEQ,HEAD,CMEMO)"
                                 "VALUES (NEXT VALUE FOR C_DAT,:NO_B,:MSG,:CTEXT) RETURNING SEQ_NO");
      DMod->ZQuery->Close();
      DMod->ZQuery->SQL->Clear();
      DMod->ZQuery->SQL->Add(Command);
      DMod->ZQuery->ParamByName("NO_B")->AsInteger = nd;
      DMod->ZQuery->ParamByName("MSG")->AsString =  eTitle->Text;
      DMod->ZQuery->ParamByName("CTEXT")->AsMemo = Memo1->Text;

     // DMod->ZQuery->ExecSQL(); --->  이분분을 아래와 수정하니 SEQ_NO를 참조 할 수있습니다.....
      DMod->ZQuery->Open();
      int nBunho = DMod->ZQuery->FieldByName("SEQ_NO")->AsInteger;
      DMod->ZConnection1->Commit();



Joseph 님이 쓰신 글 :
: 쩝.. 죄송하게도.. 이게 제가 도와드릴 수 있는 한계인가 봅니다.
: 저와 환경이 좀 다른데 저는 FIBPlus를 사용하거든요. 거기서 차이가 생길 수 있을거란 생각이 드는데요.
: 제가 원래 DB전문이 아니고 다른쪽인데, 지금 약간 외도중이거든요... 이곳에서 도움을 많이 받았는데, 안다고 생각되는 질문이 있길래 낼름 답을 했더니.. 쩝 그나마 도움이 안되네요. 다른 분들 도움을 기대해 봐야 할듯...
:
: 강두헌.
:
:
: 빌더사랑 님이 쓰신 글 :
: : Joseph님 바쁜신 가운데 친절한 답변 정말 감사드립니다. 근데 정말 안되요
: : 눈씻고 열심히 해도 안됩니다.
: : 환경 : c++ Builder 6.0,  ZeosDB 6.6
: : 테스트 코드
: : void __fastcall TFInPut::BOK_inputClick(TObject *Sender)
: : {
: :       String Command;
: :       Command.sprintf("INSERT INTO CDATA (SEQ_NO,SEQ,HEAD,CMEMO) "
: :                                  "VALUES (NEXT VALUE FOR C_DAT,:NO_B,:MSG,:CTEXT) RETURNING SEQ_NO");
: :
: :       DMod->ZQuery->SQL->Clear();
: :       DMod->ZQuery->SQL->Add(Command);
: :       DMod->ZQuery->ParamByName("NO_B")->AsInteger = nd;
: :       DMod->ZQuery->ParamByName("MSG")->AsString =  eTitle->Text;
: :       DMod->ZQuery->ParamByName("CTEXT")->AsMemo = Memo1->Text;
: :
: :       DMod->ZQuery->ExecSQL();
: :
: :       int nIndexNO  = DMod->ZQuery->FieldByName("SEQ_NO")->AsInteger;  //
: :       <-- 이부분에서 필드 NO_B를 참조할수 없슴 이라는 에러가 발생됩니다.
: :
: :       DMod->ZConnection1->Commit();
: : }
: :
: :
: :
: :
: :
: :
: :
: : Joseph 님이 쓰신 글 :
: : : qryIncome->Close();
: : : qryIncome->SQL->Clear();
: : : qryIncome->SQL->Add("INSERT INTO INCOME (");
: : : ....
: : : qryIncome->SQL->Add(":USERID)");
: : : qryIncome->SQL->Add("RETURNING INCOMENO");  // INTO :QUOTATIONNO");
: : : .....
: : : qryIncome->ParamByName("USERID")->AsString = frmUser->getLogonID();
: : : qryIncome->ExecQuery();
: : : tmpIncomeNo = qryIncome->FieldByName("INCOMENO")->AsInteger;
: : :
: : : 제가 현재 사용하고 있는 코드의 일부입니다. 저도 INTO를 사용하려고 했다가 안되서 고친 흔적이 있고요.
: : : 이와 관련해서는 STORE PROCEDURE는 사용하지 않았습니다.
: : : 그리고 물론 잘 됩니다. 다시 검토해 보시기 바랍니다.
: : :
: : : 강두헌.
: : :
: : : 빌더사랑 님이 쓰신 글 :
: : : : 안됩니다..
: : : : 혹시 STORE PROCEDURE에서 아래와 같이 사용해야만
: : : : INSERT 된 SEQ_NO를 참조할 수 있는 것 아닙니까 ?
: : : : 어찌하면 됩니까 ?
: : : :
: : : : INSERT INTO CDATA (SEQ_NO,SEQ,HEAD,CMEMO) "
: : : :                       "VALUES (NEXT VALUE FOR C_DAT,:NO_B,:MSG,:CTEXT) RETURNING SEQ_NO INTO :BUNHO
: : : :
: : : :
: : : : Joseph 님이 쓰신 글 :
: : : : : FieldByName("SEQ_NO") 로 참조하실 수 있습니다.
: : : : :
: : : : : freeman 님이 쓰신 글 :
: : : : : : 안녕하세요 불새를 이제막 시작 하는데요
: : : : : : 2.0 에서는
: : : : : : insert 문에서, 실제로 인서트된 데이터들을 다시 리턴하는 문법으로
: : : : : : RETURNING 절이 추가 되었는데,  전 아래와 같이 코드를 작성하고
: : : : : : 실행 시키면 에러가 발생합니다.  무슨 이유인지를 모르 겠습니다.
: : : : : :
: : : : : : 제가 코딩한 부분 -->   RETURNING SEQ_NO INTO :BUNHO;");
: : : : : :  여기에서   INTO :BUNHO 를 제거 하고 RETURNING SEQ_NO ;");  이런식으로 하면 에러없이 insert가 잘 됩니다.
: : : : : : 그런데 SEQ_NO값을 어찌 참조 해야 할지를 모르겠습니다.
: : : : : : 부탁 드립니다.
: : : : : :
: : : : : : //-------------------------------------------------------
: : : : : :
: : : : : : String Command;
: : : : : :
: : : : : :       Command.sprintf("INSERT INTO CDATA (SEQ_NO,SEQ,HEAD,CMEMO) "
: : : : : :                       "VALUES (NEXT VALUE FOR C_DAT,:NO_B,:MSG,:CTEXT) RETURNING SEQ_NO INTO :BUNHO;");
: : : : : :
: : : : : :       DMod->ZQuery->SQL->Clear();
: : : : : :       DMod->ZQuery->SQL->Add(Command);
: : : : : :       DMod->ZQuery->ParamByName("NO_B")->AsInteger = nd;
: : : : : :       DMod->ZQuery->ParamByName("MSG")->AsString =  eTitle->Text;
: : : : : :       DMod->ZQuery->ParamByName("CTEXT")->AsMemo = Memo1->Text;
: : : : : :
: : : : : :       DMod->ZQuery->ExecSQL();
: : : : : :       DMod->ZConnection1->Commit();

+ -

관련 글 리스트
2385 INSERT RETURNING INTO 문법 질문 freeman 2512 2007/02/24
2388     Re:INSERT RETURNING INTO 문법 질문 Joseph 2241 2007/03/03
2393         Re:Re:INSERT RETURNING INTO 문법 질문 빌더사랑 2061 2007/03/09
2394             Re:Re:Re:INSERT RETURNING INTO 문법 질문 Joseph 1877 2007/03/10
2395                 Re:Re:Re:Re:INSERT RETURNING INTO 문법 질문 빌더사랑 2128 2007/03/10
2397                     Re:Re:Re:Re:Re:INSERT RETURNING INTO 문법 질문 Joseph 1950 2007/03/11
2406                         Re:Re:Re:Re:Re:Re 해결 했습니다... freeman 2510 2007/03/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.