8/9/23 - Código para respaldo diario

Se agregó una clase para el respaldo diario en una base de datos en SDCARD/kmts, para usar el almacenamiento externo es necesario usar la clase "ManageExternalStorage".
This commit is contained in:
2023-09-08 01:11:34 -06:00
parent d0c13fc15e
commit 62b422dd5d
6 changed files with 167 additions and 45 deletions

View File

@@ -11,12 +11,25 @@ Sub Class_Globals
Dim rp As RuntimePermissions
Dim safePath As String
Dim fechaHoy As String
Dim skmtAttached As Boolean = False
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Log("************************** " & safePath)
safePath = rp.GetSafeDirDefaultExternal("./")
' Log("************************** " & safePath)
Dim Dirp As String = File.DirRootExternal
Dim Dir As String
Dim Dir2 As String
Try
File.MakeDir(Dirp,"/kmts")
Dir = "/kmts"
' Log("creado en kmts " & Dirp & Dir)
Catch
Dir = ""
' Log("creado en raiz")
End Try
' safePath = rp.GetSafeDirDefaultExternal("./")
safePath = Dirp & Dir
rkmt.Initialize(safePath,"rkmt.km", True)
skmt.Initialize(File.DirInternal,"kmt.db", False)
rkmt.ExecNonQuery($"create table if not exists pedidos (pe_folio NUMERIC, pe_desc NUMERIC, pe_costo_sin TEXT, pe_ruta TEXT, pe_cedis TEXT, pe_costo_tot NUMERIC, pe_costou NUMERIC, pe_cant NUMERIC, pe_pronombre TEXT, pe_proid TEXT, pe_cliente TEXT, pe_fecha TEXT, pe_usuario TEXT)"$)
@@ -24,6 +37,7 @@ Public Sub Initialize As Object
rkmt.ExecNonQuery($"create table if not exists paquetes (cat_dp_precio_simptos TEXT, cat_dp_precio TEXT, cat_dp_almacen TEXT, cat_dp_id TEXT, cat_dp_idprod TEXT, cat_dp_tipo TEXT, cat_dp_pzas TEXT, cat_dp_usuario TEXT, cat_dp_fecha TEXT, cat_dp_regalo TEXT, cat_dp_clasif TEXT, fecha TEXT)"$)
DateTime.DateFormat = "MM/dd/yyyy"
fechaHoy = DateTime.Date(DateTime.Now)
revisaSkmtAttached
Return Me
End Sub
@@ -33,33 +47,42 @@ Private Sub B4XPage_Created (Root1 As B4XView)
'load the layout to Root
End Sub
Sub revisaSkmtAttached
skmtAttached = False
Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list")
Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "skmt" y si no, la montamos.
If rs.GetString("name") = "skmt1" Then skmtAttached = True
Loop
If Not(skmtAttached) Then
rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$)
skmtAttached = True
End If
End Sub
'Copia la tabla PEDIDO a rkmt.db en la tarjeta del celular.
Sub respaldaPedido
Private inicio As String = DateTime.Now
Log("copiando pedidos ...")
Private skmtAttached As Boolean = False
rkmt.BeginTransaction
rkmt.ExecNonQuery($"delete from pedidos where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list")
Do While rs.NextRow 'Revismos si esta montada "kmt.db" como "skmt" y si no, la montamos.
If rs.GetString("name") = "skmt1" Then skmtAttached = True
Loop
If Not(skmtAttached) Then rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$)
rkmt.ExecNonQuery($"insert into pedidos (pe_folio, pe_desc, pe_costo_sin, pe_ruta, pe_cedis, pe_costo_tot, pe_costou, pe_cant, pe_pronombre, pe_proid, pe_cliente, pe_fecha, pe_usuario) select * from skmt1.pedido where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
rkmt.EndTransaction
Log(((DateTime.Now - inicio)/1000) & " segs")
End Sub
'Copia la tabla CAT_GUNAPRODS a rkmt.db en la tarjeta del celular.
Sub respaldaInventarios
Log($"Borrando de fecha ${fechaHoy}"$)
Private inicio As String = DateTime.Now
Log("copiando inventarios ...")
Private skmtAttached As Boolean = False
rkmt.ExecNonQuery($"delete from inventarios where substr(fecha, 1, 10) = '${fechaHoy}'"$)
Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list")
Do While rs.NextRow 'Revismos si esta montada "kmt.db" como "skmt" y si no, la montamos.
If rs.GetString("name") = "skmt1" Then skmtAttached = True
Loop
If Not(skmtAttached) Then rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$)
' rkmt.ExecNonQuery($"delete from inventarios where substr(fecha, 1, 10) = '${fechaHoy}'"$)
rkmt.BeginTransaction
rkmt.ExecNonQuery($"delete from inventarios where fecha = '${fechaHoy}'"$)
rkmt.ExecNonQuery($"insert into inventarios (cat_gp_iniciativa, cat_gp_tipoprod, cat_gp_dev, cat_gp_almacen, cat_gp_id, cat_gp_nombre, cat_gp_imp1, cat_gp_imp2, cat_gp_precio, cat_gp_clasif, cat_gp_sts, cat_gp_tipo, cat_gp_subtipo, fecha) select cat_gp_iniciativa, cat_gp_tipoprod, cat_gp_dev, cat_gp_almacen, cat_gp_id, cat_gp_nombre, cat_gp_imp1, cat_gp_imp2, cat_gp_precio, cat_gp_clasif, cat_gp_sts, cat_gp_tipo, cat_gp_subtipo, '${fechaHoy}' as fecha from skmt1.cat_gunaprod"$)
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
rkmt.EndTransaction
Log(((DateTime.Now - inicio)/1000) & " segs")
End Sub
@@ -67,14 +90,12 @@ End Sub
Sub respaldaPaquetes
Private inicio As String = DateTime.Now
Log("copiando paquetes ...")
Private skmtAttached As Boolean = False
rkmt.ExecNonQuery($"delete from paquetes where substr(fecha, 1, 10) = '${fechaHoy}'"$)
Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list")
Do While rs.NextRow 'Revismos si esta montada "kmt.db" como "skmt" y si no, la montamos.
If rs.GetString("name") = "skmt1" Then skmtAttached = True
Loop
If Not(skmtAttached) Then rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$)
rkmt.BeginTransaction
' rkmt.ExecNonQuery($"delete from paquetes where substr(fecha, 1, 10) = '${fechaHoy}'"$)
rkmt.ExecNonQuery($"delete from paquetes where fecha = '${fechaHoy}'"$)
rkmt.ExecNonQuery($"insert into paquetes (cat_dp_precio_simptos, cat_dp_precio, cat_dp_almacen, cat_dp_id, cat_dp_idprod, cat_dp_tipo, cat_dp_pzas, cat_dp_usuario, cat_dp_fecha, cat_dp_regalo, cat_dp_clasif, fecha) select cat_dp_precio_simptos, cat_dp_precio, cat_dp_almacen, cat_dp_id, cat_dp_idprod, cat_dp_tipo, cat_dp_pzas, cat_dp_usuario, cat_dp_fecha, cat_dp_regalo, cat_dp_clasif, '${fechaHoy}' as fecha from skmt1.cat_detalles_paq"$)
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
rkmt.EndTransaction
Log(((DateTime.Now - inicio)/1000) & " segs")
End Sub