Spanish problemas con base de datos

Tedsacoma

Member
ayuda... rengo mi sistema hecho en basic4android el asunto es que manejo base de datos sqlite en mi sd y en mi tablet funciona de lo mas genial, pero cuando lo instalo en otro dispositivo un celular u otra tablet conecta a la base de datos pero me dice que no encuentra la tabla en esa base de datos. repito todo esto en mi tablet si fuinciona
 

Tedsacoma

Member
Puedes mostrar tu codigo? o el proyecto completo? (si no tienes inconveniente) si pones el project usa desde el IDE: Fie - > Export As ZIP.

este es el codigo



'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim serial1 As Serial
Dim Timer1 As Timer
Dim BDPlatinum As SQL
Dim RutaBase As String : RutaBase= "Platinum Android"
Dim Basedatos As String: BaseDatos = "/PFA.db"
Dim RutaBaseDatos As String : RutaBaseDatos = File.DirRootExternal & "/Platinum Android/Files"
Dim CRBD As Cursor
Dim Contado As Double
Dim Recuperado As Double
Dim TotalDinero As Double
Dim Credito As Double
Dim TotalVentas As Double
End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim BN1 As Button
Dim txtSend As EditText
' Dim TextReader1 As TextReader
Dim TextWriter1 As TextWriter
Dim connected As Boolean
End Sub

Sub Activity_Create(FirstTime As Boolean)
activity.LoadLayout("Principio")
If FirstTime Then
BDPlatinum.Initialize (File.DirDefaultExternal,RutaBaseDatos,BaseDatos, True)
End If

End Sub
Sub Llene_Lista
CRBD.IsInitialized
Dim i As Int
CRBD= BDPLATINUM.ExecQuery ("Select * FROM AcumuladoRutas" )
For i = 0 To CRBD.RowCount - 1
CRBD.Position =i
contado=CRBD.GetString("Contado")
recuperado=CRBD.GetString("Recuperado")
totaldinero=CRBD.GetString("TotalDinero")
credito=CRBD.GetString("Credito")
totalventa=CRBD.GetString("TotalVenta")
Next
End Sub
Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


el asunto es que me doy cuenta que la base de datos conecta a la perfeccion lo que me sale es "NO SUCH TABLE" o "COLUMN x NO EXIST"
 
Last edited:

NJDude

Expert
Licensed User
Longtime User
Ok, primeramente, seria mejor que pusieras todo el proyecto completo cuando se trata de un codigo tan largo como este, en el IDE click en File -> Export to ZIP.

Segundo, aqui hay un problema:
B4X:
Dim RutaBaseDatos As String : RutaBaseDatos = File.DirRootExternal & "/Platinum Android/Files"
Es recomendable que NO HAYAN espacios en file names o directories, en ves de "...Platinum Android/Files" es mejor "...Platinum_Android/Files", de lo contrario vas a encontrar problemas con algunos devices.

Algo mas, como dije en mi primer post: "Has incluido la database en tu proyecto?', la respuesta es NO, tu tienes un database llamado "PFA.db" pero no la estas copiando al device (si es que la creaste con un Database editor) o, como en tu codigo, no estas creando las Tables, lo unico que tu codigo esta haciendo es crear una database vacia sin tables ni nada.
 

Tedsacoma

Member
Ok, primeramente, seria mejor que pusieras todo el proyecto completo cuando se trata de un codigo tan largo como este, en el IDE click en File -> Export to ZIP.

Segundo, aqui hay un problema:
B4X:
Dim RutaBaseDatos As String : RutaBaseDatos = File.DirRootExternal & "/Platinum Android/Files"
Es recomendable que NO HAYAN espacios en file names o directories, en ves de "...Platinum Android/Files" es mejor "...Platinum_Android/Files", de lo contrario vas a encontrar problemas con algunos devices.

Algo mas, como dije en mi primer post: "Has incluido la database en tu proyecto?', la respuesta es NO, tu tienes un database llamado "PFA.db" pero no la estas copiando al device (si es que la creaste con un Database editor) o, como en tu codigo, no estas creando las Tables, lo unico que tu codigo esta haciendo es crear una database vacia sin tables ni nada.

ok la base de datos si la copie esta en el dispositivo y te explico la base de datos la hice en el editor sqlite de mozilla pues hice las tablas la cargue con datos y todo el rollo, como te dije en mi tablet funcona al ciento por ciento, pero cuando lo instalo en otro dispositivo es que me genera el error. el asunto es que no puedo subir el codigo completo porque es de la empresa y por cuestiones de seguridad no me lo permiten, lo siento pero como vez los datos estan bien todo trabaja a la perfeccion en mi tablet es cuendo lo instalo en otros dispositivos.
 

NJDude

Expert
Licensed User
Longtime User
Ok, vas a tener que hacer esto:

1- En el IDE, en la parte inferior derecha click en el boton "Add Files" y agrega la database (esto incluira la database en tu APK).

2- Pon este codigo en to project:
B4X:
Sub Activity_Create(FirstTime As Boolean)

    If File.Exists(RutaBaseDatos, BaseDatos) = False Then
            
       File.Copy(File.DirAssets, "PFA.db", RutaBaseDatos, BaseDatos)
                     
    End If

...

3- Desinstala el app de los dispositivos que "no funciona" e instala este nuevo codigo.
 
Last edited:

Tedsacoma

Member
Ok, vas a tener que hacer esto:

1- En el IDE, en la parte inferior derecha click en el boton "Add Files" y agrega la database (esto incluira la database en tu APK).

2- Pon este codigo en to project:
B4X:
Sub Activity_Create(FirstTime As Boolean)

    If File.Exists(RutaBaseDatos, BaseDatos) = False Then
            
       File.Copy(File.DirAssets, "PFA.db", RutaBaseDatos, BaseDatos)
                     
    End If

...

3- Desinstala el app de los dispositivos que "no funciona" e instala este nuevo codigo.

Hola, pues mira no me funciono lo que me dijiste. pero por pura casualidad intente algo diferente, copie la carpeta con todo el proyecto a la sd y me funciono de lo mas bien. esto o deberia de ser asi ya que todo el mundo podrai ver el codigo fuente del soft y hacer modificaciones, pero al fin y al cabo funciono. a que se deberá esto.

ahora la siguiente consulta es que si deseo montar el software a un telefono de 5.5" o 4.9" o tablet de 10" debo de autoajustarlo a la pantalla, como hago esto?
 

reikhard

Member
Licensed User
Longtime User
Posible solucion al problema de la base de datos:

es mejor crear todo desde el codigo inclusive la base de datos:

'==========================================================================
'==========================================================================
'revisar si existe database si no entonces,
'crear database,
'crear tabla de datos numericos.

' File.Delete(File.DirRootExternal, DBFileName) ' for testing

If File.Exists(File.DirRootExternal, "Database_Name.db") = False Then
' inicializa db para posterior edicion
Sql1.Initialize(File.DirRootExternal,"Database_name.db",True)
' crea tbl
Sql1.ExecNonQuery("CREATE TABLE tbl_name(filed_name type_field, field_name2 type_field2")")


Else

' inicializa db
Sql1.Initialize(File.DirRootExternal,"DataBase_Name.db",True)

End If
'==========================================================================
'==========================================================================

SQL1.ExecNonQuery("INSERT INTO tbl_name (field1,field2,field3,field4,field5)VALUES (" _
& "valor1, 'valor2', 'valor3', 'valor4', 'valor5')")


Lo otro es simplemente revisar si desde codigo sql la estructura de la base de datos
desde un editor de sqlite

SELECT * FROM sqlite_master

muestra todas las tablas y el codigo SQL con el que fueron creadas.

Para el segundo problema en el foro hay codigos para descubrir la resolucion del dispositivo y cambiar el tamano de los objetos...

http://www.b4x.com/forum/basic4android-updates-questions/15470-detecting-screen-resolution.html

http://www.b4x.com/forum/basic4andr...ow-determine-resolution-device.html#post56974
 
Last edited:

Tedsacoma

Member
Posible solucion al problema de la base de datos:

es mejor crear todo desde el codigo inclusive la base de datos:

'==========================================================================
'==========================================================================
'revisar si existe database si no entonces,
'crear database,
'crear tabla de datos numericos.

' File.Delete(File.DirRootExternal, DBFileName) ' for testing

If File.Exists(File.DirRootExternal, "Database_Name.db") = False Then
' inicializa db para posterior edicion
Sql1.Initialize(File.DirRootExternal,"Database_name.db",True)
' crea tbl
Sql1.ExecNonQuery("CREATE TABLE tbl_name(filed_name type_field, field_name2 type_field2")")


Else

' inicializa db
Sql1.Initialize(File.DirRootExternal,"DataBase_Name.db",True)

End If
'==========================================================================
'==========================================================================

SQL1.ExecNonQuery("INSERT INTO tbl_name (field1,field2,field3,field4,field5)VALUES (" _
& "valor1, 'valor2', 'valor3', 'valor4', 'valor5')")


Lo otro es simplemente revisar si desde codigo sql la estructura de la base de datos
desde un editor de sqlite

SELECT * FROM sqlite_master

muestra todas las tablas y el codigo SQL con el que fueron creadas.

Para el segundo problema en el foro hay codigos para descubrir la resolucion del dispositivo y cambiar el tamano de los objetos...

http://www.b4x.com/forum/basic4android-updates-questions/15470-detecting-screen-resolution.html

http://www.b4x.com/forum/basic4andr...ow-determine-resolution-device.html#post56974

ok listo... bro una pregunta... como hago para conseguir las librerias que no sea por esta web, ya que la librerira ftp no me deja descargarla
 
Top