Q&A

  • 불러온 데이터를 한건씩 처리할때..
들르시는 분들 한번 봐주시기 바랍니다...
무식하기 이를대 없습니다..
욕하시지 마시고 __;

  with ReturnProcQuery do
  begin
  Close;
  SQL.Clear;
  SqlStr := 'select id, bet_chip from bet_lucky where bet_num = '''+ist_lucky_num.Text+''' and hoicha = '''+InsertHoichaEdt.Text+''' ';
  SQL.Text := SqlStr;
  open;

  if RecordCount = 0 then
      begin
          ShowMessage('해당하는 데이타가 없습니다..');
          exit;
  end else
      begin

       max := ReturnProcQuery.RecordCount;
       ReturnProcQuery.First;

     for i:= 1 to max do

         begin
         dangchumid := ReturnProcQuery.FieldByName('id').AsString;
         dangchumchip := ReturnProcQuery.FieldByName('bet_chip').AsInteger;

         Label2.Caption := FloatToStr(moneysum/dangchumchip);
         return_rate1 := FloatToStr(moneysum / dangchumchip+100);
         return_rate := moneysum / dangchumchip*10;
         return_sum := FloatToStr(Trunc(dangchumchip * return_rate / 10));
         return_chip := return_sum;

         Close;
         SQL.Clear;
         SqlStr := 'update bet_lucky set bedang_rate = '''+return_rate1+''', ';
         SqlStr := SqlStr + 'bedang_chip = '''+return_chip+''', return_day = GETDATE() ';
         SqlStr := SqlStr + 'where id = '''+dangchumid+''' and bet_num = '''+ist_lucky_num.Text+''' and hoicha = '''+InsertHoichaEdt.Text+''' ';
        
         SQL.Text := SqlStr;
         ExecSQL;
         Next;
     //    open;
         end;
     end;


  ProcReadEdt.Text := IntToStr(ReturnProcQuery.RecordCount);


end;
end;


내용인 즉슨 데이블에 where절 조건에 맞는 여러개의 데이타가 들어와서..그걸 한건한건 처리해야 되는댕.... 일정한 값을 곱해주어서 처리해야 되는댕..
한번은 잘 처리가 되는댕...for문이 안돌아가네영..

에러 메세지

'RetrunProcQuery:Cannot perform this operation on a closed dataset'

고수님들의 따뜻한 손길 부탁드립니다..

읽어주셔서 감사합니다...
6  COMMENTS
  • Profile
    withcount 2002.05.25 06:51
    select한 데이타만큼 update하는것이기 때문에
    update용 query를 하나 더 사용하시기 바랍니다..
    그리고 RecordCount사용은 절제하시길..^^

    with with ReturnProcQuery do
    begin
      close;
      sql.clear;
      sql.add('select * from ****')
      open;
      if isEmpty then
      begin
           ShowMessage('해당하는 데이타가 없습니다..');
           exit;
      end;
      Query2.Sql.Clear;
      while Not Eof do
      begin
         Query2.Sql.Clear;
         Query2.Sql.add('Update ****');
         Query2.ExecSql;
         Query2.Prepare;
         Next;
      end;
    end;



  • Profile
    안광호 2002.05.25 03:59
    DataSet 이 Close 되어서 발생하는 에러입니다.
    아래부분 *** 에서 Close 를 하고 있습니다.  이때는 다른 컴포넌트를 사용
    하시거나 다른 방법으로 하셔야됩니다.


  • Profile
    유영호 2002.05.25 04:07
    님 그럼 어떤 방법이 있을까여...

    죄송하지만 한번 더 부탁드립니다..

    초보에게 희망과 용기를.....



  • Profile
    유영호 2002.05.25 20:11
    .....
  • Profile
    김경록 2002.05.25 19:01
    Var
        lqry_Update: TQuery;
    Begin
          query1.Close;  //요넘은 님이 디자인시 생성한 컴포넌트



          //이부분에 Query1으로 Select부분을 작성한고. Query1.Open;



          If Query1.EOF Then Exit;  //처리할 자료 없음!!

          lqry_Update := TQuery.Create(Nil);

          //요건 Database컴포넌트에서 설정한 DatabaseName;
          lqry_Update.DatabaseName := '데이파베이스명';

          Query1.Fist;
          Database1.StartTransaction;  //싱글DB일때 사용치 말기를..
          For I := 0 To Query1.RecordCount - 1 Do
          Begin
                Try  
                     lqry_Update로 열심히 Update 쿼리로 밀어넣기!!!
                 Except
                       Database1.RollBack;   // 요넘은 싱글DB(예. 파라독스등등)
                                                       // 일때 사용치 말기를..
                                                       // Update/Insert한 내용이 있으면..
                                                       // 해당 내용을 Delete해도 됨..
                       lqry_Update.Free;
                       lqry_Update := Nil;
                       ShowMessage('저장하다가 에러발생했는데여~~~');
                       Exit;
                 End;

                 Query1.Next;
          End;
          Database1.Commit;  //싱글DB일때 사용치 말기를...


          lqry_Update.Free;
          lqry_Update := Nil;   //요건 해도되구.. 안해도 되구..

          ShowMessage('저장이 다 되었는데여~~~');
    End;


    뭐.. ShowMessage부분은 임의로 바꾸셔도 될껍니다...
    안바꿔도 Compile시엔 에러없음..




  • Profile
    황선웅 2002.05.25 19:00
    다른분이 먼저 답변을 주신것처럼
    하나의 쿼리 컴포넌트로 Data를 fetch하고 for문을 실행중
    Update를 하기위해
    다시 그 쿼리 컴포넌트를 Close시키고
    쿼리문을 다시작성 하셨으므로
    다음번 반복때에는 맨처음 자료를 fetch하셨던
    Dataset(쿼리 컴포넌트)이 닫은 상태가 되어

    말씀하신 에러가 생기는 것입니다.

    업데이트 쿼리문은 다른 컴포넌트를 하나 만드셔서
    하시면 무리없이 잘 되실거예요.

    • 정범
    • 2002.05.25 21:00
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 델파이탐크루즈
      2002.05.26 01:16
      Table  콤퍼넌트 쪽에 option에 보시면 Insert, Edit 쪽에 False로 되어있는지 확인하시고... ...
    • 정범
      2002.05.26 18:09
      답변 감사 합니다 그런데 Table 이나 그리드 안씁니다 데이터 소스와 쿼리를 사용합니다 그리고 데...
    • 머슴
      2002.05.27 08:56
        쿼리 컴퍼넌트는 기본적으로 readonly입니다.   따라서 쿼리의 컴퍼넌트에 가...
    • 정범
      2002.05.28 06:57
      감사합니당.. 너무나........... 해결했어여 음... 무지 고생고생 찾다가 보니 update_Query 의 Pro...
    • 델파이탐크루즈
      2002.05.26 00:11
      Function FA_NMFTP(NMFTP :TNMFTP):boolean; begin   NMFTP.Host    := ;...
    • 윤도상
    • 2002.05.25 20:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김도형
      2002.05.25 21:07
      퍼온겁니다.. 예전의 질답 게시판에서염~~~ 함 해보세염~ 1. 메모 초기화   Memo1....
    • 조근영
    • 2002.05.25 20:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.05.25 21:24
      안녕하세요. 최용일입니다. Owner나 Tag속성을 이용하시면 될거같네요... A라는 폼을 동적으로 생성...
    • 조근영
      2002.05.27 19:18
      에겅.......  정말 고마워여........ 이젠 돌아갑니다요............ 며칠을 머리 벅벅 뜯...
    • 전원보
    • 2002.05.25 20:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김도형
      2002.05.25 21:10
      var   clbl : TComponent;   nI : integer; begin   For nI := 0 to 10...
    • 전원보
      2002.05.26 17:39
      .
    • 나그네
    • 2002.05.25 20:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.05.25 21:32
      안녕하세요. 최용일입니다. 1번, 2번은 폼대신에 TDataModule을 사용하시면 될거 같은데요... 보이지...
    • 김도형
    • 2002.05.25 19:23
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정용광
    • 2002.05.25 19:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김형수
      2002.05.25 19:25
      저두 여기서 자료를 얻어서 연습하고 있는데요. 도움이 됐으면 하네요. .. uses   Windo...
    • 김지엽
      2002.05.25 19:18
      excel 자체를 SQL문으로 처리하는 것은 불가능하다고 생각됩니다. 현재 SQL문이 지원되는 것은 자체 DB...
    • 정용광
      2002.05.25 19:26
      감사합니다.. 우선 프로그램하는 이쪽의 환경으로 하는 것이 아니라.. 저희 프로그램을 사용하는 사용...
    • 한석훈
    • 2002.05.25 19:01
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김지엽
      2002.05.25 19:06
      델파이 입장에서는 그 DB가 PASSWORD가 있는지 없는지 모르니까 그럽니다. TDATABASE 객체에 ID = "...
    • 한석훈
      2002.05.25 20:51
      님 말씀대로 이렇게 코딩을 했는데요. 그래도 계속 물어보내요. DatabaseLogin이벤트에서 처리를 하...
    • 박상윤
      2002.05.26 01:09
      Direct Input을 사용해보세여.. 마우스 및 사이드와인더 (Force feedbak 포함) 여러장치를 제어 할수 있...
    • 김지엽
      2002.05.25 19:10
      님이 짜신 소스를 보지 않은 상태에서 뭐가 뭐라고 이야기 하기는 힘들지만, 간단한 알람 프로그램 하나가 ...
    • GanJang
      2002.05.25 20:28
      답변 감사합니다. ^^ 근데, 기폰 폼 있잖아요? 델파이 시작하고 어플리케이션 시작하면 나타나는 폼. ...
    • 유영호
    • 2002.05.25 03:21
    • 6 COMMENTS
    • /
    • 0 LIKES
    • withcount
      2002.05.25 06:51
      select한 데이타만큼 update하는것이기 때문에 update용 query를 하나 더 사용하시기 바랍니다.. 그리고 ...
    • 안광호
      2002.05.25 03:59
      DataSet 이 Close 되어서 발생하는 에러입니다. 아래부분 *** 에서 Close 를 하고 있습니다.  ...
    • 유영호
      2002.05.25 04:07
      님 그럼 어떤 방법이 있을까여... 죄송하지만 한번 더 부탁드립니다.. 초보에게 희망과 용기를..... ...
    • 유영호
      2002.05.25 20:11
      .....
    • 김경록
      2002.05.25 19:01
      Var     lqry_Update: TQuery; Begin       query1...
    • 황선웅
      2002.05.25 19:00
      다른분이 먼저 답변을 주신것처럼 하나의 쿼리 컴포넌트로 Data를 fetch하고 for문을 실행중 Update를 하...
    • 박성환
    • 2002.05.25 02:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이호성
    • 2002.05.25 02:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.05.25 04:03
      안녕하세요. 최용일입니다. fData가 TDataRtn형인가요? 그럼 Data필드가 포인터형이니까, 포인터를 넘겨...
    • 최성원
    • 2002.05.25 01:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안광호
      2002.05.25 04:02
      C++ 에서 LPCSTR 로 사용하셨다는 것은 포인트를 말하는 것 같습니다. 델파이에서 이경우  선언...
    • 최용일
      2002.05.25 04:00
      안녕하세요. 최용일입니다. Calling Conversion확인해보세요. stdcall인가 cdecl인가... 그리고 파라...
    • 백록화
      2002.05.25 03:07
      yo` 안녕하세요 백록화 입니다. :) 손쉬운방법으로 load_file() 이라는 MySQL함수를 사용하는것입...
    • 최용일
      2002.05.25 03:52
      안녕하세요. 최용일입니다. 자료실에 보시면 메인메뉴 맘대로 꾸미기란 예제가 있을겁니다. 그거 참고하...
    • 유현성
    • 2002.05.25 01:16
    • 0 COMMENTS
    • /
    • 0 LIKES