From 3aef6989e9fa4127628e4e0968508cdc00589556 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 3 Sep 2023 21:16:37 -0600 Subject: [PATCH] ... --- .gitignore | 4 +- B4A/DBCheck.b4a | 21 ++-- B4A/DBCheck.b4a.meta | 13 ++- B4A/FileHandler.bas | 163 ++++++++++++++++++++++++++++++++ B4A/Files/mainpage.bal | Bin 13958 -> 15288 bytes B4A/Objects/AndroidManifest.xml | 8 ++ B4XMainPage.bas | 39 ++++++-- 7 files changed, 226 insertions(+), 22 deletions(-) create mode 100644 B4A/FileHandler.bas diff --git a/.gitignore b/.gitignore index 618d244..c9b146c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -**/Objects -**/AutoBackups +**/Objects/ +**/AutoBackups/ *.meta \ No newline at end of file diff --git a/B4A/DBCheck.b4a b/B4A/DBCheck.b4a index 544070e..a52a271 100644 --- a/B4A/DBCheck.b4a +++ b/B4A/DBCheck.b4a @@ -3,19 +3,22 @@ File1=MainPage.bal FileGroup1=Default Group Group=Default Group Library1=b4xpages -Library2=core -Library3=okhttputils2 -Library4=randomaccessfile -Library5=sql -Library6=byteconverter +Library2=byteconverter +Library3=contentresolver +Library4=core +Library5=okhttputils2 +Library6=randomaccessfile +Library7=sql +Library8=appupdating ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~~\n~AddActivityText(main,~\n~~\n~~\n~~\n~~\n~) Module1=|relative|..\B4XMainPage Module2=DBRequestManager -Module3=Starter -Module4=Subs +Module3=FileHandler +Module4=Starter +Module5=Subs NumberOfFiles=1 -NumberOfLibraries=6 -NumberOfModules=4 +NumberOfLibraries=8 +NumberOfModules=5 Version=12.2 @EndOfDesignText@ #Region Project Attributes diff --git a/B4A/DBCheck.b4a.meta b/B4A/DBCheck.b4a.meta index 8fecc10..92b8166 100644 --- a/B4A/DBCheck.b4a.meta +++ b/B4A/DBCheck.b4a.meta @@ -3,16 +3,19 @@ ModuleBookmarks1= ModuleBookmarks2= ModuleBookmarks3= ModuleBookmarks4= +ModuleBookmarks5= ModuleBreakpoints0= ModuleBreakpoints1= ModuleBreakpoints2= ModuleBreakpoints3= ModuleBreakpoints4= +ModuleBreakpoints5= ModuleClosedNodes0=2,6 -ModuleClosedNodes1= +ModuleClosedNodes1=2 ModuleClosedNodes2= -ModuleClosedNodes3=1 -ModuleClosedNodes4= -NavigationStack=B4XMainPage,l_ruta2_LongClick,377,6,B4XMainPage,B4XPage_CloseRequest,375,0,B4XMainPage,b_guardaRuta_Click,392,5,B4XMainPage,JobDone,368,0,B4XMainPage,b_enviar_Click,125,0,Visual Designer,MainPage.bal,-100,6,B4XMainPage,B4XPage_Appear,109,0,Subs,panelOculto,91,0,B4XMainPage,Class_Globals,13,0,Subs,dameDiaSemana,139,0 +ModuleClosedNodes3= +ModuleClosedNodes4=1 +ModuleClosedNodes5= +NavigationStack=B4XMainPage,b_enviar_Click,158,0,B4XMainPage,JobDone,368,0,Subs,panelOculto,91,0,Subs,dameDiaSemana,139,0,B4XMainPage,B4XPage_CloseRequest,375,0,B4XMainPage,B4XPage_Created,51,6,Visual Designer,MainPage.bal,-100,6,B4XMainPage,Class_Globals,7,5,B4XMainPage,B4XPage_Appear,95,6,B4XMainPage,b_cargarBD_Click,398,2 SelectedBuild=0 -VisibleModules=1,4 +VisibleModules=1,5,3 diff --git a/B4A/FileHandler.bas b/B4A/FileHandler.bas new file mode 100644 index 0000000..4343a9c --- /dev/null +++ b/B4A/FileHandler.bas @@ -0,0 +1,163 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11 +@EndOfDesignText@ +'Requiere la librería "ContentResolver" y "AppUpdating" +' +'Copiar este codigo al boton_Click que se quiere que importe la base de datos. +' +' Private Sub b_importarBD_Click +' Private FH As FileHandler +' FH.Initialize +' Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar. +' File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno. +' Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada. +' ToastMessageShow("¡BD importada!", False) +' End Sub + +Sub Class_Globals + #if B4A + Private ion As Object + Private OldIntent As Intent + #end if + Type LoadResult (Success As Boolean, Dir As String, FileName As String, RealName As String, Size As Long, Modified As Long, MimeType As String) + +End Sub + +Public Sub Initialize + +End Sub + +#if B4A +Public Sub SaveAs (Source As InputStream, MimeType As String, Title As String) As ResumableSub + Dim intent As Intent + intent.Initialize("android.intent.action.CREATE_DOCUMENT", "") + intent.AddCategory("android.intent.category.OPENABLE") + intent.PutExtra("android.intent.extra.TITLE", Title) + intent.SetType(MimeType) + StartActivityForResult(intent) + Wait For ion_Event (MethodName As String, Args() As Object) + If -1 = Args(0) Then 'resultCode = RESULT_OK + Dim result As Intent = Args(1) + Dim jo As JavaObject = result + Dim ctxt As JavaObject + Dim out As OutputStream = ctxt.InitializeContext.RunMethodJO("getContentResolver", Null).RunMethod("openOutputStream", Array(jo.RunMethod("getData", Null))) + File.Copy2(Source, out) + out.Close + Return True + End If + Return False +End Sub + +Public Sub Load As ResumableSub + Dim cc As ContentChooser + cc.Initialize("cc") + cc.Show("application/octet-stream", "Choose text file") + Wait For CC_Result (Success As Boolean, Dir As String, FileName As String) + Log($"***************************${CRLF}${Dir}${CRLF} ${FileName}"$) + Dim res As LoadResult = CreateLoadResult(Success, Dir, FileName) + Log($"***************************${CRLF}${res.FileName}${CRLF} ${res}"$) + If res.Success Then ExtractInformationFromURI(res.FileName, res) + Return res +End Sub + +Private Sub StartActivityForResult(i As Intent) + Dim jo As JavaObject = GetBA + ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null) + jo.RunMethod("startActivityForResult", Array(ion, i)) +End Sub + +Private Sub GetBA As Object + Return Me.As(JavaObject).RunMethod("getBA", Null) +End Sub + +Private Sub ExtractInformationFromURI (Uri As String, res As LoadResult) + Try + + Dim resolver As ContentResolver + resolver.Initialize("") + Dim u As Uri + u.Parse(Uri) + Dim rs As ResultSet = resolver.Query(u, Null, "", Null, "") + If rs.NextRow Then + Dim columns As B4XSet = B4XCollections.CreateSet + For i = 0 To rs.ColumnCount - 1 + columns.Add(rs.GetColumnName(i)) + Next + If columns.Contains("_display_name") Then res.RealName = rs.GetString("_display_name") + If columns.Contains("_size") Then res.Size = rs.GetLong("_size") + If columns.Contains("last_modified") Then res.Modified = rs.GetLong("last_modified") + If columns.Contains("mime_type") Then res.MimeType = rs.GetString("mime_type") + End If + rs.Close + + Catch + Log("error extracting information from file provider") + Log(LastException) + End Try +End Sub + +Public Sub CheckForReceivedFiles As LoadResult + Dim Activity As Activity = B4XPages.GetNativeParent(B4XPages.MainPage) + If IsRelevantIntent(Activity.GetStartingIntent) Then + Dim in As Intent = Activity.GetStartingIntent + Dim uri As String + If in.HasExtra("android.intent.extra.STREAM") Then + uri = in.As(JavaObject).RunMethod("getParcelableExtra", Array("android.intent.extra.STREAM")) + Else + uri = in.GetData + End If + Dim res As LoadResult = CreateLoadResult(True, "ContentDir", uri) + ExtractInformationFromURI(res.FileName, res) + Return res + End If + Return CreateLoadResult(False, "", "") +End Sub + +Private Sub IsRelevantIntent(in As Intent) As Boolean + If in.IsInitialized And in <> OldIntent And in.Action = in.ACTION_VIEW Then + OldIntent = in + Return True + End If + Return False +End Sub + +#else if B4i +Public Sub SaveAs(ParentPage As Object, AnchorView As Object, Text As String) As ResumableSub + Dim avc As ActivityViewController + avc.Initialize("avc", Array(Text)) + avc.Show(B4XPages.GetNativeParent(ParentPage), AnchorView) + Wait For avc_Complete (Success As Boolean, ActivityType As String) + Return Success +End Sub + +Public Sub Load (ParentPage As Object, AnchorView As Object) As ResumableSub + Dim DocumentPicker As DocumentPickerViewController + DocumentPicker.InitializeImport("picker", Array("public.text")) + DocumentPicker.Show(B4XPages.GetNativeParent(ParentPage), AnchorView) + Wait For Picker_Complete (Success As Boolean, URLs As List) + If Success And URLs.Size > 0 Then + Return UrlToLoadResult(URLs.Get(0)) + End If + Return CreateLoadResult(False, "", "") +End Sub + +Public Sub UrlToLoadResult(url As String) As LoadResult + Dim res As LoadResult = CreateLoadResult(IIf(File.Exists(url, ""), True, False), url, "") + res.RealName = res.Dir.SubString(res.Dir.LastIndexOf("/") + 1) + res.Size = File.Size(res.Dir, "") + Return res +End Sub +#end if + +Private Sub CreateLoadResult (Success As Boolean, Dir As String, FileName As String) As LoadResult + Dim t1 As LoadResult + t1.Initialize + t1.Success = Success + t1.Dir = Dir + t1.FileName = FileName + Return t1 +End Sub + diff --git a/B4A/Files/mainpage.bal b/B4A/Files/mainpage.bal index ce6f8f1b7b42313d13bbc987709fde20c286f642..f2a5461d5f635b98e5360000d7241aca34f27d52 100644 GIT binary patch literal 15288 zcmeHNOK==l6&+#8wuqe&h)MW*9DgEzA}q;Y5r||-w&loUM;_b3K*p`JSxv%?8k47U;%dJsSFjcST z_I>Z&ckg-ko%d$CyK=eQ#m-#r!}#8ZvKeK#9NP1Ccwp+FO9I{j z9X}oFEB7IMZ$LrbxpU)@cosf5->_*v> zkY7m1JqdYlLWY>Tin9G3BFlNWFu8F5gI9ZAIdE^{{{Fp}dJ4Vw4)pxpKk(uQPZbLH z$Ggt>ef>9vZvJ7zoqy%t{_UUN&)?g2>xs#C2maLm?t6dv)ibw$yk+0Sfi2;!;p=l- zf1i8qXFuKZI_%y?;hdI(;k{jL`Pn(W)=sbl&uh1!Kyw2*Fb0qfuS&i062Ie8-9Gjl0!XF&E2h%LKFLv9t@u zoW)^ccbI|GRmZtd_ASL>NPDMhT17i_q~#mNyuoN0jf>ulzhd~X1wk@8G-fyumbzon zo(SS1bAH|qY{bJs=ds*DMF(lhv8F>VhtR9A^MY-Lvot+x*)y{tJI)$zdDipAh7#Fu z@J-tcxb6-zQI{e__+^zd!+MkJzi*k=F@g%T%XTl z)moMglZI(m0|D6q-E&Uqw&ijr%_W4wnu=kXwmT!DBCKZ72p38;N$yueId&zmuglC7 z&K1T8pEMfah|``M4lh`NrzV`YY|IIo9d?kdbC^ORIyrvobde(<8L=4{&Uo2#h4llt z=vWiBYq4DrUUOvj3+E=!4o^sSV=E)4jHvx2Z#dJ2Tb+CV=iE~U>12o&f*t3di(wjj zCBq&aJ2`xDqDXhi^_AM7*c(h%H+<)K1T?zQ_{O7bw@S$M>r7n#UO85 z2}{R_1~yK$rxK0xN|bSq69-+}&;6wDpwh(~qv-mSl}JY`7u6;@DAn=iuTBiCj!qJ) zdO%r>4isvXL!1n?c`JqNr%EB&fgMrxK0eJSGP~3GNsJt{omZHzRV8MD%K+aKt1a%bg*pTY8XE zOd)3zo+zx{-$nn-TdYxb;oC}jyq5>qp8Ssb9kwz zlMH6#;)92a_|A1Q-fm7Ur=u&!sJc2xFJg<4NG(0-Cc<0`BJemSRpcwN$Aef`2ajMI z7-ffv3-@agc%9s}+_EOLF@HrHu)YajG)b!z^y%fv{ zj3g7ikz`_!{V391vWf<4;IYR5N>}a>TOGzlV|j#{qqrPHk(3v>X!1C#266d3g_m&A zC?yh+YqFMz>?{Vh0$suTHZi}wONNXOro z+K2b$=6J7;ziBW9-mjr~#{8}EZkfNo)IPkgWQ{isroj8l+2c+0(((6K(4$TK{Z$N= zDSy*o3cS~Vzct=1^EaPpw+Zi3)_Bw4`r^(16w~qdRrF{R-UfzhlHaT2ZyHR2_Y|6E z%-kJXzX>_A!W!If#6J5kkvBA?DVe5L5W zczJ{LXIT7ny11n1|K6EgeSa~sAJ?VNLOke}=0fx=q%jvb&s%APNa+V__0K|Rus#s8<;OPiI5`7&6TW z8cdxLAv$G~5t<{?X9Rp`|I@N625o}>>YkR-U=4ph+8sb?`gAh8(;nHYo}Kktj`le)a;OaE^N8OCKR^?e7xC``8eYvRJB@yl z5$7RDM$qY&G6L-);y(dNp}pqB|3eI=(^TBN3ypxR&mxTANtA9ju3`Jw#QzVN6Nnx_ zkg>UXv^VQZ{BOgRmJ_oFjRmuP5SkDc4c5RTlq(YdkI+D+22`4AfZpZL4q0St|a^BBZWgY|jw-$(oiA=&~c<#PW4JG5g= literal 13958 zcmeHNO>i7X6&_(pv4~9w#3bP-S;s$-9Y?Vw|3!qvYiVuEk=KsAwt|7IM>`{FlF`gE zGb`EV&k+79geq61pt$Bp!40T_1E*XZmoF3)2Z{q+xMFU;iSK(o(>trxDm(IOT~x7E zJ^SYM>(}pn{rdIOw)zai=4|x%rwISZ3Z`G%L2ZEybFyMJC_vsO;73C6n(mUBPmql6^Hw zO_#8!GM4val>=b8WmDRw&hrUs5HheBedKtR|9`Ou)}b|FIfI9T87n8vJQgN zdDCmaN#5ykESoGybq%*fcK9g>^V6fgjE~`a3mSsSAo2-KQxcj`5CdXK7ZaKj6Azk3 zgA2B3Kaafk{@;H6*t`ICuYsisSHinp)>ESMBFzt?z?`Fym66+l3|TqjI#=5 z8Bq2TwrSB^v^h;;Bcp7t=DHUufvr-I<5k?6WtW`D70EZvC6nIL8xN!Df7J}23xq^& zWX^LUY+Ki+J|V@CL%xu*^?2v;LS_+|SwZQ|iIq!R=cXfsZ$;(L;@ zL)hioQ;ug-E{v|Zvf9OS(`WNj63sYym>AabuX$eVEMjslzcx2(Me#Cmnf5HTZIZ;7kj1mYvdc zjA-D{Q|BSkIIl>V=SAY6dq;RS3?EdyZ8M43$)gprb@WdeUP7Wagx#%dz$uYjuVc z;yRCW3?(md-NqPA7lsUiIX|e_6TTNi`qn?{!F-FNS1~|R+(?~kgzjF893cihA`a8hr$xzX3dlqb3v zgwjh(28b}DTL>0Q(!~rU`dB9Q^{_zNLN9wPJb2;?!J0@2W^*AJ{^9^bHTDDsahbQU z3R0%C1`^X*0M$LpC2V@M6Rn@_JcA~hl#eSbE4va7zK!19cyNHR2d%G1eBTRFnD z0!I+wl-d)4g2K++7!uNd99GNRe+8kf(V8f?8kj-w z1ekpwG6I9eZvoZ0vbqEiQ~*CA?2ysup-}ET2$e2E4~1-kJDjY)gD= zyxYzv6BybhybGABqj*zc2E0!~yu*0^2`aPY?^77jCA?2#sup-}EPqpB2D~>Re`~zk z&L@-I!~0C9@utEDi}!C}LALz;YWMJ-YK`~C@;4P`!22x3JDg86-fidaV)yVq*J-?| zFazG_JCFCzpfX$jehnkKl)tAjRY&tT6=uMD6Y{slyY2jap?i3jI*m6KK3Ke$VL`V1 zeX)CZUuuo_#_~56X25#};vLT48t=CA_v_um`^%lin+h}FeYx{^(}HaI`zsjHrTqO> zOx4l+O@$fo-h}+E@oqbRf316X^Om=xcvInn#hX7TX3O8@?%{m}Q?i2JM$LznyQeg(XZHRXU@59jaI9d;XK$rObJBTOA z;jh}-lQn+-o0AFsqzVxg5xCis1*PI+XjyMWu40TRI0Nt-Gam0`){6*q zH{Fdq1)i)HZ_MhkkxSUki^w(Kiq^k!@7}$}McfTG2c++!zK&OIlmzZAa0Fz1NyjJ< zY$;sFmh4B-1be*;bg0Xvk%E9Kcc7`;%Qs-678i)_qEF`LFPqvLtqIKTU(yAbwC%tg zgs@3<42hIhe~Nnc`^p)2k&J!yv$z)8qo*}rsPOm5UCb% zaRXhAanVLC@?8v4ago#_^o6UNwH7&zF%l8yK}bZ<=(ZvPa&aw^2c^*7^u*tgYQ@Z3 zm|Q^CwFo_sJxAd>wuDG;FY%dzI@FnO`qr&Q{sjqv=q?DEyTKZ*3BBD<{BL8@wgYnz z!h+d4wFni~!K0_^CjRe3K!qeWv!J`tklfV7{{xuW4AV7mH!JaT#zq_;Wa6hK|4;k? hVJlje#Q#IcHwVsrBz`JvjEn!h#19wZBY>1){1@jU1jPUV diff --git a/B4A/Objects/AndroidManifest.xml b/B4A/Objects/AndroidManifest.xml index d778016..4a16608 100644 --- a/B4A/Objects/AndroidManifest.xml +++ b/B4A/Objects/AndroidManifest.xml @@ -56,5 +56,13 @@ android:name=".httputils2service$httputils2service_BR" android:exported="true"> + + + + \ No newline at end of file diff --git a/B4XMainPage.bas b/B4XMainPage.bas index 01ca095..17405b7 100644 --- a/B4XMainPage.bas +++ b/B4XMainPage.bas @@ -7,11 +7,10 @@ Version=9.85 #Region Shared Files #CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files" 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True +'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip 'Ctrl + click to sync files con Github Desktop ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ #End Region -'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip - Sub Class_Globals Private Root As B4XView Private xui As XUI @@ -39,6 +38,11 @@ Sub Class_Globals Private l_progressDialog As Label Private p_editaRuta As Panel Private p_editaAlmacen As Panel + Private b_cargarBD As Button + Private p_datos As Panel + Private p_principal As Panel + Private l_appInfo As Label + Dim empresa, appVersion As String End Sub Public Sub Initialize @@ -49,8 +53,11 @@ End Sub Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 Root.LoadLayout("MainPage") + p_principal.Width = Root.Width + p_principal.Height = Root.Height + Subs.centraPanel(p_datos, Root.Width) reqManager.Initialize(Me, "http://187.189.244.154:1782") - B4XPages.SetTitle(Me, "Mariana revisión de BD") + B4XPages.SetTitle(Me, "Revisión de BD") Subs.centraPanel(p_progressDialog, Root.Width) Subs.centraPanel(p_editaRuta, Root.Width) Subs.centraPanel(p_editaAlmacen, Root.Width) @@ -86,14 +93,25 @@ Sub B4XPage_Appear Log($"Existe BD: ${File.Exists(File.DirInternal, "kmt.db") }"$) If File.Exists(File.DirInternal, "kmt.db") Then If Not(skmt.IsInitialized) Then skmt.Initialize(File.DirInternal,"kmt.db", True) + Dim ai As Cursor = skmt.ExecQuery($"select CAT_VA_DESCRIPCION, CAT_VA_VALOR from cat_variables where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_VERSION'"$) + If ai.RowCount > 1 Then + For i = 0 To ai.RowCount -1 + ai.Position = i + If ai.GetString("CAT_VA_DESCRIPCION") = "EMPRESA" Then empresa = ai.GetString("CAT_VA_VALOR") + If ai.GetString("CAT_VA_DESCRIPCION") = "APP_VERSION" Then appVersion = ai.GetString("CAT_VA_VALOR") + Next + l_appInfo.Text = $"${empresa} ${appVersion}"$ + End If Dim c As Cursor = skmt.ExecQuery($"select count(distinct pe_cliente) as pedidos, group_concat(distinct substr(pe_fecha, 4,2)) as diasVenta, sum(pe_costo_tot) as total, (select PE_CANT from pedido where PE_CANT = 0) as cantsEnCero, (select count(PE_CLIENTE) from pedido where printf("%d", PE_CLIENTE) <> PE_CLIENTE ) as clienteNoNumerico from pedido"$) Log(c.RowCount) If c.RowCount > 0 Then c.Position = 0 l_pedidos2.Text = c.GetString("pedidos") - l_diasVenta.Text = c.GetString("diasVenta") - l_totalVenta.Text = "$" & NumberFormat2(c.GetString("total"), 1, 2, 2, True) - l_cantsEnCero.Text = c.GetString("cantsEnCero") + l_diasVenta.Text = "N/A" + If c.GetString("diasVenta") <> Null Then l_diasVenta.Text = c.GetString("diasVenta") + If c.GetString("total") <> Null Then l_totalVenta.Text = "$" & NumberFormat2(c.GetString("total"), 1, 2, 2, True) Else l_totalVenta.Text = "0" + l_cantsEnCero.Text = "0" + If c.GetString("cantsEnCero") <> Null Then l_cantsEnCero.Text = c.GetString("cantsEnCero") l_clienteNoNumerico.Text = c.GetString("clienteNoNumerico") End If Dim c As Cursor = skmt.ExecQuery("select pe_ruta from pedido") @@ -380,6 +398,15 @@ Private Sub B4XPage_CloseRequest As ResumableSub Return False End Sub +Private Sub b_cargarBD_Click + Private FH As FileHandler + FH.Initialize + Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar. + File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno. + skmt.Initialize(File.DirInternal,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada. + ToastMessageShow("¡BD importada!", False) +End Sub + Private Sub l_ruta2_LongClick p_editaRuta.Top = l_ruta2.top p_editaRuta.Visible = True