다음과 같이 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은 입력될 내용을 제대로 갖고 있는 것을 확인했습니다.
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로 한 것입니다.
위 코딩은 잘 입력이 됩니다.
다른문제일수도 있다는 것을 배제하지는 마세요.