If you don't think this is horrible, I want to hear why:

dabo/dabo/db/dCursorMixin.py
2072   def moveToPK(self, pk):
2073     """
2074     Find the record with the passed primary key, and make it active.
2075
2076     If the record is not found, the position is set to the first record.
2077     """
2078     row, rec = self._getRecordByPk(pk, raiseRowNotFound=False)
2079     if row is None:
2080       row = 0
2081     self.RowNumber = row

Why should we implicitly move the record pointer if the pk doesn't exist? Why 
not 
keep it wherever it happens to be? Why not propagate the exception? What if 
RowCount==0?

It just seems dangerous for calling code to ask the system to move to the 
record with 
the passed pk, and then move it to a different pk instead.

This is called from dBizobj in a few places, via biz._positionUsingPK(). I see 
there 
are a handful of functions in dCursor and dBizobj that do this in different 
ways. To 
be safe in the code I'm writing I'm just going to use:

if not biz.locate(self.getPK(), self.KeyField):
        # raise error or ignore

To be fair, while dCursor.moveToPK() has been refactored over the years, the 
behavior 
has been there since the earliest days.

Paul

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/[email protected]

Reply via email to