main logo
Subject: [V4MD] GotoRecord() Bug?
Author: Martin Kloss
Posted: 2003/10/31 04:59:00
 
View Entire Thread
New Search


Hi,

I have found a buggy behavior when using "Cursor.GotoRecord()"
with a cursor that contains pointer fields.

Example:
2 tables, "data" and "data_types".
"data" has the fields "id, type_ptr" (a ptr to "data_types")
"data_types" has the field "type_name"

SQL to create cursor:
"SELECT RecID, id, type_name FROM data, data_types ORDER BY id ASC"

So I get a list of data_type names from the join.
Now I can step through the records with NextRecord() etc.
Everthing works fine.

BUT, I want to find out how many records there are in a series of
the same data type, so I move the cursor to check when the data type
changes.

myRecordCount = pCursor.GetRecordCount()
myCurrentPos = pCursor.GetPosition()
myCurrentDataType = pCursor.GetField("type_name")
repeat with i = myCurrentPos to myRecordCount
-- ok = pCursor.GotoRecord(myCurrentPos+1) -- THIS DOES NOT WORK
ok = pCursor.NextRecord() -- THIS WORKS
if ok then
curType = pCursor.GetField("type_name")
if curType = myCurrentDataType then
-- same datatype increment count
myCount = myCount + 1
else
-- different datatype, break
exit repeat
end if
else
exit repeat
end if
end repeat
-- restore cursor pos
pCursor.GotoRecord(myCurrentPos)
return myCount

Now you would expect that

ok = pCursor.GotoRecord(myCurrentPos+1) -- THIS DOES NOT WORK
ok = pCursor.NextRecord() -- THIS WORKS

would return the same result. But with "GotoRecord()" I ALWAYS get
the same data type, it never changes! This happens only to the fields
that are joined, not to the fields in the "data" table.

Seems like a bug to me. Ruslan?

Martin.

_______________________________________________
Valentina mailing list
Valentina AT lists .D.O.T macserve.net
http://lists.macserve.net/mailman/listinfo/valentina

 
©2003 Martin Kloss
<-- Prior Message New Search Next Message -->