Daum 파워에디터
[MSHFlexGrid의 이름을 objFlexGrid로 바꿨습니다;]
Private Sub cmd수정_Click()
If objRs.State = adStateOpen Then objRs.Close End
If objRs.Source = "select * from 회원정보" objRs.Open
objRs.Fields("이름").Value = Text2.Text objRs.Fields("생년월일").Value
= Text9.Text objRs.Fields("주소").Value = Text3.Text
objRs.Fields("이메일").Value = Text4.Text objRs.Fields("연락처").Value =
Text5.Text objRs.Fields("HP").Value = Text7.Text
objRs.Update objFlexGrid.Refresh
-----------------------------------------------------------------------------------------------
Private Sub Form_Activate() Dim line As Integer
Set objCon = CreateObject("ADODB.Connection")
objCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\db2.mdb;" objCon.Open Set objRs =
CreateObject("ADODB.RecordSet") objRs.Source = "select * from
회원정보" objRs.Open , objCon, adOpenKeyset, adLockPessimistic
objFlexGrid.Rows = objRs.RecordCount + 1 objFlexGrid.Cols
= 7 objFlexGrid.Row = 0
objFlexGrid.Col = 0 objFlexGrid.Text =
"고객번호"
objFlexGrid.Col = 1 objFlexGrid.Text =
"이름" objFlexGrid.Col = 2 objFlexGrid.Text =
"생년월일" objFlexGrid.Col = 3 objFlexGrid.Text =
"주소" objFlexGrid.Col = 4 objFlexGrid.Text =
"이메일" objFlexGrid.Col = 5 objFlexGrid.Text =
"연락처" objFlexGrid.Col = 6 objFlexGrid.Text
= "HP"
line = 1 Do While (objRs.EOF <>
True) objFlexGrid.Row = line
objFlexGrid.Col = 0
objFlexGrid.Text = objRs.Fields("고객번호").Value objFlexGrid.Col =
1 objFlexGrid.Text = objRs.Fields("이름").Value
objFlexGrid.Col = 2 objFlexGrid.Text =
objRs.Fields("생년월일").Value objFlexGrid.Col =
3 objFlexGrid.Text = objRs.Fields("주소").Value
objFlexGrid.Col = 4 objFlexGrid.Text =
objRs.Fields("이메일").Value objFlexGrid.Col =
5 objFlexGrid.Text = objRs.Fields("연락처").Value
objFlexGrid.Col = 6 objFlexGrid.Text =
objRs.Fields("HP").Value line = line +
1 objRs.MoveNext Loop
------------------------------------------------------------------------------------------------
Private Sub objFlexGrid_DblClick() Text2.Text =
objFlexGrid.TextMatrix(objFlexGrid.Row, 1) Text9.Text =
objFlexGrid.TextMatrix(objFlexGrid.Row, 2) Text3.Text =
objFlexGrid.TextMatrix(objFlexGrid.Row, 3) Text4.Text =
objFlexGrid.TextMatrix(objFlexGrid.Row, 4) Text5.Text =
objFlexGrid.TextMatrix(objFlexGrid.Row, 5) Text7.Text =
objFlexGrid.TextMatrix(objFlexGrid.Row, 6)
End Sub
소스를 이렇게 했는데요;
MSHFlexGrid에 나와있는걸 더블클릭하면 텍스트박스로 그 데이터[?]가 오고
텍스트박스로 온걸 수정해서 cmd수정해서 누르면 값이 수정되도록했는데요........
그런데
수정을 누르면 아무변화가 없고 폼을 닫았다가 다시 올리면
수정이 되어있습니다..................
그래서 MSHFlexGrid. 하면 자동완성같이 뜨는걸로찾아봐서
refresh라는걸 찾았는데
MSDN에서 찾아보니
새로고침과 같은 역할을 하는것 같더군요............
그래서 cmd수정 맨 마지막에 넣어봤는데
별 다를바가 없더군요;;;
위에서 수정버튼을 누르면
창에 자동으로 새로고침이 되서 창에 뜨게하는방법이 없을까요...
첫댓글 음.. 처음 DB연동때 썼던 방식이네요.. Refresh는 새고고침은 맞으나 "cmd수정" 소스가 틀렸습니다. 올리신 소스를 보면 자료가 DB에 올라가긴 하겠지만.. 원하는 위치에는 올라가지 않을겁니다.(예를 들어서 고객번호 12를 수정해서 올려도 고객번호 10이 수정된다거나)
Form_Activate 를 사용하셨기 때문에 폼을 닫았다 다시 실행하면 고쳐지는것 처럼 보이는거구요. 수정이나 삭제후 데이터가 바로 반영되게 하시려면 수정이나 삭제후 그리드를 다시 그려주셔야 합니다. Refresh는 데이터를 갱신하는게 아니고 그리드가 가지고 있는 값들을 다시 그리는것이니 아무 변화가 없을수 밖에요. Form_Activate 를 Data_Refresh 처럼 바꿔주시고요. 수정이나 삭제 코드 제일 아래쪽에 Call Data_Refresh 처럼 호출해주시면 됩니다. 물론 폼 처음 열을때 화면에 데이터가 나와야 하니까 Form_Load 에도 Call Data_Refresh 한번 넣어주시고요. Form_Activate 에는 아무 코딩 안하셔도 됩니다.