PDA

Ver la Versión Completa : Seccion PocketStudio (PalmOS) Cuarta Entrega


fredo
25-09-2006, 15:50:40
bueno, la vez anterios quedamos en la manipulacion de los datos....

solo queda el rescate desde el pc.

el primer paso es crear una aplicacion que sea capaz de rescatar los datos...para ello debemos ubicar la carpeta "Conduit" que viene ubicada en la carpeta "C:\Archivos de programa\Winsoft\PocketStudio 2\Conduit", ahi encontraremos una carpeta que contiene 1ero la carpeta "COMDirect" y la mas importante de todas, en esta vienen las funciones y procedimientos necesarios para poder sincronizar nuestros datos con el PC., las otras 2 carpetas son ejemplos de como usar estas unidades...., sin embargo no es solo abrir y ejecutar los ejemplos.....

luego se debe hacer un programa para leer los datos desde la palm...., para ello hacemos una nueva aplicacion, y luego agregamos las 2 unidades que vienen en la carpeta "PDDirectLib.pas" y "PDStandardLib.pas", creamos una funcion para leer los campos:

function GetField(Value: array of Byte; Index: Integer): String;
var i: Integer;
begin
Result := '';

for i := 0 to Length(Value) - 1 do
if Index = 0 then
begin
if Value[i] = 0 then
Exit
else
Result := Result + Chr(Value[i])
end
else if Value[i] = 0 then
Dec(Index);
end;


luego en el evento OnCreate


procedure TFrm_Main.FormCreate(Sender: TObject);
var
DatabaseQuery,DatabaseQuery_Choferes: IPDDatabaseQuery;
RecordAdapter,RecordAdapter_Choferes: IPDRecordAdapter;
i,errores,Categoria: Integer;
UniqueId: OleVariant;
Category: Integer;
Attributes: ERecordAttributes;
DbRecord: array of Byte;
Campo1,Campo2:String ;

begin
DatabaseQuery := CoPDDatabaseQuery.Create;
RecordAdapter := DatabaseQuery.OpenRecordDatabase('DBEjemplos', 'PDDirect.PDRecordAdapter', eRead or eShowSecret) as IPDRecordAdapter;

RecordAdapter.AddLogEntry('- Lellendo Base de Datos'#10, eText, True, True); // Esto se ecribe en el log de la palm
RecordAdapter.AddLogEntry('- Lellendo Base de Datos', eText, True, False); // esto se escribe en el log del PC

DbRecord := nil;
for i := 0 to RecordAdapter.RecordCount - 1 do
begin
DbRecord := RecordAdapter.ReadByIndex(i, UniqueId, Category, Attributes);
with dm do
Begin
Try
Campo1:=trim(GetField(DbRecord, 0));
campo2:=trim(GetField(DbRecord, 1));

showmessage(campo1+' '+campo2)
end;
end;
RecordAdapter.AddLogEntry('- Hecho, '+#10, eText, True, True); // escribe log en la palm
RecordAdapter.AddLogEntry('- Hecho', eText, True, False);//escribe log en el PC


¿que falta ahora?:confused:

pues la aplicacion debe cerrarce automticamente al terminar, en el ejemplo anterior la aplicacion que registros se estan leyendo desde la palm atravez de un showmessage(); sin embargo es ahi donde se debe hacer alguna operacion con los registros, como cargarlos a una DB....:)

fredo
25-09-2006, 15:59:57
por ultimo tenemos que registrar la aplicacion en elHotSync para que la llame en el momento de sincronizar... para ello no es necesario quiebrarce la cabeza, solo hay que abrir la la aplicacion install en la carpeta install que se nombro anteriormente....

en la seccion const


const
Creator = 'D043';
FileName = 'Nombre_carga_datos.exe';
Install = 'Install';
Uninstall = 'Uninstall';



La constante FileName debe llevar el nombre del programa que carga los datos, luego darle un build, y por ultimo copiar el ejecutable a donde esta el otro ejecutable creado anteriormente, correr, y por ultimo precionar el boton install, esto registrara la aplicacion. :eek:

y listo con ello leemos los datos registrados en la palm.

si hemos utilizado el showmessage(); del ejemplo anterior veremos uno por cada registro guardado en la tabla.....

fredo
29-09-2006, 18:27:24
ya enconre como sicronizar al revez...:D si hay algun interesado que me lo pida y se lo mando....

Saludos.