Q&A

  • 프로그램 좀 봐주세요




procedure TfmUser.BitBtn2Click(Sender: TObject);
  var getvalue:integer;
     begin
     if (epassword.text<>eRepasswd.text) then begin
       showmessage('입력하신 암호가 일치하지 않습니다.' +#13#10+'확인후  다시 입력 바랍니다.');
      exit;
      end;
      if (epassword.text='')then begin
      showmessage('암호는 반드시 입력하셔야 합니다.');
      exit;
      end;

      case bmode of
0 : begin
          with dm.qryupdate do begin
          close;
          sql.clear;
          sql.add('select count(*) from login');
          sql.add('where userid=:p1     ');
          params[0].asstring:=eusername.text;
          open;
          if fields[0].asinteger <> 0 then begin
          showmessage('사용자명은 이미 존재합니다.'+#13+#10+'다시 확인해 보시기 바랍니다.');
          exit;
          end;
          close;
          end;
          with dm.qryupdate do begin
          close;
          sql.clear;
          sql.add('insert into login(userid,passwd,rights)');
          sql.add('values(:p1,:p2,:p3);            ');
          params[0].asstring:=eusername.text;
          params[1].asstring:=epassword.text;
          params[2].asinteger:=getvalue;
          execsql;
          showmessage('입력되었습니다.');
          end;
          end;

1:begin
     with dm.qryupdate do begin
     close;
     sql.clear;
     sql.Add('update login set userid=:p1, passwd=:p2,');
     sql.add('    rights=:p3                ');
     sql.add('where userid=:p4        ');
     params[0].asstring:=eusername.text;
     params[1].asstring:=epassword.text;
     params[2].asinteger:=getvalue;
     params[3].asstring:=userid;
     execsql;
     showmessage('수정되었습니다.');
     end;
     end;
     end;
dm.qrygetcode.close;
dm.qrygetcode.open;
dataclear;
end;

실행하고 USERID, PASSWORD 입력하면 EDBEngineError with Massage '
Type Mismatch in expression'이라고 나와요
사실은 위의 프로그램도 무조건따라하기로 한거거든요
보시고 프로그램 설명도좀 부탁드립니다. query 중심으로

카암사.....
6  COMMENTS
  • Profile
    호롱불 2002.12.10 04:13
    1) var getvalue:integer;
    .
    .
    2) params[2].asinteger:=getvalue;
    3) execsql;
    .
    .

    1번 문장에서 getvalue라는 변수가 선언되어 있으나 초기화되지 않은 상태로
    2번 배정문의 오른쪽에 사용하여 3번 문장으로 쿼리를 실행하면
    테이블의 rights 필드에 쓰레기값이 대입되기때문에
    'EDBEngineError with Massage Type Mismatch in expression'이라는
    에러가 발생하는것 같습니다.
    혹시 책보고 코딩하실때 누락된 문장이 있는지 확인해 보세요.


  • Profile
    이상협 2002.12.10 04:48
    공부하던 source 올립니다.
    test해 보시고 어느부분이 잘못되었는지 좀 부탁드립니다.

  • Profile
    이상협 2002.12.10 04:30
    getvlaue:integer; 이거 error 나서 제가 그냥 만든거거든요
    비슷한 맥락으로 아래 프로그램 error 안나게 수정좀 해주세요

    감사


  • Profile
    열심히 2002.12.10 03:34
    스텝을 밟아서 어디인지 알려주심 고마울텐데..
    그리고 너무짧은데염..더 필요한데염..

    소스안에 getvalue;라는 게 있는데 이건 펑션입니까. 아님 변수입니까??

    일단은 아래와 같은 에러는 현재 생성된 필드(프로그램 상에서의 Tfield)와

    실제 디비가 다른 경우입니다. 길이가 다르다거나 타입이 다르다거나..

    그런것 같네요...dm.qryupdate를 찾아서 확인해 보세요..

    실제로 쿼리를 지워도 올려져있는 Tfield는 지워지지 않습니다..

    그리고 dm.qryupdate에 아무것도 올려져 있지않다면(TField) 아래에 있는

    getvalue가 의심스럽기도 하구요..(이건 아닐라나??...ㅡ,.ㅡ;;;)

    그냥 따라하셨다니 방법은 많지만 못 알아들으실거 같고 디비와 프로그램을

    비교하시라고 말씀바꼐 못드리겠네요.. 정확하게 어디서 에러가 나는지

    그리고 소스가 좀더 있으면 좀더 도움이 될텐데요..

    아참글구 커리는 어려운부분이 없는듯 하니 책보고 공부하시는게...^^;;

    그래도 참고로 살짝만 달아놓을꼐요...아 맘이 약해성...


              sql.add('select count(*) from login');          
              sql.add('where userid=:p1     ');

    login 테이블에 userid 필드에 파라미터를 넣어주고 :p1 아래에 파라미터 넘겨주는데 있져?? 그조건에 의해 생성도니 레코드의 수가 몇개인지 나타내는 쿼리



              if fields[0].asinteger <> 0 then begin    

    그래서 인덱스가 '0'인 필드(COUNT(*)) 가 0이 아니면 같은아이디가 존재 한다는 얘기죠..그럼 아래의 메세지이정도면 아래도 충분하실듯 한데..
    열심히 공부하세염...!! 화이링..^^

  • Profile
    이상협 2002.12.10 03:57
    있잖아요


    위의 4번째 줄에서 에라나요
    아마도 그내용을 입력하지 못하나본데요

    userid    문자 8자
    passwd  문자 8자
    rights     정수
    memberid   정수
    hint       문자 14자

    그리고 위의 문장이 userid, passwd, rights와 matching되는건지...
    그내용도 좀 부탁드림





  • Profile
    열심히 2002.12.10 04:15
    님이 지금 쓰신 dm에 있는 Qryupdate있지 않습니까..

    이TQuery에 필드가 올려져 있는지 봐주실래요.. 올려져있는 쿼리와

    비교해야 된다구요.. 디비와.....

    아님 쿼리를 하나 더 만들어서(그냥 빈걸로) 쓰시는것도 좋구요...

    실행중에 동적으로 만드시는것도 좋구요....

    저도 테스트는 안해봤지만 TField가 올려져 있다면 다 지워버리세요.. 그리고

    한번 해보셔도 안된다면 쿼리그냥 더 만드세요..

    • 미러
    • 2002.12.10 06:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 남양원
      2002.12.10 12:23
      var   str: string; ...   str := '1000*10asbsdf...';   str := Copy(...
    • 미러
      2002.12.10 18:38
      헉스....제가 잘못 썼군요... interbase에서 stored procedure로 하려고 하거든요.. 10000*10%내역..... ...
    • 열심히
      2002.12.11 00:15
      스토드 프로시져도 마찬가지 아닌가요?? 지금 그줄을 변수에 집어넣고 루핑을 돌리면서 '*' 를 찾는...
    • 김상수
    • 2002.12.10 06:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2002.12.11 00:07
      저도 그런적이 있는데 저는 지금 델파이 4쓰거든요??? 더 높은버젼에서도 그런지는 모르겠네요... 전...
    • 김수경
      2002.12.10 07:24
      6번 Line에서 오류가 발생한 것으로 보아 Delphi로 변환할 때 오류가 있지 않았나 생각됩니다. 관련...
    • 김재욱
    • 2002.12.10 06:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.12.10 08:24
      안녕하세요. 최용일입니다. Rewrite로 파일열어서 저장하시면 됩니다. ^^ 항상 즐코하세요...
    • 김수경
      2002.12.10 07:41
      님이 쓴 글은 어느 Component의 Inerface 부분만 있군요. Component를 설치하신후 예제(더 아래쪽 부분)...
    • 김수경
      2002.12.10 07:32
      죄송! 글이 2번 올라 갔는데 삭제가 안되네요. ㅡㅡ;
    • 조승식
      2002.12.10 07:42
      조언 고맙습니다. 꾸벅...^^ 한번더 찾아 볼랍니다.  근데...델파이 3.0에서는 문제 없이 되...
    • 하기
      2002.12.10 06:56
      꼭 DATE로 비교를 하셔야 하나요? 질문을 보니 Date가 Text로 되어있는것 같은데... 같은 Format형식이면...
    • Wookey
    • 2002.12.10 03:39
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2002.12.10 04:06
      select acode, aname, T.a_kum S2, akum From Table1,        &nbs...
    • Wookey
      2002.12.10 18:08
      감사합니다. 질문만 던져 놓고 바쁜일이 있어 감사하다는 답변이 늦었습니다. 그런데요. from 다음의 ac...
    • 열심히
      2002.12.12 22:56
      select B.acode, B.aname, C.a_kum , B.a_kum_now From        &n...
    • Wookey
      2002.12.14 22:07
      감사합니다.  해결되었습니다.
    • 박동호
    • 2002.12.10 03:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김지엽
      2002.12.10 20:18
      어떻게 하면 무한루프 도는 루틴을 찾아낼 수 있나 하는 질문이신가요? 그 유닛이 의심되신다면, 유닛의...
    • 이상협
    • 2002.12.10 02:39
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 호롱불
      2002.12.10 04:13
      1) var getvalue:integer; . . 2) params[2].asinteger:=getvalue; 3) execsql; . . 1번 문장에서...
    • 이상협
      2002.12.10 04:48
      공부하던 source 올립니다. test해 보시고 어느부분이 잘못되었는지 좀 부탁드립니다.
    • 이상협
      2002.12.10 04:30
      getvlaue:integer; 이거 error 나서 제가 그냥 만든거거든요 비슷한 맥락으로 아래 프로그램 error 안나게...
    • 열심히
      2002.12.10 03:34
      스텝을 밟아서 어디인지 알려주심 고마울텐데.. 그리고 너무짧은데염..더 필요한데염.. 소스안에 getva...
    • 이상협
      2002.12.10 03:57
      있잖아요 위의 4번째 줄에서 에라나요 아마도 그내용을 입력하지 못하나본데요 userid &nbs...
    • 열심히
      2002.12.10 04:15
      님이 지금 쓰신 dm에 있는 Qryupdate있지 않습니까.. 이TQuery에 필드가 올려져 있는지 봐주실래요.. 올...
    • 김용섭
    • 2002.12.10 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.12.10 08:25
      안녕하세요. 최용일입니다. 팁이나 질답게시판에서 근접검색으로 찾아보시면 답이 있을겁니다... ^^ ...
    • 이상협
    • 2002.12.10 02:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이상로
      2002.12.13 21:27
      델파이의 Demo를 보면 확인 가능 하십니다... Query의 properties에 보면 SQL이라는게 있습니다.. 그곳...
    • 열심히
      2002.12.10 04:09
      헉 그런 내용은 아무책이나 뒤져봐도 나올텐데... BDE설정 되있으면 방법은 비슷하지 않나요??비슷 할텐...
    • 최용일
      2002.12.10 03:14
      안녕하세요. 최용일입니다. 보내는 부분하고 받는 부분하고 다르네요... 그래서 TimeOut걸려서 멈추는거...
    • 장기륜
      2002.12.10 03:37
      답변 감사합니다 ^^* 아직은 안해봤지만.. 그런경우를 생각을 못해보았네요.. 같은 프로세서에서 돌아가...
    • 김계환
    • 2002.12.10 01:09
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 길병욱
    • 2002.12.10 00:33
    • 3 COMMENTS
    • /
    • 0 LIKES
    • LuckyBoy
      2002.12.10 01:13
      각 값뒤에 #13값을 넣어보세요.. 예를들어 sCode := sCode + #13; 이렇게 넣으면 Enter 값이 들어갑니...
    • 길병욱
      2002.12.10 03:04
      위의 답변데로 했느데요..확인해보니 엔터는 아니구 이상한기호(노래음표)만 들어가 있더라구요.. 암튼 ...
    • 최용일
      2002.12.10 03:32
      안녕하세요. 최용일입니다. #13대신에 #13#10을 넣어보세요... ^^ 항상 즐코하세요...
    • 김재환
    • 2002.12.10 00:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김지엽
      2002.12.10 01:35
      45만건의 레코드라면, mdb로서는 한계에 닿았다고 볼 수 있지 않나 싶네요. RDB에서야 인덱스를 이용하...
    • 김재환
      2002.12.10 02:23
    • ㉿ 이영범
      2002.12.10 00:55
      XL.Range['A:D'].NumberFormat   := '@';   --> 문자형 XL.Range['G:H'].NumberFo...
    • Inoak
    • 2002.12.09 23:01
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김해우
      2002.12.10 01:24
      이렇게 사용하시면 됩니다.. 두움말 참조하시면 되구요. var    F : Extended; begin &n...
    • 머슴
      2002.12.09 23:55
        FormatFloat라는 함수가 있습니다..   형식은  아래와 같고요 반환값...
    • 최용일
      2002.12.10 03:31
      안녕하세요. 최용일입니다. 그 프로그램을 ActiveX로 만드시면 웹브라우저에서도 볼 수 있습니다... ...
    • 도니
    • 2002.12.09 20:47
    • 0 COMMENTS
    • /
    • 0 LIKES