Hola a Tod @ s:
Soy un vetusto programador en proceso de reciclado y me estoy adentrando en el mundo del B4A.
Estoy haciendo una aplicación que tiene que obtener datos de una base Sql para lo que utilizo la librería JdbcSQL (ver. 1.5)
Tengo el siguiente código que en modo Debug me funciona correctamente:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Simplemente determina el número de ordenes nuevas para un determinado almacén y como he comentado, en modo Debug funciona correctamente.
Sin embargo, en modo Release, la línea 12 que he marcado genera el siguiente error:
main_compruebaregistrosnuevos (java line: 952)
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1460)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:108)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at net.sourceforge.jtds.jdbc.SharedSocket.sendNetPacket(SharedSocket.java:686)
at net.sourceforge.jtds.jdbc.RequestStream.putPacket(RequestStream.java:570)
at net.sourceforge.jtds.jdbc.RequestStream.flush(RequestStream.java:518)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1080)
at net.sourceforge.jtds.jdbc.TdsCore.microsoftPrepare(TdsCore.java:1219)
at net.sourceforge.jtds.jdbc.JtdsConnection.prepareSQL(JtdsConnection.java:708)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:1028)
at anywheresoftware.b4j.objects.SQL.ExecQuery2(SQL.java:343)
at anywheresoftware.b4j.objects.SQL.ExecQuerySingleResult2(SQL.java:391)
at Whs.Verial.main._compruebaregistrosnuevos(main.java:952)
at Whs.Verial.main$ResumableSub_Activity_Create.resume(main.java:536)
at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:250)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:190)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:176)
at anywheresoftware.b4a.keywords.Common$14.run(Common.java:1761)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Agradecería cualquier tipo de ayuda porque no sé cual puede ser el motivo y ya no sé por donde tirar.
Gracias a tod@s
Un saludo
			
			Soy un vetusto programador en proceso de reciclado y me estoy adentrando en el mundo del B4A.
Estoy haciendo una aplicación que tiene que obtener datos de una base Sql para lo que utilizo la librería JdbcSQL (ver. 1.5)
Tengo el siguiente código que en modo Debug me funciona correctamente:
			
				B4X:
			
		
		
		Public Sub CompruebaRegistrosNuevos
    Dim SqlCuentaRegistros As String
    Dim NumeroDeOrdenesNuevas As Int
    If mysql.IsInitialized Then
        If Almacen="0" Then
            SqlCuentaRegistros="SELECT Count(*) FROM DocCli T0 WHERE (T0.VerialID)>" & UltimaOrden
    
        Else
            SqlCuentaRegistros="SELECT Count(*) FROM DocCli T0 WHERE (T0.VerialID)>" & UltimaOrden &" And (T0.ID_Almacen)=" & Almacen
        End If
        NumeroDeOrdenesNuevas = mysql.ExecQuerySingleResult(SqlCuentaRegistros)
        If NumeroDeOrdenesNuevas<>0 Then
            CargaDatosPedidosNuevos
        End If
        
    End If
End Sub
	Simplemente determina el número de ordenes nuevas para un determinado almacén y como he comentado, en modo Debug funciona correctamente.
Sin embargo, en modo Release, la línea 12 que he marcado genera el siguiente error:
main_compruebaregistrosnuevos (java line: 952)
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1460)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:108)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at net.sourceforge.jtds.jdbc.SharedSocket.sendNetPacket(SharedSocket.java:686)
at net.sourceforge.jtds.jdbc.RequestStream.putPacket(RequestStream.java:570)
at net.sourceforge.jtds.jdbc.RequestStream.flush(RequestStream.java:518)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1080)
at net.sourceforge.jtds.jdbc.TdsCore.microsoftPrepare(TdsCore.java:1219)
at net.sourceforge.jtds.jdbc.JtdsConnection.prepareSQL(JtdsConnection.java:708)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:1028)
at anywheresoftware.b4j.objects.SQL.ExecQuery2(SQL.java:343)
at anywheresoftware.b4j.objects.SQL.ExecQuerySingleResult2(SQL.java:391)
at Whs.Verial.main._compruebaregistrosnuevos(main.java:952)
at Whs.Verial.main$ResumableSub_Activity_Create.resume(main.java:536)
at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:250)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:190)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:176)
at anywheresoftware.b4a.keywords.Common$14.run(Common.java:1761)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Agradecería cualquier tipo de ayuda porque no sé cual puede ser el motivo y ya no sé por donde tirar.
Gracias a tod@s
Un saludo