>안녕하십니까? 전봉수 입니다.
>에너지관리 프로그램을 개발하고 있는과정에서 DB 테이블에서 공종코드를 축출하여 건수를 스트링그리드셀에 뿌려주는 작업인데요 건수를 추출하고나서 추출된 셀위에 마우스를 위치하고 클릭하면 작업(공종) 내용을 보려고합니다.
>예를들어 추출된 셀값이 5이면 작업(공종)내용도 5가지가 보여야 되겠죠?
>좌표와 셀값은 델마당 검색을 통하여 입수를 하였는데 셀 내용을 보여주는 루턴은 아무리 찿아봐도 없는것 같아서 질문을 드립니다. 꼭좀 부탁드립니다.
최용일님 답변 너무 감사합니다.
//QR_MiChJo.SQL.Text := '' ; 는 에러가 나서 제가 사용한 SQL문 MichJo_DATA(SENDER); 로 바꾸워 보았습니다. 제가 사용한 SQL문은 하단에 수록하였습니다 참고하십시요
이제는 셀에마우스로 클릭하면 셀값에대한 내용이 출력되는데요 그런데 셀값의 내용만 출력하여야하는데 모두출력됩니다. 면목이 없습니다만 밤샘하면서 여러가지 시도는 해봤지만 역시 부족한 실력은 어쩔수 없는모양입니다 마자막으로 한번만더 부탁드립니다.
procedure TMiChJoForm.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
var
sText , sDBText: String;
col, row : integer;
begin
Col := StringGrid1.Col; // 행
Row := StringGrid1.Row; // 열
sText := StringGrid1.Cells[Col,Row];
QR_MiChJo.Close;
MichJo_DATA(SENDER); //<- SQL문
//QR_MiChJo.SQL.Text := '' ; // sText를 이용해서 값을 가져오는 SQL문 <-포함시에러
QR_MiChJo.Open;
if not QR_MiChJo.EoF then
begin
while not QR_MiChJo.EoF do //then
begin
sDBText := sDBText + QR_MiChJo.FieldByName('Chnayo').AsString + #13#10;
QR_MiChJo.Next;
end;
ShowMessage('StringGird의 정보: ('+IntToStr(Col)+','+IntToStr(Row)+') 값: ' + sText + #13#10 + ' DB정보: ' + #13#10 + sDBText);
end
else
ShowMessage('매칭되는 DB값이 없습니다.');
// SQL문
PROCEDURE TMiChJoForm.MiChJO_DATA(SENDER: TOBJECT);
BEGIN
WITH QR_MiChJo DO
BEGIN
CLOSE;
SQL.Clear;
SQL.ADD('SELECT A.* , B.Mname, C.Yname, D.Hname, E.Sname '+
' FROM Jaryo A,Mich B,Yhng C,Chury D,Singo E '+
' Where '+
' A.Mcode = B.Mcode AND A.Ycode = C.Ycode AND '+
' A.Hcode = D.Hcode AND A.Scode = E.Scode '+
' And YulBul = "'+ED_YulBul.TEXT+'"');
END;
End;
쿼리문을 수정해야 겠군요!
StringGrid1.Cells[10,12]의 값이 3이면 해당 쿼리의 조건절에 이값이 들어가야 할 것 같네요
즉, 3에 해당되는 값들만 쿼리 결과값으로 가져와야 합니다.
지금 쿼리문은 선택한 셀과 전혀 상관없이 YulBul 일치하는 값만 읽어오니 이부분 뒤에 하나가 더 추가 되어야 겠군요
And YulBul = "'+ED_YulBul.TEXT+'"
AND X = '''+sText+''' <== 여기서 X값은 3에 대응되는 필드 입니다.