Archivos PDF guardados en una tabla de SQL Server.
#1
Escrito 09 marzo 2012 - 03:50
Duda #1.- En MS SQL Server 2008 R2, ¿qué tipo de campo debo definir para guardar un archivo PDF? En éste caso, plenamente justificado para evitar que se sature el directorio de imágenes y documentos, además que así me pidieron que se hiciese.
Duda #2.- Dado el tipo de campo del cuestionamiento anterior, una vez que tenga el nombre del archivo a guardar en el campo, ¿cómo puedo "subir" el archivo al campo y que se guarde?
Gracias por su colaboración, y ésta vez, no aceptaré que me regañe EgoPolice...
#2
Escrito 09 marzo 2012 - 03:58
Va
#3
Escrito 09 marzo 2012 - 04:13
Hecho el tiro......poner titulos adecuados o relativos al problema...
#4
Escrito 09 marzo 2012 - 04:30
Yo sugiero que uses un campos de tipo blob, ¿como hacerlo? bueno pues te tocará investigar un poco acerca de Streams
Saludos
PD, Ya vez, que bien se ve el título
#5
Escrito 09 marzo 2012 - 04:55
jojojojojojo No existen los campos tipo blob en SQL Server 2008 R2..., binary es lo más cercano......Yo sugiero que uses un campos de tipo blob...
Precisamente por que no tengo mucho tiempo para documentarme, necesito un poco de ayuda....¿como hacerlo? bueno pues te tocará investigar un poco acerca de Streams
PD, Ya vez, que bien se ve el título
#6
Escrito 09 marzo 2012 - 05:05
jojojojojojo No existen los campos tipo blob en SQL Server 2008 R2..., binary es lo más cercano...
Eso, eso, no conozco los tipos aceptados, al final es el simil de blob
En cuanto a como almacenarlo, al ser un campo binario, supongo que se debe meter sin problema desde un TFilestream. Digo, es cosa de probar.
Saludos
#7
Escrito 12 marzo 2012 - 11:23
procedure TfrmContenedor.btnImportarClick(Sender: TObject); var sNombreArchivo : string; fsPDF : TStream; bfCampo : TBlobField; begin sNombreArchivo := ''; with dlgAbrirArchivo do begin InitialDir := ExtractFilePath(Application.ExeName); Filter := 'Archivos de Adobe Acrobat (*.pdf)|*.PDF'; Title := 'Buscar archivos de documentos para el paciente.'; DefaultExt := '*.pdf'; if Execute then sNombreArchivo := FileName; end; if sNombreArchivo <> '' then begin fsPDF := TMemoryStream.Create; bfCampo := TBlobField.Create(Self); with tblPDFs do begin { bfCampo.LoadFromFile(sNombreArchivo); bfCampo.SaveToStream(fsPDF);} Connection := qryDocumentos.Connection; TableName := 'HY11_DocumentosPacElec'; Open; try Insert; strngfldPDFsE2_CTRL_PAC.Value := lblExpediente.Caption; intgrfldPDFsC42_Documento_ID.Value := StrToInt(sID); [color=red]bytsfldPDFsHY11_DocumentoElectronico. LoadFromFile(sNombreArchivo);[/color] Post; finally Close; end; end; fsPDF.Destroy; bfCampo.Destroy; end; end;
La línea que DEBERÍA estar marcada en rojo es precisamente donde da la excepción, y en donde quiero guardar el archivo PDF completo (no la ruta+nombre, no el texto, sino el archivo completo tal cual) para que sea contenido y respaldado (intención primaria del usuario) cada vez que la base de datos sea respaldada y que no se pierda ningún documento.
Si tienen un código que me permita llevar a cabo ésta tarea, se los agradeceré muchísimo.
#8
Escrito 15 marzo 2012 - 09:19
#9
Escrito 15 marzo 2012 - 11:19
Saludos
#10
Escrito 15 marzo 2012 - 12:35
La variable bfCampo se supone que debería tener asignado el campo blob de la BD, osea en esta línea:
bytsfldPDFsHY11_DocumentoElectronico. LoadFromFile(sNombreArchivo);
Algo como esto:
bfCampo := DataSet.FieldByName('CampoBlob'); bfCampo.LoadFromFile(sNombreArchivo);
¿Algo así?
#11
Escrito 18 marzo 2012 - 08:47
if opdFoto.Execute then begin try qryFotoEntida.ParamByName('IdEntida').AsString := IdEntida; qryFotoEntida.Open; qryFotoEntida.Edit; qryFotoEntidaPhotoEntida.loadfromfile(opdFoto.FileName); qryFotoEntida.Post; except on E: Exception do begin Beep; MessageDlg(E.Message + #10 + 'The photo does not exist',mtWarning,[mbRetry],0); Exit; end; end; end;
ya que el cargar directamente da un error en el delphi por que no carga correctamente y se tiene que hacer un cambio en las unit base