Iaskyou
asked on
How to refresh DataGrid Control when updating the Database?
I use an DataGrid Control and the datasource is set as the name of an ADODC Control.The datas showed at the DataGrid are from several tables. After modifying the datas of one of these tables by SQL through ADODB.Connection.Execute method, I always refresh the ADODC control and the DataGrid control by the "refresh" method of both controls. To my suprised, the datas in the DataGrid are not changed at all. Why? that below are codes:
lngBookID = adoBooks.Recordset(0) 'adoBooks is ADODC
strSql = "update books set BookName='" & txt2ShowBookName.Text Where BookID = " & CStr(lngBookID)
gblDBConn.Execute strSql 'gblDBConn is ADODB.Connection
adoBooks.Refresh
grd2Books.Refresh 'grd2Books is DataGrid Control
What puzzled me is that if I write the Refresh Codes in the Click Event Sub of ButtonBox like that:
Private Sub Command1_Click()
adoBooks.Refresh
grd2Books.Refresh
End Sub
and when I click the ButtonBox, the datas in the Grid are refreshed.
Can Someone tell me what's the matter?
lngBookID = adoBooks.Recordset(0) 'adoBooks is ADODC
strSql = "update books set BookName='" & txt2ShowBookName.Text Where BookID = " & CStr(lngBookID)
gblDBConn.Execute strSql 'gblDBConn is ADODB.Connection
adoBooks.Refresh
grd2Books.Refresh 'grd2Books is DataGrid Control
What puzzled me is that if I write the Refresh Codes in the Click Event Sub of ButtonBox like that:
Private Sub Command1_Click()
adoBooks.Refresh
grd2Books.Refresh
End Sub
and when I click the ButtonBox, the datas in the Grid are refreshed.
Can Someone tell me what's the matter?
Are you using only 1 connection? You won't get problems this way.
Have a look at
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q200300
https://www.experts-exchange.com/questions/20237490/Refreshing-DBGrid.html
Have a look at
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q200300
https://www.experts-exchange.com/questions/20237490/Refreshing-DBGrid.html
ASKER
I use two Connection. One is ADODB.Connection Object, the other is ADODC. The question is that The first
time I change the data, the grid doesn't refresh at all. But if I change the data again, the grid will
show the data which I changed the first time. and the third time the second-time data is showed. why?
time I change the data, the grid doesn't refresh at all. But if I change the data again, the grid will
show the data which I changed the first time. and the third time the second-time data is showed. why?
Don't connect through ADODC. Use only one connection. You don't need an ADODC to use a grid. You can simply open a static recordset and bind it to the grid this way:
set datagrid1.datasource = YourRecordset
If you absolutely want to keep your ADODC, your will need to refresh your connections (see the links of my previous post).
>>show the data which I changed the first time. and the third time the second-time data is showed. why?
This is because Access is not a real database engine. It is only a file sharing manager!
set datagrid1.datasource = YourRecordset
If you absolutely want to keep your ADODC, your will need to refresh your connections (see the links of my previous post).
>>show the data which I changed the first time. and the third time the second-time data is showed. why?
This is because Access is not a real database engine. It is only a file sharing manager!
ASKER
I have solved this question. Only add "BeginTrans" and "CommitTrans" can OK. Thanks for all of you.
you can't leave this question opened. please ask CS to refund your points and move this question to PAQ (or delete it)
simply add this line after your refreshes...
set grd2Books.datasource = adobooks
set grd2Books.datasource = adobooks
Audsimous, haven't you read that Iaskyou solved his problem?
Dear Audsimous
I've rejected your proposed answer as Experts Exchange holds an experiment to work without the answer button.
See: <https://www.experts-exchange.com/jsp/communityNews.jsp>
Paragraph: Site Update for Wednesday, November 06, 2002
By this rejection the Asker will be notified by mail and hopefully he will take his responsibility to finalize the question or post an additional comment.
The Asker sees a button beside every post which says "Accept This Comment As Answer" (including rejected answers) -- so if he/she thinks yours is the best, you'll be awarded the points and the grade.
EXPERTS: I will return in seven days to close this question.
Please leave your thoughts and recommendations here
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER !
Thanks !
kodiakbear
Experts Exchange Moderator
I've rejected your proposed answer as Experts Exchange holds an experiment to work without the answer button.
See: <https://www.experts-exchange.com/jsp/communityNews.jsp>
Paragraph: Site Update for Wednesday, November 06, 2002
By this rejection the Asker will be notified by mail and hopefully he will take his responsibility to finalize the question or post an additional comment.
The Asker sees a button beside every post which says "Accept This Comment As Answer" (including rejected answers) -- so if he/she thinks yours is the best, you'll be awarded the points and the grade.
EXPERTS: I will return in seven days to close this question.
Please leave your thoughts and recommendations here
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER !
Thanks !
kodiakbear
Experts Exchange Moderator
refund and move to PAQ
Hi Iaskyou,
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will ask a Community Support Moderator to:
Refund points and save as a 0-pt PAQ.
*** even though emoreau's suggestion to avoid ADODC is the best solution -- a real winner
Iaskyou, Please DO NOT accept this comment as an answer.
EXPERTS: Post a comment if you are certain that an expert deserves credit. Explain why.
==========
DanRollins -- EE database cleanup volunteer
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will ask a Community Support Moderator to:
Refund points and save as a 0-pt PAQ.
*** even though emoreau's suggestion to avoid ADODC is the best solution -- a real winner
Iaskyou, Please DO NOT accept this comment as an answer.
EXPERTS: Post a comment if you are certain that an expert deserves credit. Explain why.
==========
DanRollins -- EE database cleanup volunteer
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Doevents
between the .Execute and the .Refresh...
I guess that your Refresh comes toooooo fast :-)
CHeers