Generally speaking, this is what primary keys are for. Whether its indexed or not, there should be a single field that uniquely identifies each of your records, and allows you to target an update to that particular record and not the entire set.
UPDATE HM_LIST
SET
HM_DATE=DATE(2014,5,22) ,
HM_STATION="CM_PC" ,
HM_TIME="17:06" ,
HM_USER="TEST"
WHERE
HM_ID = 1
If the field doesn't have a primary key, it's strike #2 on the this was horribly designed and should be abandoned, right after you can't insert new rows. Unless this is a theoretical exercise, there are far better tools to accomplish whatever it is that you're after.
That said, for the particular example this is one of those rare instances where mucking about with SQL actually makes your life harder.
FoxPro at its heart, is not a set-based language like SQL. Rather, it's a specialized language focusing on data operations, using the DBF format. For operations where you don't want to deal with entire sets, and for some reason are still programming in FoxPro, you can most easily accomplish this by embracing the xBase roots and running with it.
SELECT HM_LIST
LOCATE FOR FOR HM_STATION='' AND HM_TIME='' AND HM_USER=''
IF FOUND()
REPLACE IN HM_LIST ;
HM_DATE WITH DATE(2014,5,22) ;
, HM_STATION WITH "CM_PC" ;
, HM_TIME WITH "17:06" ;
, HM_USER WITH "TEST"
ENDIF
COMMIT...? - MethodMan