Q&A

  • 마이다스로 구성 select가 안먹힘. 오라클이용
일단 단순 로긴 인증을 거치게 하는 루틴을 오라클DB를 사용하고, 마이다스로 구성하였으며, 문제가 되는 코드는 다음과 같습니다.

function Tgasang.vlogin(UID, UPasswd: OleVariant): OleVariant;

var

v : Variant;

begin

v := varArrayCreate([1,2], varVariant);

with query1 do begin

Close;

SQL.Clear;

SQL.Add(' Select * from 오라클에있는테이블 ');

SQL.Add(' Where 아이디필드 = :p1 ');

params[0].AsString := UID; // or ParambyName('p1').AsString := UID

open;

if EOF then begin

v[1] := false;

v[2] := FieldByName('패스워드필드').asString; //'사용자가 없음';

end

else if FieldByName('패스워드필드').asString <> UPasswd then begin

v[1] := false;

v[2] := '암호가 아님';

end

else begin

v[1] := True;

v[2] := '로긴성공';

end;

end;

result := v;

end;



이렇게 하면 Fieldbyname으로 넘오는값이 리턴되지 않습니다. DB를 MS-SQL로 사용하면 잘 되거든요. 그리고, SQL.Add(' select * from 테이블 where 아디필드 = 1')

이런씩으로 넣으면 결과값이 리턴됩니다.

무엇이 문제인지 아시면 가르쳐 주세요.

1  COMMENTS
  • Profile
    nilriri 2000.05.25 05:20
    '아이디필드'라는 필드의 데이터 형식이 CHAR형식일거라 생각이 듭니다.

    아니 일거라 확신(?)합니다.



    아마 오라클과 에스큐엘의 CHAR형식에 대한 오해에서 비롯된 문제인것같습니다.

    에스큐엘에 NAME CHAR(8) 에 "ABC "를 입력하면 저장값은 "ABC"가 됩니다.

    반면 오라클은 "ABC "이렇게 8자리를 꽉채워 들어가게 되죠

    물론 VARCHAR타입을 쓰면 오라클 역시 "ABC"라고 들어가기 때문에

    별 문제가 없습니다.



    이쯤 되면 이해가 되셨으리 생각됩니다.



    델파이의 PARAMBYNAME이 공백이 제거된 값을 인수로 넘겨주기 때문에

    디비에 실제 저장된값(실제값+저장공간크기만큼의 공백)과 공백을 제거한값이

    틀리기때문에 비교가 안되는 거라 생각이 됩니다.

    델파이의 PARAMBYNAME이 여러모로 자주 속을섞이 더라구요

    그래서 저는 왠만하면 바로 문자열로 연결해서 사용을 하고 있습니다.



    그럼...









    강정한 wrote:

    > 일단 단순 로긴 인증을 거치게 하는 루틴을 오라클DB를 사용하고, 마이다스로 구성하였으며, 문제가 되는 코드는 다음과 같습니다.

    > function Tgasang.vlogin(UID, UPasswd: OleVariant): OleVariant;

    > var

    > v : Variant;

    > begin

    > v := varArrayCreate([1,2], varVariant);

    > with query1 do begin

    > Close;

    > SQL.Clear;

    > SQL.Add(' Select * from 오라클에있는테이블 ');

    > SQL.Add(' Where 아이디필드 = :p1 ');

    > params[0].AsString := UID; // or ParambyName('p1').AsString := UID

    > open;

    > if EOF then begin

    > v[1] := false;

    > v[2] := FieldByName('패스워드필드').asString; //'사용자가 없음';

    > end

    > else if FieldByName('패스워드필드').asString <> UPasswd then begin

    > v[1] := false;

    > v[2] := '암호가 아님';

    > end

    > else begin

    > v[1] := True;

    > v[2] := '로긴성공';

    > end;

    > end;

    > result := v;

    > end;

    >

    > 이렇게 하면 Fieldbyname으로 넘오는값이 리턴되지 않습니다. DB를 MS-SQL로 사용하면 잘 되거든요. 그리고, SQL.Add(' select * from 테이블 where 아디필드 = 1')

    > 이런씩으로 넣으면 결과값이 리턴됩니다.

    > 무엇이 문제인지 아시면 가르쳐 주세요.

    • 조규춘
      2000.05.25 16:24
      노석균(poppe) wrote: > > 조규춘님 저번에 plash에 이벤트 넣는법 질문드렸던 poppe(노석균)입니다.. ...
    • 우진
    • 2000.05.25 08:32
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 권영택
    • 2000.05.25 08:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권영택
      2001.05.23 00:42
      또 자답을 하는군요 pop서버로부터 메시지의 삭제를 요청하는데에는 POP 포트로 'DELE' 명령어를 보내야...
    • 최용일
      2000.05.25 08:01
      안녕하세요. 최용일입니다. Windows Media Player라면 간단합니다. Windows Media Player의 ActiveX 객...
    • 조규춘
      2000.05.25 08:13
      고마버유~! 역쉬 최용일님 멋져~! directshow도 성공을 했답니다. 푸항~! (시간까지만...) 신...
    • 최용일
      2000.05.25 08:30
      안녕하세요. 최용일입니다. 어떻게 성공하셨어요? 알려줘요. 다음에 써먹게요~~ 히히~ ^^ 항상 즐코...
    • 최용일
      2000.05.25 08:57
      안녕하세요. 최용일입니다. 근접검색에는 이진탐색알고리즘이 많이 쓰입니다. 제일 빠르고 효율적이니까...
    • 윤미혜
      2000.05.26 03:14
      최용일님 친절한 지도 감사합니다. 근데요, 역시 검색은 안돼요 오빠..... 어떻하면 좋죠..!!!!!11 죄...
    • 최용일
      2000.05.25 08:53
      안녕하세요. 최용일입니다. 바로 전에 실행시킨 윈도우 핸들은 알아낼 수 없습니다. 윈도우즈가 이러한 ...
    • 궁금한넘
      2000.05.25 18:55
      최용일님 친절한 답변에 감사드립니다. 제가 작성하려고 하는 프로그램에 대해서 자세히 알려 드리지요. ...
    • 박성모
    • 2000.05.25 05:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍세비
      2000.05.25 22:18
      박성모 wrote: > 델파이 공부를 시작한지 얼마 되지 않은 학생입니다. > 요즘 델파이를 이용해서 데이타...
    • 강인규
      2000.05.25 07:24
      저두 지금 한참 그쪽으로 공부하고 있어 한자 적습니다. 델파이메뉴의 뉴(물론 영어지요)에 보면 Webser...
    • 푸우
    • 2000.05.25 04:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri
      2000.05.25 05:04
      이건 델파이 프로그램과는 좀 거리가 있긴 하지만 MDB라기에... 제가 전에 엑세스로 프로그램(VBA)을 개...
    • 문형록
    • 2000.05.25 04:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.05.25 04:17
      안녕하세요. 최용일입니다. WM_NCHITTEST메세지에 반응하여 HTCAPTION을 결과값으로 돌려주면 됩니다. ...
    • 문형록
      2000.05.25 20:47
      정확한 저의 말은 보더스타일이 none일때 일방적인 폼의 위치가 아니라 마우스로 드래그하면 그 마우스의 ...
    • 최용일
      2000.05.25 22:45
      무슨말인지 모르겠네요. Drag가 안될리가 없는데... 문형록 wrote: > 정확한 저의 말은 보더스타일이 n...
    • 최용일
      2000.05.25 04:24
      안녕하세요. 최용일입니다. 음냐~ DirectShow는 한번도 안 다뤄봤네요. 정말 알려주고 싶은데.... 아...
    • 조규춘
      2000.05.25 05:18
      용일님 감사합니다. 그런데.... 그 사이트는 벌써 본사이트인데용~! 윽... 어떤 고수분왈~! ========...
    • hpsycho
    • 2000.05.25 05:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 강정한
    • 2000.05.25 02:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri
      2000.05.25 05:20
      '아이디필드'라는 필드의 데이터 형식이 CHAR형식일거라 생각이 듭니다. 아니 일거라 확신(?)합니다. ...
    • 박규형
    • 2000.05.25 02:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri
      2000.05.25 05:26
      자세한 내용은 책을 참고하셔야 할것같습니다. 아는 범위내에서 간략히 설명하면.. PRIMARY는 인덱스를...
    • nilriri
      2000.05.25 05:30
      질문 내용이 좀 모호하네요... 디비그리드에 연결된 데이터 소스의 체인지 이벤트에서 디비그리드에 연...
    • Angel
    • 2000.05.25 01:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri
      2000.05.25 05:31
      폴더의 갯수가 몇개나 되는지 궁금합니다. Angel wrote: > InstallShield 에서 폴더의 갯수가 많으면 ...
    • leeeunjae
    • 2000.05.25 01:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.05.25 02:19
      안녕하세여.. 타락임다.. ^^ 질문이 모호하군여.. 아이콘으로 최소화된 폼을 되돌리고 포커스를 주는...
    • 최용일
      2000.05.25 01:53
      안녕하세요. 최용일입니다. DLL이 아니라 폼이겠죠... DLL에서 로드된 폼. 저두 DLL은 숨기거나 아이...
    • 숨은 DLL
      2000.05.25 01:27
      leeeunjae wrote: > 안녕하세요. 밑에 질문을 했느데 잘못 이해 하신거 같아서요. > 저가 묻고자 한건 메...
    • 김길남
    • 2000.05.25 00:53
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.05.25 02:10
      김길남 wrote: > MS-Access를 델파이에서 사용합니다. > Select Substring(column, 1, 2) From TableName...
    • 김길남
      2000.05.25 03:08
      어린왕자 wrote: > 김길남 wrote: > > MS-Access를 델파이에서 사용합니다. > > Select Substring(colum...
    • mashall3
      2000.05.25 18:52
      김길남 wrote: > 어린왕자 wrote: > > 김길남 wrote: > > > MS-Access를 델파이에서 사용합니다. > > >...