안녕하세요
DBGrid와 쿼리를 이용해서 DBGrid에 값을 불러왔습니다..
그 중에서 사용자가 선택한 row의 데이터들을 edit 에 넣고싶은데요..
커서의 위치에 해당하는 row의 데이터들을 받아올 수 있는 방법이 있나요?
만약.. 테이블에
이름 나이 주소 전화번호 아이디 비밀번호
-------------------------------------------------------------------------------------------
가나다 15 서울시 010-1234-5678 aaaa asasasas
호호호 20 인천 NULL fffffff eeeeeeeee
라는 데이터가 했다고 했을때..
DBGrid에는
이름 나이 주소 아이디
---------------------------------------------------
가나다 15 서울시 aaaa
호호호 20 인천 fffffff
위의 형태로 일부 데이터(전화번호, 비밀번호)를 삭제하고 출력하고 있습니다.
이때, 사용자가 '가나다' row를 선택했다면 (여기서는 셀 선택 아니고 row가 선택되게 했습니다)
그 row의 모든 데이터들 (즉... 이름, 나이, 주소, 전화번호, 아이디, 비밀번호)을
각각의 edit에 넣고 싶은것입니다..
숨겨놓은 필드(전화번호, 비밀번호)는 그 데이터를 받아올 수 없는 것인가요..?
기본적으로 edit에 넣으려면 edit1.text := ____________ 라는것은 알고 있는데..
저 오른쪽의 _______________ 가 뭔지를 모르겠습니다..
만약 edit box를 db edit box를 쓰게 되면
수정된 값이 자동으로 db에 적용될수는 있는지요?
아니면 '수정'과 같은 버튼을 하나 만들어서 클릭 했을 때, 이벤트를 줘야 하는건지요..?
비슷한 답변이 몇개 있는것 같긴 했는데
제 검색 실력이 미달인건지 이해 능력이 미달인건지.. 도통 잘 모르겠습니다 -_-;;;;;;
고수님들의 자세한 설명 (예제가 있다면 더 감사하겠습니다 ^^;) 부탁드리겠습니다~
그냥 넘기지 마시고.. 도와주세요.... (_ _)
Query한값을 --> DataSource를 통해 --> DBGrid에 보여줍니다.
결과적으로 Query의 값이 실제 데이터를 불러온 부분이란 것이죠
row가 변하면 같이 변하게 할때
일반 Edit사용시에는 Query의 AfterScroll 이벤트를 사용해서 스크롤이 일어날때
IF Not Query.IsEmpty Then
Begin
Edit1.Text := Query.FieldByName('전화번호').AsString;
Edit2.Text := Query.FieldByName('비밀번호').AsString;
End
Else Begin
Edit1.Text := '';
Edit2.Text := '';
End;
뭐 이런식으로 표현해주시면 됩니다.
그리고 DBEdit를 사용하신다면 수정하고 다른 곳으로 Focus가 이동하게 되면 저장이 됩니다.
(Query의 경우 RequestLive 속성을 True로 해주시고 사용하셔야 합니다.)
하지만 정확한 저장을 위해 수정(Edit) 저장(Post)버튼을 두고 수정,저장 작업이 되도록 하는것이 좋을 듯 보입니다.