Q&A

  • [긴급질문] 이 소스좀 봐주십시오. 너무너무 급합니다. 흑흑 ㅜ.ㅜ
procedure Tf_ipkumw1.BitBtn4Click(Sender: TObject);

var i,j : integer;



begin



Str := '';

Str := ' SELECT code, cust_name FROM ACCCUSTTC ' +

' WHERE substr(code,1,1) = ''G'' ';



RS := CreateOleObject('ADODB.Recordset');

RS.Open(Str, Con, adOpenDynamic);



If RS.EOF then

begin

showmessage ('자료가 없습니다.');

RS.Close;

end

ELSE

sg_buseo.RowCount := RS.RecordCount;

For i := 1 To RS.RecordCount do

begin

sg_buseo.RowHeights[i] := 20;

sg_buseo.cells[0,i] := RS.Fields[0];

sg_buseo.cells[1,i] := RS.Fields[1];

// i := i + 1;

RS.MoveNext;

end;

Next;

end;





여기서 sg_buseo는 스트링 그리드입니다.

어디가 어떻게 틀린건지 도저히 원래 이런 문법은 없는건가요?

아니면 어떻게 해야 하나요?



DB에서 자료를 읽어와서 스트링 그리드에 display하는 프로시저입니다.



너무너무 급합니다. 부디 가르쳐주십시오..

3  COMMENTS
  • Profile
    지락이 2001.06.20 19:08
    문법이 asp문법과 비슷하군요.

    델파이에서는

    Query라는 컴포넌트가 있습니다.

    그 컴포넌트에 SQL을 넣으시고 OPEN을 하세요

    그리고 MOVENEXT가 아니라 NEXT입니다.





    박원진 wrote:

    > procedure Tf_ipkumw1.BitBtn4Click(Sender: TObject);

    > var i,j : integer;

    >

    > begin

    >

    > Str := '';

    > Str := ' SELECT code, cust_name FROM ACCCUSTTC ' +

    > ' WHERE substr(code,1,1) = ''G'' ';

    >

    > RS := CreateOleObject('ADODB.Recordset');

    > RS.Open(Str, Con, adOpenDynamic);

    >

    > If RS.EOF then

    > begin

    > showmessage ('자료가 없습니다.');

    > RS.Close;

    > end

    > ELSE

    > sg_buseo.RowCount := RS.RecordCount;

    > For i := 1 To RS.RecordCount do

    > begin

    > sg_buseo.RowHeights[i] := 20;

    > sg_buseo.cells[0,i] := RS.Fields[0];

    > sg_buseo.cells[1,i] := RS.Fields[1];

    > // i := i + 1;

    > RS.MoveNext;

    > end;

    > Next;

    > end;

    >

    >

    > 여기서 sg_buseo는 스트링 그리드입니다.

    > 어디가 어떻게 틀린건지 도저히 원래 이런 문법은 없는건가요?

    > 아니면 어떻게 해야 하나요?

    >

    > DB에서 자료를 읽어와서 스트링 그리드에 display하는 프로시저입니다.

    >

    > 너무너무 급합니다. 부디 가르쳐주십시오..

  • Profile
    박원진 2001.06.20 20:13
    님. 질문 답변에 너무너무 감사드립니다.

    헌데..제가 그걸 어떻게 사용하는지 몰라서요.

    님아 다시한번 자세하게 부탁드려도 될까요?



    제가 너무 몰라서 죄송합니다.

    다시 한번 자세하게 부탁드립니다.



    그럼..기다리겠습니다.. 너무너무.. 급합니다..

  • Profile
    지락이 2001.06.20 23:21
    대충 작성해서 올립니다.

    일단, query와 database컴포넌트를 배치한후, odbc나 alias를 연결한상태에서

    수행행야합니다.



    procedure Tf_ipkumw1.BitBtn4Click(Sender: TObject);

    var i,j : integer;



    begin



    Str := '';

    Str := ' SELECT code, cust_name FROM ACCCUSTTC ' +

    ' WHERE substr(code,1,1) = ''G'' ';



    {--------아래부분과 대응되는코드-------------}

    { RS := CreateOleObject('ADODB.Recordset'); }

    { RS.Open(Str, Con, adOpenDynamic); }

    { }

    {Databasename:=을 Query에 직접 대입해주면 user id와 pw를 입력하라고 나오는데}

    {그때는 Database컴포넌트를 이용해서 사용해주시면 됩니다.}

    With Query1 do begin

    close;

    Databasename:='이곳에 odbc명이나 alias명을 입력해주세요'

    sql.clear;

    sql.add(Str);

    open;

    end;



    {--------아래부분과 대응되는코드-------------}

    { If RS.EOF then

    begin

    showmessage ('자료가 없습니다.');

    RS.Close;

    end

    ELSE

    sg_buseo.RowCount := RS.RecordCount;

    For i := 1 To RS.RecordCount do

    begin

    sg_buseo.RowHeights[i] := 20;

    sg_buseo.cells[0,i] := RS.Fields[0];

    sg_buseo.cells[1,i] := RS.Fields[1];

    // i := i + 1;

    RS.MoveNext;

    end;

    Next;

    end;}

    {----------------------------------------------}

    If Query1.IsEmpty then

    begin

    showmessage ('자료가 없습니다.');

    RS.Close;

    end

    ELSE

    sg_buseo.RowCount := Query1.RecordCount;

    For i := 1 To RS.RecordCount do

    begin

    sg_buseo.RowHeights[i] := 20;

    sg_buseo.cells[0,i] := Query1.Fields[0];

    sg_buseo.cells[1,i] := Query1.Fields[1];

    Query1.Next;

    end;

    end;

    end;