Q&A

  • 파라독스 메모필드를 메모필드로 입력....
다음과 같이 A테이블에서 쿼리해서 결과를 B테이블에 업데이트 하는 구문입니다.

근데, 메모타입에 파라미터를 주는 부분에서 에러가 발생합니다.

"Capability not Supported " 라고 합니다. 어떻게 업데이트를 해야 할까요?

델파이 5, Paradox를 사용하고 있습니다.



with Query1 do begin

Close;

SQL.Clear;

SQL.Add('SELECT DocTitle,DocMemo /*메모*/ FROM ''A'' ');

Open;

end;

if Query1.RecordCount > 0 then begin

with Query2 do begin

while not Query1.Eof do begin

Close;

SQL.Clear;

SQL.Add('UPDATE ''B'' ');

SQL.Add(' SET DocMemo = :PDocMemo/*메모*/ ');

SQL.Add(' WHERE DocTitle = :PDocTitle ');



ParamByName('PDocMemo').AsMemo := Query1.FieldByName('DocMemo').AsString;{에러}

// 이하의 내용도 모두 그런 에러 메세지를 얻었습니다.

// ParamByName('PDocMemo').AsMemo := (Query1.FieldByName('DocMemo') as TMemoField).AsString;

// ParamByName('PDocMemo').Assign(Query1.FieldByName('DocMemo') as TMemoField);

// ParamByName('PDocMemo').AsString := Query1.FieldByName('DocMemo').AsString;



ParamByName('PDocTitle').AsString := Query1.FieldByName('DocTitle').AsString;

ExecSQL;

Query1.Next;

end;

end;



제발~~~~ 살려 주세요. 며칠짼지 모르겠군요. T.T



디버깅을 하면서 위의 ParamByName('PDocMemo').AsMemo의 힌트를 보니까 다음과 같은 힌트가 보입니다.

"ParamByName('PDocMemo').AsMemo=Function to be called. TParam.GetAsMemo, was eliminated by linker"

그리고, Query1.FieldByName('DocMemo').AsString은 입력될 내용을 제대로 갖고 있는 것을 확인했습니다.

2  COMMENTS
  • Profile
    이재식 2000.05.23 22:40
    with Query1 do

    begin

    Close;

    SQL.Clear;

    SQL.Add('SELECT DocTitle, DocMemo FROM A ');

    Open;

    end;



    if Query1.RecordCount > 0 then

    begin

    with Query2 do

    begin

    while not Query1.Eof do

    begin

    Close;

    SQL.Clear;

    SQL.Add(' UPDATE B ');

    SQL.Add(' SET DocMemo = :PDocMemo');

    SQL.Add(' WHERE DocTitle = :PDocTitle ');



    ParamByName('PDocmemo').DataType := ftMemo ;

    ParamByName('PDocMemo').AsMemo := Query1.FieldByName

    ('DocMemo').AsString + 'hoho' ;

    ParamByName('PDocTitle').AsString := Query1.FieldByName

    ('DocTitle').AsString;

    ExecSQL;

    Query1.Next;

    end;

    end;

    end ;



    위처럼 해보시고요,

    안되면 저에게 해당 테이블과 님이 하신 코딩을 보내주시면

    검토해보겠습니다.



    위 코딩은 델파이5, 그에있는 Paradox로 한 것입니다.

    위 코딩은 잘 입력이 됩니다.



    다른문제일수도 있다는 것을 배제하지는 마세요.



  • Profile
    김경식 2000.05.24 00:13
    희한하게 메모필드는 삽입은 되는데, 수정은 안 되더군요. SQL Explorer로 한번 써 봤는데요, insert문에서는 삽입이 잘 되는데, Update문을 적으면 꼭 Capability not supported라는 메세지가 뜨더군요.



    그래서 결국엔 해당 레코드를 삭제하고 다시 삽입하는 꽁수를.... ^^;

    어쩔 수 없었습니다. 시간이 너무 지나가서...

    그래도, 이재식님. 답변 정말 감사드립니다.

    아무래도 동적으로 테이블을 생성하면서 뭔가 차이점이 생긴것 같습니다.



    이재식 wrote:

    > with Query1 do

    > begin

    > Close;

    > SQL.Clear;

    > SQL.Add('SELECT DocTitle, DocMemo FROM A ');

    > Open;

    > end;

    >

    > if Query1.RecordCount > 0 then

    > begin

    > with Query2 do

    > begin

    > while not Query1.Eof do

    > begin

    > Close;

    > SQL.Clear;

    > SQL.Add(' UPDATE B ');

    > SQL.Add(' SET DocMemo = :PDocMemo');

    > SQL.Add(' WHERE DocTitle = :PDocTitle ');

    >

    > ParamByName('PDocmemo').DataType := ftMemo ;

    > ParamByName('PDocMemo').AsMemo := Query1.FieldByName

    > ('DocMemo').AsString + 'hoho' ;

    > ParamByName('PDocTitle').AsString := Query1.FieldByName

    > ('DocTitle').AsString;

    > ExecSQL;

    > Query1.Next;

    > end;

    > end;

    > end ;

    >

    > 위처럼 해보시고요,

    > 안되면 저에게 해당 테이블과 님이 하신 코딩을 보내주시면

    > 검토해보겠습니다.

    >

    > 위 코딩은 델파이5, 그에있는 Paradox로 한 것입니다.

    > 위 코딩은 잘 입력이 됩니다.

    >

    > 다른문제일수도 있다는 것을 배제하지는 마세요.

    >