mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-20 19:49:12 +00:00
Cambios para Respaldo Diario
-Se agregó codigo para restaurar el respaldo.
This commit is contained in:
@@ -13,7 +13,9 @@ Sub Class_Globals
|
||||
Dim rp As RuntimePermissions
|
||||
Dim safePath As String
|
||||
Dim fechaHoy As String
|
||||
Dim fechaAnt As String
|
||||
Dim skmtAttached As Boolean = False
|
||||
Dim rkmtAttached As Boolean = False
|
||||
'####### MES Vars ######
|
||||
Private ion As Object
|
||||
' Dim device As Phone
|
||||
@@ -59,10 +61,11 @@ Sub RD_Init
|
||||
If chkIfTableExists(skmt, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(skmt, "CAT_GUNAPROD")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(skmt, "CAT_GUNAPROD2")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "kmt_info") Then rkmt.ExecNonQuery($"create table if not exists kmt_info (${getTableColumnList(skmt, "kmt_info")}, FECHA TEXT)"$)
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
DateTime.DateFormat = "yyyyMMdd"
|
||||
fechaHoy = DateTime.Date(DateTime.Now)
|
||||
If Starter.Logger Then Log("RKMTS: " & rkmt.IsInitialized)
|
||||
If revisaSkmtAttached And rkmt.IsInitialized Then RD_Init_IsInitialized = True Else RD_Init_IsInitialized = False
|
||||
' revisaRkmtAttached
|
||||
End Sub
|
||||
|
||||
'RD - Revisa si esta montada "kmt.db" como "skmt1" y si no, la monta
|
||||
@@ -80,6 +83,24 @@ Sub revisaSkmtAttached As Boolean
|
||||
Return skmtAttached
|
||||
End Sub
|
||||
|
||||
'RD - Revisa si esta montada "kmt.db" como "rkmt1" y si no, la monta
|
||||
'Para que "skmt" vea a "rkmt", es necesario montarla (attach).
|
||||
Sub revisaRkmtAttached As Boolean
|
||||
rkmtAttached = False
|
||||
Dim rs As ResultSet = skmt.ExecQuery("SELECT * FROM pragma_database_list")
|
||||
Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "rkmt1" y si no, la montamos.
|
||||
If rs.GetString("name") = "rkmt1" Then rkmtAttached = True
|
||||
Log(rs.GetString("name"))
|
||||
Loop
|
||||
If Not(rkmtAttached) Then
|
||||
|
||||
Private name() As String = Regex.split(" ", Application.LabelName)
|
||||
skmt.ExecNonQuery($"attach database '${File.Combine(safePath,$"${name(0)}.rkmt.km"$)}' as rkmt1;"$)
|
||||
rkmtAttached = True
|
||||
End If
|
||||
Return rkmtAttached
|
||||
End Sub
|
||||
|
||||
'Inicializa la BD con "kmt.db" en "File.DirInternal", si el archivo no existe, lo copia desde "File.DirAssets".
|
||||
'Ej: dim skmt as sql = dbInit
|
||||
Sub dbInit As SQL 'ignore
|
||||
@@ -95,69 +116,159 @@ End Sub
|
||||
Sub RD_respalda_pedido
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando PEDIDO ...")
|
||||
Private lasCols As String = getTableColumnListName(skmt, "PEDIDO")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from PEDIDO where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into PEDIDO (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA 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")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from PEDIDO")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "PEDIDO")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from PEDIDO where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into PEDIDO (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PEDIDO where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
|
||||
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
End If
|
||||
x.Close
|
||||
Log("P: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla CAT_GUNAPRODS a rkmt.db en la tarjeta del celular.
|
||||
Sub RD_respalda_cat_gunaprod
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_GUNAPROD ...")
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD")
|
||||
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo.
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}, FECHA) select ${lasCols}, '${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")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_GUNAPROD")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD")
|
||||
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo.
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_GUNAPROD"$)
|
||||
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
End If
|
||||
x.Close
|
||||
Log("GP: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla CAT_GUNAPROD de rkmt.db al celular.
|
||||
Sub RD_restaura_cat_gunaprod
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Restaurando CAT_GUNAPROD ...")
|
||||
Private lasCols As String = getTableColumnListName(rkmt, "CAT_GUNAPROD")
|
||||
lasCols = lasCols.Replace(", FECHA", "") 'Quitamos la imagen del respaldo.
|
||||
Private c As Cursor = rkmt.ExecQuery($"select distinct fecha from CAT_GUNAPROD order by fecha desc"$) 'where fecha <> '${fechaHoy}' 'Traemos la ultima fecha antes de hoy.
|
||||
Log(c.RowCount)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_GUNAPROD")
|
||||
skmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$)
|
||||
End If
|
||||
Log("R-GP: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla CAT_GUNAPROD2 a rkmt.db en la tarjeta del celular.
|
||||
Sub RD_respalda_cat_gunaprod2
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_GUNAPROD2 ...")
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD2")
|
||||
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo.
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD2 where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_GUNAPROD2"$)
|
||||
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
Log(((DateTime.Now - inicio)/1000) & " segs")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_GUNAPROD2")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD2")
|
||||
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la fecha del respaldo.
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD2 where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_GUNAPROD2"$)
|
||||
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
End If
|
||||
x.Close
|
||||
Log("GP2: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla CAT_GUNAPROD2 de rkmt.db al celular.
|
||||
Sub RD_restaura_cat_gunaprod2
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Restaurando CAT_GUNAPROD2 ...")
|
||||
Private lasCols As String = getTableColumnListName(rkmt, "CAT_GUNAPROD2")
|
||||
lasCols = lasCols.Replace(", FECHA", "") 'Quitamos la fecha del respaldo.
|
||||
Private c As Cursor = rkmt.ExecQuery($"select distinct fecha from CAT_GUNAPROD2 order by fecha desc"$) 'where fecha <> '${fechaHoy}' 'Traemos la ultima fecha antes de hoy.
|
||||
' Log(c.RowCount)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_GUNAPROD2")
|
||||
skmt.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$)
|
||||
End If
|
||||
Log("R-GP2: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla CAT_DETALLE_PAQ a rkmt.db en la tarjeta del celular.
|
||||
Sub RD_respalda_cat_detalle_paq
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_DETALLES_PAQ ...")
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ")
|
||||
If rkmt.IsInitialized Then
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_DETALLES_PAQ")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${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")
|
||||
Log("DP: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End If
|
||||
x.Close
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla CAT_DETALLE_PAQ a rkmt.db en la tarjeta del celular.
|
||||
'RD - Copia la tabla CAT_DETALLES_PAQ de rkmt.db al celular.
|
||||
Sub RD_restaura_cat_detalle_paq
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Restaurando CAT_DETALLES_PAQ ...")
|
||||
Private lasCols As String = getTableColumnListName(rkmt, "CAT_DETALLES_PAQ")
|
||||
lasCols = lasCols.Replace(", FECHA", "") 'Quitamos la fecha del respaldo.
|
||||
Private c As Cursor = rkmt.ExecQuery($"select distinct fecha from CAT_DETALLES_PAQ order by fecha desc"$) 'where fecha <> '${fechaHoy}' 'Traemos la ultima fecha antes de hoy.
|
||||
' Log(c.RowCount)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ")
|
||||
skmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$)
|
||||
End If
|
||||
Log("R-DP: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla kmt_info a rkmt.db en la tarjeta del celular.
|
||||
Sub RD_respalda_kmt_info
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando kmt_info ...")
|
||||
Private lasCols As String = getTableColumnListName(skmt, "kmt_info")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from kmt_info where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into kmt_info (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.kmt_info"$)
|
||||
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
Log(((DateTime.Now - inicio)/1000) & " segs")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from kmt_info")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "kmt_info")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from kmt_info where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into kmt_info (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.kmt_info"$)
|
||||
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
End If
|
||||
x.Close
|
||||
Log("KMT: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Copia la tabla kmt_info de rkmt.db al celular.
|
||||
Sub RD_restaura_kmt_info
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Restaurando KMT_INFO ...")
|
||||
Private lasCols As String = getTableColumnListName(rkmt, "kmt_info")
|
||||
lasCols = lasCols.Replace(", FECHA", "") 'Quitamos la fecha del respaldo.
|
||||
Private c As Cursor = rkmt.ExecQuery($"select distinct fecha from kmt_info order by fecha desc"$) 'where fecha <> '${fechaHoy}' 'Traemos la ultima fecha antes de hoy.
|
||||
' Log(c.RowCount)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from kmt_info")
|
||||
skmt.ExecNonQuery($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$)
|
||||
End If
|
||||
Log("R-KMT: " & ((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
'RD - Realiza un "vacuum" de la base de datos "rkmt".
|
||||
@@ -171,15 +282,15 @@ End Sub
|
||||
'Ej. agregaColumna(DB, "TABLA", "COLUMNA", "TIPO")
|
||||
Sub agregaColumna(db As SQL, tabla As String, columna As String, tipo As String) 'ignore
|
||||
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
||||
Private c As Cursor = skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$)
|
||||
Private c As Cursor = db.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$)
|
||||
c.Position = 0
|
||||
If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos
|
||||
skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$)
|
||||
End If
|
||||
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||
Try
|
||||
skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$)
|
||||
Catch
|
||||
Log(LastException)
|
||||
@@ -394,6 +505,14 @@ Sub hayPedido(db As SQL) As Boolean 'ignore
|
||||
Return hay
|
||||
End Sub
|
||||
|
||||
Sub string2date(fecha As String)
|
||||
Log(fecha)
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
Dim t As Long = DateTime.DateTimeParse(fecha, "00:00:00")
|
||||
DateTime.DateFormat = "yy/MM/dd"
|
||||
Log($"${t} - ${Subs.fechaKMT(t)}"$)
|
||||
End Sub
|
||||
|
||||
'Guarda el nombre y version de la app en CAT_VARIABLES.
|
||||
Sub guardaAppInfo(db As SQL) 'ignore
|
||||
skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'")
|
||||
|
||||
Reference in New Issue
Block a user