Italian Problema trasferimento db sql con B4A

toro1950

Active Member
Licensed User
Ho due App, (Ios e Android) che creano lo stesso db con tre campi, il db viene inviato via Ftp sul mio sito; Due App (ios e android) riprendono il file, lo visualizzano e permettono all'utente di di utilizzarlo. Ora succede una cosa strana, il file creato con ios viene ripreso perfettamente dalle due app preposte, l'ho testato fino ad oltre 400 record, poi per sicurezza ho creato il database su Android e con un amara sorpresaa stupore, scopro che funziona fino a 9 record dopo su ios in debug esce questo messaggio Unknown error calling sqlite3_step (11: database disk image is malformed) rs- Ho provato sia con Ftp sia co https, stesso errore ma l'app non esce, mentre con android esce l'app appena carica il file. Per ambedue i sistemi ho utilizzato lo stesso codice
per inizializzare il databese
B4X:
    dbline ="prenline" & currentyear & ".xls"
    SQLDataBasePath = File.DirInternal
    If File.Exists(SQLDataBasePath, dbline) = False Then
       SQL1.Initialize(SQLDataBasePath, dbline, True)
        CreateDataBaseoline
    Else
           SQL1.Initialize(SQLDataBasePath, dbline, True)
    End If

Per creare il database
B4X:
Private Sub CreateDataBaseonline
    Dim Query As String
    Query = "CREATE TABLE preoline(prendata Date, orapren TEXT, arco TEXT, idline text)"
    SQL1.ExecNonQuery(Query)
    'Fills a few entries
    Query = "INSERT INTO  preoline VALUES (?, ?, ?, ?)"
End Sub
per inserire i dati
B4X:
SQL1.Initialize(SQLDataBasePath, dbline , True)
            objRowID= SQL1.ExecQuerySingleResult("SELECT max(rowid) FROM preoline")
            If Not(objRowID = Null) Then
                Nrow = objRowID
            Else
                Nrow = 0
            End If
            Nrow=Nrow+1
            testo=Nrow       
            Query = "INSERT INTO preoline VALUES (?, ?, ?, ?)"
            SQL1.ExecNonQuery2(Query, Array As String(editpren.Text, labora.text, te, testo))
sul'App visualizzo il tutto con
B4X:
Private Sub Updateline
    listaoline.clear
    nr=False
    SQL1.Initialize(SQLDataBasePath, dbline , True)
    Dim Query As String
    Dim ResultSet1 As ResultSet
    Query = "SELECT * FROM preoline WHERE prendata = ?"
    ResultSet1 = SQL1.ExecQuery2(Query, Array As String (editpren.text))
        Do While ResultSet1.NextRow
        Dim p As B4XView = xui.CreatePanel("")
        p.SetLayoutAnimated(0, 0, 0, listaoline.AsView.Width, 30dip)

        p.LoadLayout("itmeorari")
        label1.Text= ResultSet1.GetString("prendata")
        label2.Text= ResultSet1.GetString("orapren")
        label3.Text=  ResultSet1.GetString("arco")
        label4.Text=  ResultSet1.GetString("idline")
        listaoline.Add(p, Null)
    Loop
    If listaoline.Size>0 Then nr=True
        ResultSet1.Close
End Sub
e sulla lista vedo tutti i record, avevo fatto un inserimento automatico fino a 400 record.
inizialente ho pensato che l'inserimento automatico portasse il problema, quindi mi sono armato
di paziena e li ho inseriti manualmente come previsto ma dopo 9 record arrivano i problemi sulle app riceventi
queste a rigor di logica non dovrbbero avere problemi che con il db creato con B4I non hanno problemi.
L'invio del db sul sito viene fatto con ftp con ambedue i sistemi
B4X:
b inviaprenotazioni

    fl = Cognome & nome
    testo= "prenline" & currentyear & ".xls"
    If File.Exists(File.DirInternal,testo) Then
          ftp.Initialize("ftp", "ftp.miosito", 21, "xxxx@aruba.it", Mod3.pswftp)
        ftp.PassiveMode = True
        If label14.Text =" " Then
            Dim sf As Object = ftp.UploadFile(File.DirInternal,testo,True,"miosito.it/public/Mycartella1/" & fl & testo)
        Else
            Dim sf As Object = ftp.UploadFile(File.DirInternal,testo,True,"miosito.it/public/Mycartella2/" & fl & testo)
        End If
          Wait For (sf) ftp_UploadCompleted (ServerPath As String, Success As Boolean)
        If Success Then
            ToastMessageShow("Inviato file prenotazioni", False)
        Else
            ToastMessageShow("Error uploading file prenotazioni", False)
        End If
    End If
    ftp.Close
End Sub

Ho provato ha elinare gli spazi con trim ma non cambia nulla, Forse con Utf8 ma no so la sintassi per implementarlo, ho provato con ftp close
ma nulla cambia. Sicuramente sbaglio io ma non riesco a capirl, sono depresso
 

toro1950

Active Member
Licensed User
Buongiorno a tutta la comunità, ho provato con un altro cellulare, stesso problema, ho risolto copiando la sub di invio dal B4i
cambiando File.DirDocuments con File.DirInternal e magicamente si è tutto risolto, a pensare che la sub l'avevo scritta con B4a e poi portata
su B4i. Ho fatto questa prova perchè mi sono ricordato che diverso tempo fa mi era successo qualcosa del genere sul Pc-Mac con Xojo.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…