Guardar Pdf en BD y Visualizarlo en Objeto Pdf

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola Mis Jeropas de AmsSpecialist espero me ayuden en esta duda, ingresar un pdf y visualizarlo, hasta el momento he hecho lo siguiente:

1. Crear la Bd de mi proyecto
2.-Guardar Registros en mi BD
3.-Consultas de Datos de mi BD

Lo que deseo hacer:

1.- Guardar Pdf en mi BD
2.- Que al consultar también se me visualice el Pdf guardado utilizando el Objeto Pdf que trae Ams

Adjunto Imagen
Imagen

Código de Proyect Actions
--Buscar la tabla en el directorio \\AutoPlay\\Docs\\ 
sDatabaseFile = _SourceFolder .. "\\AutoPlay\\Docs\\LABORALES.db";
--si no existe  creara una nueva con los campos que agregamos
---Abra la base de datos, o en abscence, crear una
db = SQLite.Open(sDatabaseFile);
nLastError = Application.GetLastError();
if nLastError ~= SQLite.OK then
Dialog.Message("Error Opening File", SQLite.GetLastErrorString());
end
SQLite.Query(db,"CREATE Table Usuarios(RecordID integer primary key, Usuario text, Contrasena text, TipoCuenta text )");
SQLite.Query(db,"CREATE Table Registro(Usuario text, Fecha text, Hora text )");
SQLite.Query(db,"CREATE Table TECNICO(RecordID integer primary key, DOCUMENTOPDF text, REGISTRO text, EXPEDIENTE text, APELLIDOSNOMBRES text, DNI text, TITULO text, INSTITUCION text, RESIDENCIA text, TELEFONO text, FECHAINSCRIPCION text, ENVIADO text, SELECCION text, OBSERVADO text, NOTAOBSERVACION text, HOJAVIDA text, Img64 text)");
bNewRecord = true
Código Boton Guardar
function Escape (sSourceString)
sSourceString = String.Replace(sSourceString, "'", "''", false);
return sSourceString;
end
--  Obtener información de los objetos de entrada y almacenar
-- En las variables de transferir a la base de datos
sDOCUMENTOPDF = Input.GetText("INP_DOCUMENTOPDF");
sREGISTRO = Input.GetText("INP_REGISTRO");
sEXPEDIENTE = Input.GetText("INP_EXPEDIENTE");
sAPELLIDOSNOMBRES = Input.GetText("INP_APELLIDOSNOMBRES");
sDNI = Input.GetText("INP_DNI");
sTITULO = Input.GetText("INP_TITULO");
sINSTITUCION = ComboBox.GetText("CBX_INSTITUCION");
sRESIDENCIA = Input.GetText("INP_RESIDENCIA");
sTELEFONO = Input.GetText("CBX_TELEFONO")
sFECHAINSCRIPCION = Input.GetText("INP_FECHAINSCRIPCION")
sENVIADO = ComboBox.GetText("CBX_ENVIADO");
sSELECCION = ComboBox.GetText("CBX_SELECCION");
sOBSERVADO = ComboBox.GetText("CBX_OBSERVADO");
sNOTAOBSERVACION = Input.GetText("INP_NOTAOBSERVACION");
--SI ESTAMOS CREANDO UN NUEVO REGISTRO, INSERTAR EN LOS PRÓXIMOS DISPONIBLES
--POSICIÓN, DE LO CONTRARIO INSERTAR EN LA POSICIÓN DEL REGISTRO ACTUAL
if bNewRecord then
nSelection = SQLite.QueryToTable(db,"SELECT * FROM TECNICO WHERE REGISTRO='"..sREGISTRO.."'");
    if nSelection == nil then -- Si no hay registros con el mismo Nombre y Apellidos inserta los datos
SQLite.Query(db,"insert into TECNICO values(NULL,  '"..sDOCUMENTOPDF.."',  '"..sREGISTRO.."', '"..sEXPEDIENTE.."', '"..sAPELLIDOSNOMBRES.."', '"..sDNI.."', '"..sTITULO.."', '"..sINSTITUCION.."', '"..sRESIDENCIA.."', '"..sTELEFONO.."', '"..sFECHAINSCRIPCION.."', '"..sENVIADO.."', '"..sSELECCION.."', '"..sOBSERVADO.."', '"..sNOTAOBSERVACION.."')");
if Application.GetLastError() ~= SQLite.OK then
Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString());
else
Dialog.TimedMessage("Registro", "Estimado(a) Usuario(a) se Registro la Información del Técnico con Éxito", 3000, MB_ICONEXCLAMATION);
--else
StatusDlg.Hide();
Page.Jump("INGRESO POSTULANTES TECNICOS");
end
else -- Si hay registros con el NOMBRESAPELLIDOS entonces...
nData = nil;
rData = nil;     
 for nRow = 1, nSelection.Rows do
 nData = nSelection.Data[nRow]["REGISTRO"];
         if nData == sREGISTRO then
           rData = true;
           break
          end
          end
 if not rData then
       SQLite.Query(db,"insert into TECNICO values(NULL,  '"..sDOCUMENTOPDF.."',  '"..sREGISTRO.."', '"..sEXPEDIENTE.."', '"..sAPELLIDOSNOMBRES.."', '"..sDNI.."', '"..sTITULO.."', '"..sINSTITUCION.."', '"..sRESIDENCIA.."', '"..sTELEFONO.."', '"..sFECHAINSCRIPCION.."', '"..sENVIADO.."', '"..sSELECCION.."', '"..sOBSERVADO.."', '"..sNOTAOBSERVACION.."')");
        if Application.GetLastError() ~= SQLite.OK then
	      Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString());
	    else
	      Dialog.TimedMessage("Registro", "Estimado(a) Usuario(a) se Registro la Información del Técnico con Éxito", 3000, MB_ICONEXCLAMATION);
--else
StatusDlg.Hide();
		Page.Jump("INGRESO POSTULANTES TECNICOS");
	      end
else
     Dialog.Message("Error por Duplicidad", "Ya existe un registro del Técnico en la Base de Datos ");
      end
      end
      end
Código Boton Buscar
--Funcion Buscar
			---Desactive todas las casillas
				ListBoxEx.DeleteAllItems("Listado")
			
			---obtener una entrada de bsqueda
			sSearch = Dialog.Input("Buscar", "Coloque el Dato del que desea Buscar:", "", MB_ICONQUESTION);
			
			if sSearch ~= "" then
				tblRS = SQLite.QueryToTable(db, "Select * from TECNICO where (REGISTRO LIKE '%"..sSearch.."%') or (APELLIDOSNOMBRES LIKE '%"..sSearch.."%')")
				nLastError = Application.GetLastError();
				if nLastError ~= SQLite.OK then
					Dialog.Message("Error", SQLite.GetLastErrorString());
				end
				 
				--  si no hay errores, continuar, de lo contrario no hacer nada
						if nLastError == SQLite.OK then
					--recorrer la tabla
					for nRow = 1,tblRS.Rows do
				    	--obtener el ttulo del registro actual
				    	nRecordID = tblRS.Data[nRow]["RecordID"];
				    	--sTitle = tblRS.Data[nRow]["Marca"];
				    	sREGISTRO = tblRS.Data[nRow]["REGISTRO"];
						sAPELLIDOSNOMBRES = tblRS.Data[nRow]["APELLIDOSNOMBRES"];
						
						
						
				    	--aadir el elemento a la lista con el texto title =
				    	---Mostrar dilogo de estado para el progreso de actualizacin	
			--ncount = Table.Count(tMatriculas);
					StatusDlg.Show(MB_ICONNONE, false);
					StatusDlg.SetMeterRange(1, 50);
			
					StatusDlg.SetMeterPos(1);
				StatusDlg.SetTitle("Refrescar la Busqueda por Apellidos y Nombres");
				StatusDlg.SetMeterRange(1, nCount);
				    	--*******************************************************      y el RecordID
  						nIndex = ListBoxEx.AddItem("Listado", "|| REGISTRO: ".. "<b><i>"..sREGISTRO .."</i></b>", sREGISTRO, tblRS.Data[nRow]["RecordID"], "", 1, LBXITEM_HTML, 0, nil, {16316664,16764057,16316664}, nil);
						
						ListBoxEx.SetItemGStyle("Listado", nIndex, BACKWARD_DIAGONAL, LBXISTATE_NORMAL);
						ListBoxEx.SetItemIconSize("Listado", nIndex, 20);
						ListBoxEx.SetUpdate("Listado", true);
						ListBoxEx.SetVisible("Listado", true);
			  		  	end
				      end
				     StatusDlg.Hide();
				     else 
				     end 
Código de ListBoxEx(OnSelect)
tSelected = ListBoxEx.GetSelectedItem("Listado")
ListBoxEx.GetItemText("Listado", -1, true)
if tSelected then
			nRecordID = String.ToNumber(ListBoxEx.GetItemData("Listado", tSelected));
		
			tSeleccion = SQLite.QueryToTable(db, "Select * from TECNICO where RecordID="..nRecordID)
	
	
	nRecordID = tSeleccion.Data[1]["RecordID"];
        sDOCUMENTOPDF = tSeleccion.Data[1]["DOCUMENTOPDF"];
	sREGISTRO = tSeleccion.Data[1]["REGISTRO"];
	sEXPEDIENTE = tSeleccion.Data[1]["EXPEDIENTE"];
	sEPELLIDOSNOMBRES = tSeleccion.Data[1]["APELLIDOSNOMBRES"]
	sDNI = tSeleccion.Data[1]["DNI"];
	sTITULO = tSeleccion.Data[1]["TITULO"];
	sINSTITUCION = tSeleccion.Data[1]["INSTITUCION"];
	sRESIDENCIA = tSeleccion.Data[1]["RESIDENCIA"];
	sTELEFONO = tSeleccion.Data[1]["TELEFONO"]
	sFECHAINSCRIPCION = tSeleccion.Data[1]["FECHAINSCRIPCION"];
	sENVIADO = tSeleccion.Data[1]["ENVIADO"];
	sSELECCION = tSeleccion.Data[1]["SELECCION"];
	sOBSERVADO = tSeleccion.Data[1]["OBSERVADO"];
	sNOTAOBSERVACION = tSeleccion.Data[1]["NOTAOBSERVACION"];
	
	Input.SetText("INP_DOCUMETOPDF", sDOCUMENTOPDF);
        Input.SetText("INP_REGISTRO", sREGISTRO);
	Input.SetText("INP_EXPEDIENTE", sEXPEDIENTE);
	Input.SetText("INP_APELLIDOSNOMBRES", sAPELLIDOSNOMBRES);
	Input.SetText("INP_DNI", sDNI);
	Input.SetText("INP_TITULO", sTITULO);
	ComboBox.SetText("CBX_INSTITUCION", sINSTITUCION);
	Input.SetText("INP_RESIDENCIA", sRESIDENCIA);
	Input.SetText("INP_TELEFONO", sTELEFONO);
	Input.SetText("INP_FECHAINSCRIPCION", sFECHAINSCRIPCION);
	ComboBox.SetText("CBX_ENVIADO", sENVIADO);
	ComboBox.SetText("CBX_SELECCION", sSELECCION);
	ComboBox.SetText("CBX_OBSERVADO", sOBSERVADO);
	Input.SetText("INP_NOTAOBSERVACION", sNOTAOBSERVACION);
	end
Espero su ayuda yo también estaré viendo la gran variedad de ejemplos que tienen ustedes en este foro, son muy buenos
Aun ando viendo ejemplos para comprendercomprender lo solicitado...he encomtrado in ejm de in colombiano donde guards documentos end una Bd
Aun ando viendo ejemplos para comprender lo solicitado...he encontrado un ejm de un colombiano donde guarda documentos en una Bd....seguire estudiandolo hasta comprenderlo
He encontrado este ejemplo muy bueno de la integración de Documentos a una Base de Datos, ahora me falta que al hacer consultas así como se me muestra la información en los objetos Input y ComboBox se me muestre el pdf guardado en el objeto pdf que trae por defecto Ams

Link del Foro
http://www.amsspecialist.com/viewtopic.php?f=12&t=2907
No se donde esta Mi error
   HOJAVIDA = Shell.GetFolder(SHF_DESKTOP);
	FormatHOJAVIDA = "Pdf (*.pdf;*.pdf;*.pdf;*.pdf)|*.pdf;*.pdf;*.pdf;*.pdf|Todos los archivos(*.*)|*.*|"
	
result = Dialog.FileBrowse(true, "Locale File", HOJAVIDA, FormatHOJAVIDA, "", "data", false, true);
if (result[1] ~= "CANCEL") then 
Source = result[1]
local pdfName = String.SplitPath(result[1]).Filename..String.SplitPath(result[1]).Extension;
HTTP.Download(sHOJAVIDA, "\\Autoplay\\HOJAVIDA\\"..pdfName, MODE_BINARY, 20, 80, nil, nil, nil);
Destino = _SourceFolder.."\\Autoplay\\HOJAVIDA\\"..pdfName;
File.Copy(Source, Destino, true, true, false, true, nil);

error = Application.GetLastError();
	if (error ~= 0) then
		Dialog.TimedMessage("Error", _tblErrorMessages[error], 800, MB_ICONSTOP);
		else
	Input.SetText("INP_HOJAVIDA", "Autoplay\\HOJAVIDA\\"..pdfName);

PDF.LoadFile("HOJAVIDA", "Autoplay\\HOJAVIDA\\"..pdfName);

end
	end
	     
El codigo anterior lo tengo end onclip del Boston que busca el pdf
En LA linear donde esta el HTTP.Dowloader es donde me sale el error...argumento 1 debe set tipo Strim
Joder lo consegui muy pronto subo mi proyecto
Despues de 2 Noches logre utilizar el Objeto de Pdf como visualizador en base de datos
espero les sea de utilidad...atentamente desde el planeta de Vegeta.................Gocku
HIDE: ON
Hidebb Message Hidden Description
manda pra mim amigo
Gracias...
Bello grazie
gracias
gracias
thank you for share
:friends:
Graciaas