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

델파이 Q&A
Delphi Programming Q&A
[12422] Re:[질문]Delphi2007에서 DBExpress사용시 한글로된 필드값변경시 오류
박지훈.임프 [cbuilder] 2010 읽음    2009-02-07 03:12
확실한건 테스트를 해봐야 하지만... 제가 기억하는 거로는...
레코드를 인서트하는 코드를 보면, 파라미터를 생성하는 코드가 먼저 오고 그 다음에 그 파라미터를 이용하는 SQL문을 지정했습니다. 그런데... SQL문을 지정하는 코드에 이르면, SQL문이 실제로 지정되기 전에 내부적으로 이전 SQL문을 삭제하고 그에 따라 파라미터들을 다 삭제합니다. 파라미터 자체가 아예 없어지는 겁니다. 그런 후에 SQL문이 실제로 지정되는 과정에서 SQL 내부에서 쓰인 파라미터들이 자동으로 다시 생성됩니다.

다시 말해, SQL 문 지정 이전에 파라미터를 생성하고 값을 지정한 것이 그냥 사라지는 거죠.
먼저 SQL 문을 지정한 후에 파라미터 값을 지정해야 합니다.

Params.CreateParam() 함수는 파라미터를 생성하기 위해서 쓰신 것일텐데, SQL 문 지정에서 자동으로 파라미터가 생성되므로 다시 만들면 안될 겁니다. 일반적으로 Params.CreateParam() 함수는 이런 목적으로는 사용되지 않고 특수한 경우가 따로 있습니다.


이용남 님이 쓰신 글 :
: 데이타베이스 : SQL Server2000
: 개발언어       : Delphi2007
:
: 한글 필드명으로 구성된 테이블의 Insert, Update시 오류 발생문제
:
: procedure TForm1.CONFIG_ADDDB;
: begin
:   try
:     With UpdateQry do Begin
:       Close;
:       SQL.Clear;
:       SQL.ADD('CREATE TABLE SRVCONFIG ');
:       SQL.ADD('(서버명  VARCHAR(20), ');
:       SQL.ADD(' 카드IP  VARCHAR(15)) ');
:       ExecSql;
:       Close;
:     end;
:   except On E:Exception do
:     MessageDlg(#13+E.Message+#13#13+'CONFIG Table 생성오류.', mtError, [mbOK], 0);
:   end;
: end;
:
: 위의 코드로 생성된 테이블에 값을 입력하면
:             With UpdateQry do begin
:               Close;
:               SQL.Clear;
:               Params.CreateParam(ftString, 'SNAME', ptInput);
:               Params.CreateParam(ftString, 'CIP', ptInput);
:               ParamByName('SNAME').AsString := '\\192.168.0.20';
:               ParamByName('CIP').AsString   := '192.168.0.20';
:               SQL.Text := 'INSERT INTO SRVCONFIG ' +
:                           '(서버명, 카드IP ) VALUES (:SNAME, :CIP)  ';
:               ExecSql(False);
:             end;
:
:
: "필요한 매개변수중 한 개 이상에 값이 주어지지 않았습니다." 라는 오류 발생
: 참고로 Delphi2006에서는 이상없이 잘 실행된 코드인데 Delphi2007 업그레이드후 나타난 증상입니다.
:
: 테이블 생성은 문제가 없는데 ... 답답한 마음에 몇글자 적어봅니다.

+ -

관련 글 리스트
12407 [질문]Delphi2007에서 DBExpress사용시 한글로된 필드값변경시 오류 이용남 2098 2009/02/04
12422     Re:[질문]Delphi2007에서 DBExpress사용시 한글로된 필드값변경시 오류 박지훈.임프 2010 2009/02/07
12428         Re:Re:[질문]Delphi2007에서 DBExpress사용시 한글로된 필드값변경시 오류 이용남 2041 2009/02/10
12435             Re:Re:Re:[질문]Delphi2007에서 DBExpress사용시 한글로된 필드값변경시 오류 박지훈.임프 2601 2009/02/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.