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
[7788] Re:파라독스 이용하여 Insert 시 에러때문에......
류종택 [ryujt] 784 읽음    2001-12-20 13:26
항상 그런건지 몰라도..
동적 SQL을 사용할 때 파라메터의 타입을 적어두지 않으면..
에러가 나더군요..

전에 저도 그러한 적이 있어서..
아래와 같이 했었습니다.

참고 하세요..

전 파라메터의 이름의 첫자를 파라메터 타입으로 사용했습니다..
자동으로 파라메터의 타입을 설정하기 위한 꽁수 -.-


Voice of Delphi, 류..

---------------------------------------

Procedure SetupParameter(Query:TQuery);
Var
   Loop : Integer;
   stDataType : String;
Begin
  // 아직 적용 안된 것들
  // ftSmallint, ftWord, ftBCD, ftBytes, ftAutoInc, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor
  For Loop:= 0 to Query.Params.Count-1 do
      Begin
        Query.Params.Items[Loop].ParamType:= ptInput;
        stDataType:= Copy(Query.Params.Items[Loop].Name, 1, 1)+'X';
        Case UpCase(stDataType[1]) of
             'S': Query.Params.Items[Loop].DataType:=  ftString;
             'I': Query.Params.Items[Loop].DataType:=  ftInteger;
             'B': Query.Params.Items[Loop].DataType:=  ftBoolean;
             'F': Query.Params.Items[Loop].DataType:=  ftFloat;
             'C': Query.Params.Items[Loop].DataType:=  ftCurrency;
             'D': Query.Params.Items[Loop].DataType:=  ftDate;
             'T': Query.Params.Items[Loop].DataType:=  ftTime;
             'E': Query.Params.Items[Loop].DataType:=  ftDateTime;
             'V': Query.Params.Items[Loop].DataType:=  ftVarBytes;
             'L': Query.Params.Items[Loop].DataType:=  ftBlob;
             'M': Query.Params.Items[Loop].DataType:=  ftMemo;
             Else Query.Params.Items[Loop].DataType:=  ftUnknown;
        End;
      End;
End;

Procedure TForm1. ....
Begin
  Query.SQL.Text:= 'insert into test ' +
                     '      ( AA,  BB,  CC,  DD,  EE) ' +
                     '  values(:sAA, :sBB, :sCC, :sDD, :iEE) ';
  SetupParameter(Query);

  Query.ParamByName('sAA').AsString:= '1235';
  Query.ParamByName('sBB').AsString:= '34';
  Query.ParamByName('sCC').AsString:= '34';
  Query.ParamByName('sDD').AsString:= '34';
  Query.ParamByName('iEE').AsInteger:= 1003;

  Query.ExecSQL;
End;



허접한초보.. 님이 쓰신 글 :
: sql.add('insert into test                ');
: sql.add('      ( AA,  BB,  CC,  DD,  EE) ');
: sql.add('values(:aa, :bb, :cc, :dd, :ee) ');
: parambyname('aa').asstring  := '1235';
: parambyname('bb').asstring  :=   '34';
: parambyname('cc').asstring  :=   '34';
: parambyname('dd').asstring  :=   '34';
: parambyname('ee').asinteger :=   1003;
:
: 파라독스를 이용하여 테이블에 Insert를 시키려고 하는데
: EE 컬럼에서 에러가 나는 것 같습니다......
: 다른 컬럼들은 전부 Alpha type 이고 EE 컬럼만 Number type 인데..
: EE 컬럼을 빼고 Insert 를 시키면 잘 되는데 EE 컬럼에 데이타만 넣으려고하면
: 무슨 에러 메세지가 나오는 것도 아니고 델파이가 그냥 죽어버립니다.....
: 혹시 원인을 알고 계신분 부탁좀 드리겠습니다.....
: 그리고 가능하다면 간단한 Sample 도 주시면 감사하겠구요...........
:

+ -

관련 글 리스트
7787 파라독스 이용하여 Insert 시 에러때문에...... 허접한초보.. 523 2001/12/20
7788     Re:파라독스 이용하여 Insert 시 에러때문에...... 류종택 784 2001/12/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.