>>Hi,
>>
>>Sorry for creating too many threads about somewhat of the same problem/solution.
>>
>>I have been thinking and analyzing my code, none stop, every waking hour. And I just realized why I am not seeing the results I expect.
>>In a nutshell:
>>The application method CONN_HANDLE_ACCESS fires to check if SQLEXE() works. The code is literally like this:
>>
>>IF SQLEXEC( oApp.conn_handle, "") < 0
>>
>>But the above only tests if an empty string can be executed.
>>
>>Often times, after the above code, the program fails when attempting to SQL Select some records from the SQL Server.
>>
>>So, I am thinking that the code of testing SQLEXEC() against an empty string, should be changed to testing SQLEXEC() against something in the SQL Server. Because, if the connection to the SQL Server is broken, the SQLEXEC() can still successfully work on an empty string. Right?
>>
>>If the above logic is correct, how do I change the test of SQLEXEC() NOT against an empty string but against something in the SQL Server?
>>
>>Any suggestions or input? TIA
>
>In my attempts to resolve this problem:
>
>
>Connectivity error: [Microsoft][ODBC SQL Server Driver]Communication link failure
>
>
>I was thinking: what if I wrap the call the SQLEXEC() into a do while and try it for, say 2-3 seconds? Just to see if maybe the error happens because of some intermittent problem with the network card?
>
>Has anybody tried this approach? (trying SQLEXEC() for 2-3 seconds, before giving up)?
>
>TIA
Hi Dmitry!
"The Communication Link failure" is exact our Szenario we fixed. Yes you can wrap it in a while-loop and wait for some seconds.
And you can present the User a "Connection ist broken. Trying to reconnect..." Message, if you want. We do so..
I can't post our code here, bud the essential things:
...
if sqlexec(lnConnectionHandle, []) >=0
else
aerror(laError)
if m.laError[1,1] = 1526
do case
case laError[1,5] = 229
asqlhandles(laSqlhndls)
for each m.lnOdbchdbc IN m.laSqlhndls foxobject
sqlIdleDisconnect(m.lnOdbchdbc)
endfor
if sqlexec(lnConnectionHandle, []) >=0
else
case inlist(laError[1,5], 1205, 1222)
endcase
endif
endif