Q&A

  • MDI 폼에서 Child폼과 데이터 주고 받는것좀 봐주세요?
procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
          Form1.Edit1.Text    := Query2.FieldByname('tCode').AsString;
          Form1.Pname.Caption := query2.FieldByname('tname').AsString;
          Form2.Close;
end;
위에 소스는 프로그램 소스의 일부분입니다.

MDI폼으로 메인을 띄운후에.. 폼 1에서 찾기 버튼을 클릭하여 폼2의 조회 화면에서 데이터를 조회한후에 폼2의 일부 데이터를 폼 1으로 이동할려고 하는데
Access violation 에러가 납니다.
게시판을 하루종일 뒤져도 답이 안나오네요?
어떻게 해야 될지? 막막합니다.
고수님들 도와주세요..^^
3  COMMENTS
  • Profile
    김경록 2003.05.15 22:44
    use 절을 보여주셨으면 더 좋았을텐데..

    Form1의 use절에는
    form2를 추가해 주시구여..

    아래부분을
         Form1.Edit1.Text    := Query2.FieldByname('tCode').AsString;
         Form1.Pname.Caption := query2.FieldByname('tname').AsString;

    ==> Form1.Edit1.Text    := Form2.Query2.FieldByname('tCode').AsString;
    ==> Form1.Pname.Caption := Form2.query2.FieldByname('tname').AsString;

    왜 form2를 썼냐고 하면여.. Form1과 Form2에 모두 Query2가 있을 수 있다는
    생각에서 썼습니다.
    단, 받는 값(Query2.FieldByname('tCode').AsString)이 Nil값이면 안되겠쪄?



  • Profile
    정규성 2003.05.15 23:02

    Form1.Edit1.Text    := Form2.Query2.FieldByname('tCode').AsString;
    Form1.Pname.Caption := Form2.query2.FieldByname('tname').AsString;
    위의 소스처럼 해도 마찮가지입니다.

    다른 방법이 없을까요?
    꼭좀 부탁 드리겠습니다.
  • Profile
    김경록 2003.05.16 09:45
    받는 값이 있는지부터 확인해 보세여..
    Query2.FieldByname('tCode').AsString
    query2.FieldByname('tname').AsString

    위 2개에서 받는 값이 모두 존재합니까? 즉, NULL값이 존재하지 않는지..
    Debuging 해 보시기 바랍니다..
    Form2에서 위의 값이 존재하는지 확인해 보시기 바랍니다..
    혹시 Form2가 Close된 후에 해당값을 가져오기 위해서
    Action을 취하는게 아닌지..
    (즉, Form2의 상태가 먼저 Close된 상태인지 확인해 보심이..)

    올려주신 소스만으로는 확인이 불가능하겠네여..
    그 부분만으로는 틀린점을 찾을수가 없네여..
    Coding상으로는 문제가 없는데..
    실행시 Error가 발생하는것은
    없는(혹은 파괴된) Class 혹은 컴포넌트를 참조하거나.. 읽을때
    일어나는 것인데..
    확인해 보심이 좋겠네여..
    아니면.. Form2가 이미 생성되어져 있는데..
    Form2를 또 생성해서 사용하고 있는지..
    아니면.. Form2도 생성되지 않았는데.. 값을 참조하는 것인지..


    결과적으로.. DoubleClick이벤트 전에
    선행되어지는 것들을 올리신 소스만으로 판단하기가 어렵군여..
    나머지 소스도 봐야할 것 같네여..


    2차적으로

    Try
    Except
    end;
    문으로 확인을 해 보시는게 좋겠군여..