Q&A

  • 레코트 카운드 Edit에 숫자가 보이지 않습니다 소스좀 봐주세요.
안녕하십니까?
델파이를 사랑하는 전봉수 입니다.
조회시 DbGrid에 뿌려준 문자열 데이터를 특정 레코드를 카운트하여 Edit에 넣으려
합니다.

Query Db 는 Jaryo.Db 이고요. Name는 Qr_jaryo1 이며  필드명은 Bigo 입니다.
그리고 DbGrid 는 DbGrid2 이고요. DataSource는 Ds_Jaryo 입니다.
Bigo에 미처리 와 완료를  각각  레코드 수를 알려고 합니다.("예" Bigo='미처리'  Bigo='완료')

퀴리문을 연결하여 아래와 같이 했습니다. 그런테 Edit에 숫자가 보이지 않습니다.

// 완료 미처리 레코드 카운트
procedure TJaryoForm.DS_Jaryo1UpdateData(Sender: TObject);
Var
Chr,MiCh: Integer;
begin
Chr:=0;
MiCh:=0;
With Qr_Jaryo1 Do
   Begin
     Close;
     Sql.Clear;
     Sql.Add('Select Count(*) Chr,0 MiCh From Jaryo And Bigo=''미처리''');
     //UNION <-컴파일 에러
     Sql.Add('Select 0 Chr,Count(*) MiCh From Jaryo And Bigo=''완료''');
     Open;
     St_QChryja.Text:=Inttostr(Chr);
     St_QMiChryja.Text:=Inttostr(MiCh);
   End;
end;

또 특정 필드에 문자열이 없을때는 '미처리' 문자열이 있을때는 '완료'  저장시 저장하고 십습니다.
현재 방법을 몰라서  Bigo필드에 수동으로 입력하도록 해 놓았습니다.  
한델,델마당볼렌트포롬홈과 델파이 코리아에 4차례나 질문을 하였는데 아무도
명쾌한 답변이 없어서 마지막으로 올립니다.
꼭좀 부탁 드립니다.

// Bigo에 완료 미처리 넣기 <- 아직 퀴리문을 구성하지 못 했습니다.
1  COMMENTS
  • Profile
    graylevel 2004.02.12 06:49
    Query문 내에 Chr은 DBMS에 전달하는 문자열이고
    IntToStr(Chr)에 사용된 Chr은 Integer로 선언된 정수형 변수입니다.
    즉, 외관상 같아 보이나 실제론 아무 연관이 없습니다.
    마치 서로 다른 Procedure에 선언된 각각의 동일한 명칭의 변수가
    서로 연관이 없듯이 말입니다.

    DB에 검색에 사용된 값을 읽으려면
      TDataSet.FieldByName( "Field명" ).AsInteger
    등으로 읽어야 합니다.
    즉, 님의 경우엔
      St_QChryja.Text := Qr_Jaryo1.FieldByName( "Chr" ).AsInteger;
    의 형태가 되겠군요.

    글구 .... 컴파일 오류 부분에 대하여 말씀 드리면...
    Sql로 사용한 Component(예: TQuery)등은 DB에 접근하기 위한 Component입니다.
    질의할 SQL문이 3줄(Sql문 #1, Sql문 #2, Sql문 #3)로 되어 있다면
      TQuery.SQL.Clear;
      TQuery.SQL.Add( 'Sql문 #1' );
      TQuery.SQL.Add( 'Sql문 #2' );
      TQuery.SQL.Add( 'Sql문 #3' );
      TQuery.Open;  // 또는 TQuery.ExecSQL;
    의 형태로 해야 하나 님의 경우는 바로 TQuery.SQL 없이 바로 UNION을 사용하여
    문제가 된 것입니다( 사용하신 SQL문에 대한 오류 여부는 확인 안 해봄 ^_^;;)
    참고하시고요. 즐푸하세요.