SQL.BeginUpdate와 SQL.EndUpdate를 왜 쓰셨는지 모르겠는데, 아마 그것 때문일 겁니다.
BeginUpdate와 EndUpdate는 TStrings의 메소드인데, 그 사이에 일어나는 동작이 적용되지 않도록 하고 최대한 빨리 TStrings 데이터 작업을 하기 위해 쓰이는 겁니다. 따라서 당연히 SQL문 파싱도 일어나지 않겠지요. SQL 파싱이 일어나지 않았으니 파라미터는 아직 존재하지 않는 상태이구요.
SQL.BeginUpdate와 SQL.EndUpdate를 제거하고 한번 해보세요.
황장하 님이 쓰신 글 :
: SQL.BeginUpdate;
: SQL.Text := 'INSERT INTO CATDTBL VALUES( ''aaa'', ''bbb'', ''ccc'', :CARD_IMAGE )';
:
: if sTableName = 'cardtbl' then
: begin
: try
: msCardImage := TMemoryStream.Create;
: SelectImage.Picture.Graphic.SaveToStream( msCardImage );
: msCardImage.Position := 0;
:
: Parameters.ParamByName('CARD_IMAGE').LoadFromStream( msCardImage, ftBlob );
: finally
: msCardImage.Free;
: SelectImage.Free;
: end;
: end;
:
: SQL.EndUpdate;
:
: 에서 ParamByName에서 CARD_IMAGE를 찾을수 없다고 나옵니다...
: 어디가 문제인지 확인부탁드립니다.
: 참고로 MDB에 저장합니다.
|