Q&A

  • 쿼리결과를 제대로 가져오지 못해요..
sql문장을 입력받아 결과를 그리드로 보여주는 간단한 프로그램입니다..

<!--CodeS-->

    sSqlText := Trim(mmSql.Lines.Text);
    if Copy(sSqlText, Length(sSqlText), 1) = ';' then
        sSqlText := Copy(sSqlText, 1, Length(sSqlText)-1);

    if UpperCase(Copy(sSqlText, 1,6)) <> 'SELECT' then begin
        MessageDlg('SELECT 문만 가능합니다!', mtInformation, [mbOK],0);
        Exit;
    end;

    try
        qrySql.Close;
        qrySql.SQL.Text := sSqlText;
        qrySql.Open;
    except
        on E: Exception do
            begin
                MessageDlg('구문오류입니다. 담당자에게 문의하세요.' + #13 + '오류내용:' + #13 + E.Message, mtWarning, [mbOK],0);
                Exit;
            end;
    end;

    grdResult.Clear;
    grdResult.Columns.Clear;

    for i := 0 to qrySql.FieldCount - 1 do begin
        grdResult.Columns.Add;
        grdResult.Columns[i].Title.Caption := qrySql.Fields[i].FieldName;
    end;

    qrySql.First;
    for i := 0 to qrySql.RecordCount - 1 do begin
        grdResult.AddRow;
        for j := 0 to qrySql.FieldCount - 1 do begin
            grdResult[j, i].AsString := qrySql.Fields[j].AsString;
        end;
        qrySql.Next;
    end;

<!--CodeE-->

그런데 필드값이 긴 경우는 16자까지만 가져오네요

예> 실제값 ==> 12345678901234567890
      결과값 ==> 1234567890123456

고수님들의 조언 부탁드립니다...
2  COMMENTS
  • Profile
    착한천사 2007.04.15 03:53
    착한천사입니다.
    qrySql 컴포넌트의 필드중에 필드값이 16자리인것에 대해서..
    필드의 자리수를 13자리로 고정시켜 놓은게 아닌가 하군요..

    그렇지 않다면,,
    혹시 Grid의 width때문에 글자가 보이지 않는건 아닐까요?
    저는 아주 긴 문장도 잘 가져오고 있으므로
    문제는 없어 보입니다만..
    혹시, TQuery 컴포넌트 맞으시죠?
    위 2가지를 한 번 확인해 보세요...



  • Profile
    이의성 2007.04.16 20:26

    답변 감사합니다..

    일단, Grid의 width는 넓게 잡아봐도 똑같은 결과가 나옵니다.

    그런데, qrySql 컴포넌트 필드 자리수는 어떤것을 말씀하시는지 모르겠습니다.

    (sql 을 입력받는 것이라 TQuery는 Name만 바꾸었을뿐인지라..)