Q&A

  • TQuery에서 Query문 알아내기
Query문을 입력할때 Param을 사용하여 입력하면...



Query.SQL.Add('Select * From User Where User_ID = :UserID');

Query.ParamByName('UserID').AsString := UpperCase(sID);



요렇게 해서 정작 삽입된 Query문을 알아내기위한 손쉬운 방법이 없을까요??



음...Query.Text는 'Select * From User Where User_ID = ?' 이렇게 나오고..

Query.SQL.Text는 'Select * From User Where User_ID = :UserID'이렇게 나와서..



정작...실제 UserID값이 들어간 Query문은 알수가 없네요...



흑..알아낼려면...Query.Params를 뒤져봐야하나요?

만약 TParam이 여러개고...각각 타입이 다르다면....

각 TParam이 타입이 다 다르다면.....-_-;;

이거 손쉽게 처리할 방법이 없을까요??



1  COMMENTS
  • Profile
    곰푸 2000.12.29 03:17
    자문자답이네요....-_-;;



    음....머리를 쫌만 더 굴려보니깐...

    쉽게 되는군요..-_-;;



    unit QueryExUnit;



    interface



    uses

    dbtables;



    type

    TQueryEx = class(TQuery)

    public

    function GetRealQuery: string;

    end;



    implementation



    uses

    SysUtils;



    { TQueryEx }



    function TQueryEx.GetRealQuery: string;

    var

    nIndex: Integer;

    sQuery: string;

    begin

    if Self.ParamCount = 0 then

    begin

    Result := Self.SQL.Text;

    Exit;

    end;



    sQuery := Self.SQL.Text;

    for nIndex := 0 to Self.ParamCount - 1 do

    begin

    sQuery := StringReplace(sQuery, ':' + Self.Params[nIndex].Name,

    Self.Params[nIndex].AsString, []);

    end;

    Result := sQuery;

    end;



    end.



    혹 잘못된점이나 지적할 사항있으시면..

    답글 주시기바랍니다..









    -- F o r r e s t --

    곰푸 wrote:

    > Query문을 입력할때 Param을 사용하여 입력하면...

    >

    > Query.SQL.Add('Select * From User Where User_ID = :UserID');

    > Query.ParamByName('UserID').AsString := UpperCase(sID);

    >

    > 요렇게 해서 정작 삽입된 Query문을 알아내기위한 손쉬운 방법이 없을까요??

    >

    > 음...Query.Text는 'Select * From User Where User_ID = ?' 이렇게 나오고..

    > Query.SQL.Text는 'Select * From User Where User_ID = :UserID'이렇게 나와서..

    >

    > 정작...실제 UserID값이 들어간 Query문은 알수가 없네요...

    >

    > 흑..알아낼려면...Query.Params를 뒤져봐야하나요?

    > 만약 TParam이 여러개고...각각 타입이 다르다면....

    > 각 TParam이 타입이 다 다르다면.....-_-;;

    > 이거 손쉽게 처리할 방법이 없을까요??

    >