• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1638
  • Last Modified:

Refreshing Current Record ADO

Hi,

I have a grid connected to an ADO dataset. Then i select a record and i click on a button so that i do something with the details of that record. Is there a way to refresh the details only for  the selected record without using requery or another query to get them? Because I dont want to refresh lets say 1000 records, just to see the updated details of the one am really interested in.

Thanks in advance
0
christos79
Asked:
christos79
  • 7
  • 5
  • 2
  • +2
1 Solution
 
mikelittlewoodCommented:
Well if you update via the dataset you are using, the information will be refreshed on screen anyway.
If you are using a totally separate query object to do the updating then you will need to reload the dataset.
0
 
ziolkoCommented:
try this:
ADOQuery1.Recordset.Resync(adAffectCurrent, adResyncAllValues);

should refresh current record

ziolko.
0
 
ziolkoCommented:
or if you using clientdataset, there is special method to do it:

ClientDataSet1.RefreshRecord

ziolko.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
christos79Author Commented:
ADOQuery1.Recordset.Resync(adAffectCurrent, adResyncAllValues);

i have the dataset in a datamodule. It gives me an error message for adAffectCurrent and adResyncAllValues. I have to put smth in the uses list?
0
 
ziolkoCommented:
you have to add ADOInt to uses clausule

ziolko.
0
 
christos79Author Commented:
insufficient key column information for updating or refreshing ...

Now i get this error message when i try to execute it. I tried to change the cursor type but nothing changes...
0
 
ziolkoCommented:
what database you use?

ziolko.
0
 
christos79Author Commented:
MS SQL Server 2005
0
 
ziolkoCommented:
run SQL profiler and call standard .Refresh then check with profiler what sql command has been executed, it's quite possible that not all records will be refetched but only changed ones

ziolko.
0
 
christos79Author Commented:
I am sorry but i didnt quite understand how this will help me fix the problem. I run SQL Profiler and saw the command. But i dont know why i get that error message in my application and how i can remove it.
0
 
ziolkoCommented:
call ADOQuery1.Refresh; and see into profiler if the complete select statement is executed or is there something in where clausule that limits output to only changed records

ziolko.
0
 
christos79Author Commented:
I get the same error message even with refresh <insufficient key column information for updating or refreshing>. So at the sql profiler i cannot see anything because refresh is not executed due to the error.
0
 
kretzschmarCommented:
usual i use the requery-method of the associated dataset

meikl ;-)
0
 
ziolkoCommented:
if you got this errro it means that it's not possible to uniqually identify changed record, in this case you can try method suggested by meikl or call .Close then .Open on ADOQuery but I guess both methods will result with re-fetching all records

ziolko.
0
 
senadCommented:
insufficient key column is probably because you do not have primary key (index) assigned).
I agree with Michael (Wellcome back Meikl !) - Requeery works miracles with ADO:
0
 
senadCommented:
Do a primary key on some unique record and it will do the trick.Dont refresh as requery is much better.
also you should think about using sql access server components (msconnection instead of adoconnection).They actually do what you are trying to do.Really fantastic with sql server 2005.
you can have thousands of records but they get updated in a blink of an eye...
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 7
  • 5
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now