Q&A

  • DB에서 불러온 값이 항상 0으로 나오는 문제?
아래 소스에서요....
현재 데이터베이스에는 값이 올바르게 들어가 있는데요...
그리고 값을 넣을때도 올바르게 들어갑니다..
문제는 값을 불러 오는데서요...
이상하게 꼭 한개의 값이 0으로 계속 나옵니다.
문제 부분은 바로 아래 소스(MyData 프로시저)에서 문제가 있어요..
그다음 프로시저에서는 값이 똑바로 나옵니다..
필드 이름이 no 였는데.. 이 필드이름이 문제가 있나 싶어서..
sno로 바꾸고 해보았는데. 그래도 0이 나왔습니다.
그래서 이번에는 테이블을 이름도 바꾸어서 해보았구요..
그리고 아예.. delno라는 필드를 하나 더 주어서 같은 값들을 넣어서.. 해보았더니...
분명히 DB속에 있는 값은 1, 2 등이 들어가느데..
sno, delno 를 프로그램에서 출력하면 무조건 0으로 나오는 겁니다..
벌써 3일째 이걸루.. 허비하고 진도를 못나가고 있습니다.
고수님들 도데체 뭐가 문제인가요...
참고로 맨아래 프로시저에는 값이 제대로 출력됩니다.

procedure TFriendInfoForm.MyData;
var
   ListItem : TListItem;
   s : String;
begin
   ListItem := TListItem.Create(nil);
   orqu.Close;
   orqu.Sql.Clear;
   s := 'select sno, mdir_name, mtotal_check, delno from MYPUFOLDER where mid=:DID';
   // orqu.Sql.Append('select sno,dir_name,total_check,delno from MYPUFOLDER where id=:DID');
   orqu.Sql.Append(s);
   ShowMessage(s);
   orqu.ParamByName('DID').AsString := STUDENTCD;
   ShowMessage(STUDENTCD);
   orqu.Open;
   orqu.First;
   While NOT orqu.Eof Do
   Begin
       ShowMessage(IntToStr(orqu.Fields.Fields[0].AsInteger));
       ShowMessage(IntToStr(orqu.Fields.Fields[3].AsInteger));
       ListItem := ListView1.Items.Add;
       ListItem.Caption := orqu.Fields.Fields[1].AsString;
       ListItem.ImageIndex := 0;
       ListItem.SubItems.Add(IntToStr(orqu.Fields.Fields[3].AsInteger));
       ListItem.SubItems.Add(orqu.Fields.Fields[2].AsString);
       orqu.Next;
   End;
   orqu.Close;
end;

// Data View
procedure TFriendInfoForm.FriendData;
var
   ListItem : TListItem;
begin
   ListItem := TListItem.Create(nil);
   orqu.Sql.Clear;
   orqu.Sql.Append('select no,dir_name,total_check from Directory where id=:CID and pu_check=:CP and public_check!=:PU');
   orqu.ParamByName('CID').AsString := pGroup(group_node.Data).get_id;
   orqu.ParamByName('CP').AsString := 'Y';
   orqu.ParamByName('PU').AsString := '3';
   orqu.Open;
   orqu.First;
   While NOT orqu.Eof Do
   Begin
       ListItem := ListView1.Items.Add;
       ListItem.Caption := orqu.Fields.Fields[1].AsString;
       ListItem.ImageIndex := 0;
       ListItem.SubItems.Add(IntToStr(orqu.Fields.Fields[0].AsInteger));
       ListItem.SubItems.Add(orqu.Fields.Fields[2].AsString);
       orqu.Next;
   End;
   orqu.Close;
end;
0  COMMENTS