PDA

Ver la Versión Completa : SQLite FDConnection FDTable error al correr aplicacion


cl2raul
30-10-2015, 23:36:05
Hola a todos, quiero hacer una apk que funcione tipo catalogo offline mediante una base de datos sqlite3 donde esta tiene imagenes, componentes principales un TImage, 2 Tedit, FDConnection y FDTable...
-En el FDConnection el drivername a sqlite y le doy la ruta al fichero *.db y activo la conexion.
-Conecto el FDTable al FDConnection y selecciono el TableName.
-en el diseñador de LiveBindings conecto:
Edit1 con id
Edit2 con nombre
Image con picture
-id, nombre y picture son Fields de FDTable.
-automaticamente se crean BindSourceDB y BindingsList.
-agrego el componente BindingNavigator y en la propiedad DataSource selecciono BindSourceDB.
-activo la FDTable y se muestra todos los datos en los Edit1, Edit2 e Image.

Supuestamente todo esta bien pero cuando corro el proyecto en mi movil(huawei y300-0100 con adroid 4.2.2) se muestra la pantalla en negro y no hace nada????
aqui les va la unit completa:

unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
FMX.Objects, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error,
FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool,
FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Stan.Param, FireDAC.DatS,
FireDAC.DApt.Intf, FireDAC.DApt, System.Rtti, System.Bindings.Outputs,
Fmx.Bind.Editors, Data.Bind.EngExt, Fmx.Bind.DBEngExt, Data.Bind.Components,
Data.Bind.DBScope, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
FMX.Layouts, Fmx.Bind.Navigator;

type
TForm1 = class(TForm)
Image1: TImage;
Edit1: TEdit;
Edit2: TEdit;
FDConnection1: TFDConnection;
FDTable1: TFDTable;
BindSourceDB1: TBindSourceDB;
BindingsList1: TBindingsList;
LinkControlToField1: TLinkControlToField;
LinkControlToField2: TLinkControlToField;
LinkPropertyToFieldBitmap: TLinkPropertyToField;
BindNavigator1: TBindNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.fmx}

end.

AgustinOrtu
31-10-2015, 00:57:49
te faltan el TFDPhysSQLiteDriverLink y el TFDGUIxWaitCursor

cl2raul
18-11-2015, 15:00:15
si lo note y agrege los componentes pero como le doy la direccion del movil a la dll y una pregunta la hay una dll para android?

AgustinOrtu
18-11-2015, 16:39:20
No entendi ninguna de las 2 preguntas, podrias explicarlo mejor? La direccion del movil?

Dll es un concepto que solamente existe en el universo Microsoft

cl2raul
18-11-2015, 20:36:18
yo cuando uso el componente TFDPhysSQLiteDriverLink doy la url de la dll en windows pero no tengo idea que tengo q poner en el vendor lib de este componente.

AgustinOrtu
18-11-2015, 20:40:19
Creo que estas confundiendo un path (ruta) con URL (https://en.wikipedia.org/wiki/Uniform_Resource_Locator)

Yo siempre dejo por defecto esos valores y nunca supe de algun caso especial que requiera atencion; con SQLite no deberias tener problema porque viene "de serie" en cualquier sistema operativo moderno. De hecho creo que hasta en WinXP viene SQLite. Por lo menos en su SP 3 si

Por cierto, estas desplegando tambien la base de datos SQLite al movil? Otra opcion es crearla si no existe

Revisa este enlace (http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_SQLite_with_FireDAC#Creating_a_SQLite_Database_from_a_Delphi_Application)

cl2raul
18-11-2015, 21:43:00
si utilizo el data explorer creo una conexion y busco la base de datos sqlite q para windows (si funciona), la ruta es c:\\ y me da error en TFDPhysSQLiteDriverLink

AgustinOrtu
19-11-2015, 04:55:19
Yo creo que tu problema es que en Android "no tienes la base de datos". No existe C:\\ en Android.

En los tutoriales de la documentacion se explica como hacer el Deploy de un archivo.

O tambien otra alternativa es crear uno mismo la base de datos si esta no existe en el dispositivo Android

Revisa este enlace (http://docwiki.embarcadero.com/RADStudio/Seattle/en/Mobile_Tutorial:_Using_FireDAC_in_Mobile_Applications_(iOS_and_Android)#Setting_Up_Your_Database_Dep loyment_for_mobile)

Problemas de drivers no podes tener porque en Android seguro que SQLite viene de fabrica

cl2raul
21-11-2015, 01:12:21
ese ejemplo ya lo trate de hacer pero esa base de datos tieme password y so ne cual es, y lo hice con otra base de datos y sin correrlo me funciona pero cuando lo corro me pone la pantalla del movil negro y al final no muestra la aplicacion... pero pongo a falso la coneccion, y me muestra correctamente la aplicacion y pongo un boton para activar esta la coneccion y me da un error, tratare de reproducir nuevamente el ejemplo y mostrarte el error...

yo si copio la base de datos al movil, esta se encuentra en la carpeta dowload en el "interno" y uso GetShareDowloadPath...

AgustinOrtu
21-11-2015, 01:21:32
Que excepción se genera?

tonio666
23-11-2015, 12:58:42
Para usar la base de datos de ejemplo, la password dejala en blanco, a mi me funciono asi.