안녕하세요...
3개의 테이블에서 각각의 필드값을 읽어와 stringgrid에 보여 줍니다.
근데, 각 필드 이름으로 값을 읽어오는 부분에서 에러가 납니다.
뭐가 잘못되었는지 한번 봐 주세요.....
------------------------------------------------------------------------
Query4.Close;
Query4.SQL.Add(' Select f_myid, f_friid, m_nickname, m_sex, j_connow from joins, friend, member where friend.f_myid = :pid');
Query4.sql.add(' and friend.f_friid = member.m_id and friend.f_friid = joins.j_id order by member.m_sex ');
Query4.ParamByName('pid').AsString := loginid;
Query4.Open;
Query4.First;
i := 1;
while not query4.eof do
begin
StringGrid5.Cells[0,i] := 'ON';
(*) StringGrid5.Cells[1,i] := query4.Fieldbyname('m_sex').AsString;
(*) Stringgrid5.cells[2,i] := query4.fieldbyname('f_friid').AsString;
(*) StringGrid5.Cells[3,i] := Query4.Fieldbyname('j_connow').AsString;
inc(StringGrid5.rowcount);
inc(i);
query4.next;
end;
Query4.Close;
------------------------------------------------------------
이상 소스 입니다...
(*) 표시 해 놓은 부분에서 에러가 납니다...!
> 안녕하세요...
>
> 3개의 테이블에서 각각의 필드값을 읽어와 stringgrid에 보여 줍니다.
> 근데, 각 필드 이름으로 값을 읽어오는 부분에서 에러가 납니다.
> 뭐가 잘못되었는지 한번 봐 주세요.....
>
> ------------------------------------------------------------------------
>
> Query4.Close;
> Query4.SQL.Add(' Select f_myid, f_friid, m_nickname, m_sex, j_connow from joins, friend, member where friend.f_myid = :pid');
> Query4.sql.add(' and friend.f_friid = member.m_id and friend.f_friid = joins.j_id order by member.m_sex ');
> Query4.ParamByName('pid').AsString := loginid;
> Query4.Open;
> Query4.First;
> i := 1;
> while not query4.eof do
> begin
> StringGrid5.Cells[0,i] := 'ON';
>
> (*) StringGrid5.Cells[1,i] := query4.Fieldbyname('m_sex').AsString;
> (*) Stringgrid5.cells[2,i] := query4.fieldbyname('f_friid').AsString;
> (*) StringGrid5.Cells[3,i] := Query4.Fieldbyname('j_connow').AsString;
>
> inc(StringGrid5.rowcount);
> inc(i);
> query4.next;
> end;
> Query4.Close;
>
> ------------------------------------------------------------
>
> 이상 소스 입니다...
> (*) 표시 해 놓은 부분에서 에러가 납니다...!
>
에러메세지를 정확히 보세요... 위의 내용으로는 어떤 에러인지 알수 없지만 이런 경우,
에러의 경우는
1. 데이터형이 맞지 않거나
2. 위의 3 테이블의 열이 유일하지 않을때...(테이블 알리아스를 표시하지 않았으므로...)
=> m_sex 가 어느 테이블의 열인지, 그리고 3 테이블에서 유일한 필드인지...
그리고 아래의 코딩이 보기 좋지 않을까요.
with Query4 do
begin
close;
sql.clear;
sql.add('Select ');
sql.add(' f_myid, f_friid, m_nickname, m_sex, j_connow ');
sql.add('from ');
sql.add(' joins a, -- 알리아스를 표시하시는 코딩습관이 좋습니다. ');
sql.add(' friend b, ');
sql.add(' member c ');
sql.add('where ');
sql.add(' friend.f_myid = :pid ');
sql.add(' and friend.f_friid = member.m_id ');
sql.add(' and friend.f_friid = joins.j_id ');
sql.add('order by ');
sql.add(' member.m_sex ');
ParamByName('pid').AsString := loginid;
First;
i := 1;
while not eof do
begin
StringGrid5.Cells[0,i] := 'ON';
(*) StringGrid5.Cells[1,i] := Fieldbyname('m_sex').AsString;
(*) Stringgrid5.cells[2,i] := fieldbyname('f_friid').AsString;
(*) StringGrid5.Cells[3,i] := Fieldbyname('j_connow').AsString;
inc(StringGrid5.rowcount);
inc(i);
next;
end;
Close;
end;