In trouble-shooting a particular module .. I have a .dbf table that I use a standard wbrowse listbox. As I run thru the listbox in a do while .not. eof I use the oLbx:ReFresh() method to show the progress of the loop .. for some unknown reason .. the loop never hits the EOF and you have to hit the ESC key to get out of the look.
If I take out the oLbx:ReFresh() .. I do hit the EOF .. but if I leave in the oLbx:ReFresh() .. the record pointer never hit the eof()
FWH 8.07 ...
Here is an abreviated snipit of code
//-----------
oLBX:SetFocus()
SELECT 9
dbGoTop()
oLbx:Upstable()
SysReFresh()
DO WHILE .not. EOF()
SELECT 9
DELETE
SKIP
oLBX:ReFresh() // take this out and the loop hits eof
SysReFresh() //
SELECT 9 // never hits EOF
IF EOF()
msginfo( "eof exit" )
EXIT
ENDIF
ENDDO
oDLG1:End()
SAYING := "Batch Import Completed "
SAYING += ""+STR(nLOADED,4)+" Records Loaded"
MsgInfo( SAYING )
Listbox never hits EOF oLbx:ReFresh()
- Rick Lipkin
- Posts: 2397
- Joined: Fri Oct 07, 2005 1:50 pm
- Location: Columbia, South Carolina USA
- Rick Lipkin
- Posts: 2397
- Joined: Fri Oct 07, 2005 1:50 pm
- Location: Columbia, South Carolina USA
To All
Seems there has been a change in behavoir .. since I re-compiled this application:
I have to test for EOF first before the oLbx:ReFresh() .. Antonio .. can you look at the Refresh() method and see what has changed ??
Rick Lipkin
DO WHILE .not. EOF()
SELECT 9
DELETE
SKIP
// insert the eof test here before the oLbx:ReFresh()
IF EOF()
EXIT
ENDIF
oLBX:ReFresh()
SysReFresh()
ENDDO
Seems there has been a change in behavoir .. since I re-compiled this application:
I have to test for EOF first before the oLbx:ReFresh() .. Antonio .. can you look at the Refresh() method and see what has changed ??
Rick Lipkin
DO WHILE .not. EOF()
SELECT 9
DELETE
SKIP
// insert the eof test here before the oLbx:ReFresh()
IF EOF()
EXIT
ENDIF
oLBX:ReFresh()
SysReFresh()
ENDDO
hello, try this way:
attention in SET DELETE ON
regards
Code: Select all
#include "FiveWin.ch"
Function Act_Lbx()
SET DELETE ON
cFile = 'c:\temp\MyDBF.DBF'
DBUSEAREA(.T.,'DBFNTX',cFile,'temp',.F.)
if NETERR()
? 'Error. Abort...'
RETURN
endif
bAction = {|| xDel() }
select temp
go top
define dialog oDlg from 01,01 to 32,100 title 'Lines'
@ 01,01 listbox oLbx FIELDS of oDlg SIZE 383,160
oDlg:bStart = {|| EVAL(bAction) }
activate dialog oDlg
return
Function xDel()
nreg=0
msginfo('Starting...')
while .t.
Sysrefresh()
oLbx:GoTop()
oLbx:Refresh()
go top
if eof()
exit
else
delete
nreg++
endif
enddo
msginfo('Finished ! '+alltrim(str(nreg))+' records deleted...' )
oDLg:End()
return
regards
- Rick Lipkin
- Posts: 2397
- Joined: Fri Oct 07, 2005 1:50 pm
- Location: Columbia, South Carolina USA
Yury
Thank you for your comments .. the code I was using was working fine under FWH 27 .. I was using the oLbx:Refresh after the record was deleted and then testing for EOF after that event .. something has changed in the ReFresh() method that will not allow EOF to test .T. when the record pointer hits eof .. or ReFresh is moving the record pointer and it never hits eof
Rick
Thank you for your comments .. the code I was using was working fine under FWH 27 .. I was using the oLbx:Refresh after the record was deleted and then testing for EOF after that event .. something has changed in the ReFresh() method that will not allow EOF to test .T. when the record pointer hits eof .. or ReFresh is moving the record pointer and it never hits eof
Rick
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Rick Lipkin
- Posts: 2397
- Joined: Fri Oct 07, 2005 1:50 pm
- Location: Columbia, South Carolina USA