Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
Guardar archivos en sql2000

hola amigos quisiera saber cual es el tipo de campo para guardar cualquier tipo de datos en sql2000 osea necesito estos tipo de archivos exe,pdf,mp3,zip etc

e leido este hilo http://www.clubdelphi.com/foros/showthread.php?t=53976 donde muestra supuestamente como hacerlo pero no me funciona no guarda nada
Responder Con Cita
  #2  
Antiguo 14-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Campos BLOB
Responder Con Cita
  #3  
Antiguo 14-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
no veo definido ese tipo de datos en SQL 2000
Responder Con Cita
  #4  
Antiguo 14-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Los BLOB son (Binary Large Objects), así que lo mismo en MS SQL se llaman binary o algo así.

No hay más que hacer una sencilla búsqueda en google:
BINARY VARBINARY
BINARY VARYING
BIT VARYING
1 byte por carácter Se puede almacenar cualquier tipo de datos en un campo de este tipo. Los datos no se traducen (por ejemplo, a texto). La forma en que se introducen los datos en un campo binario indica cómo aparecerán al mostrarlos.
Responder Con Cita
  #5  
Antiguo 14-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ok probare luego les cuento
Responder Con Cita
  #6  
Antiguo 14-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
E cambiado el tipo de datos a binary y escribe el siguiente codigo para cargar un archivo y me da error

Código Delphi [-]
 
begin
  if Open.Execute then
     begin
        dbedit4.text:=open.fileName;
        TBlobField(ADOTable1.FieldByName('archivos')).LoadFromFile(Open.FileName);
    end;
   else
    Open.Destroying;
end;

el error me dice invalid class typecast
Responder Con Cita
  #7  
Antiguo 19-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
alguien tiene algun ejemplo de como guardar un archivo en sql2000 ya que no me funcionan lo que estoy haciendo
Responder Con Cita
  #8  
Antiguo 19-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
kurono,

Revisa estos links:

http://www.clubdelphi.com/foros/show...ht=TBlobStream

http://www.clubdelphi.com/foros/show...highlight=BLOB

http://www.clubdelphi.com/foros/show...highlight=BLOB

http://www.onlinedelphitraining.com/...ters/blobs.htm

http://delphi.about.com/od/database/a/record2blob.htm

http://www.scalabium.com/faq/dct0141.htm

Los metodos de manejo de campos BLOB descritos en los links son aplicables en general a cualquier tipo de BD.

Espero sea util

Nelson.
Responder Con Cita
  #9  
Antiguo 20-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
analizare los codigo luego les cuento cual me funciono
Responder Con Cita
  #10  
Antiguo 24-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigos les cuento que e probado varios codigo de los link los cuales en si son todos parecidos y en todos el codigo me da error en una linea del codigo

Código Delphi [-]

procedure guardar(FileName, FieldName: string);
var
   blob, myFileStream : TStream;
begin
   blob := cds.CreateBlobStream(cds.FieldByName(FieldName), bmWrite);
  try
     blob.Seek(0, soFromBeginning);
     myFileStream := TFileStream.Create(FileName, fmShareDenyWrite);
  try
     blob.CopyFrom(myFileStream, myFileStream.Size) ;
  finally
     myFileStream.Free ;
 end;
   finally
     blob.Free ;
 end;
end;

la parte tachada en negrita es donde me da el error y el cds lo declare como TDataSet
Responder Con Cita
  #11  
Antiguo 24-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Kurono,

Revisa este fragmento de código del link : http://delphi.about.com/od/database/a/record2blob.htm
Código Delphi [-]
var
    User : TUser;
    blobF : TBlobField;
    bs : TStream;
 begin
    User.Name := edName.Text;
    User.NumberOfQuestions := StrToInt(edNOQ.Text) ;
    User.CanAsk := chkCanAsk.Checked;
 
    myTable.Insert;
 
    blobF := myTable.FieldByName('data') as TBlobField;
    bs := myTable.CreateBlobStream(blobF, bmWrite) ;
    try
      bs.Write(User,SizeOf(User)) ;
    finally
      bs.Free;
    end;
 end;
¿Ves como definen el campo blobF como un TBlobField antes de usarlo?. Creo que también es válido definirlo así:
Código Delphi [-]
bs := myTable.CreateBlobStream(myTable.FieldByName('data') as TBlobField, bmWrite);
Espero sea útil

Nelson

Última edición por nlsgarcia fecha: 24-10-2012 a las 05:22:26.
Responder Con Cita
  #12  
Antiguo 25-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
hare algunas prueba con el codigo luego te cuento
Responder Con Cita
  #13  
Antiguo 25-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo nlsgarcia no me funciona de ninguna manera crees que sea algo con la base de datos en sql2000 el campo lo tengo declarado binary incluso lo declare varbinary y nada
Responder Con Cita
  #14  
Antiguo 25-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
hola amigos les cuento que hise prueba con una base de datos acces y todo funciona bien pero en sql2000 no funciona sera porque en access el campo si se declara como blod mientras que en sql2000 se declara como binary
Responder Con Cita
  #15  
Antiguo 25-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Kurono,

Revisa estos links:

1- http://www.dbforums.com/microsoft-sq...er-2000-a.html

2- http://www.databasejournal.com/featu...ver-Part-2.htm

El tipo de campo blob en SQL Server 2000 es Image.

Cita:
Tomado del libro : Microsoft SQL Server 2000 Bible de Paul Nielsen, Editorial Wiley.
"SQL Server can store any binary object up to 2GB, which definitely qualifies as a binary large object (blob) in an image column"
Cita:
Tomado del link 2:

"SQL BOL (Books On Line) gives a good example of the three binary types:

-Use Binary when the sizes of the column data entries are consistent (and less than 8,000 bytes).

-Use varBinary when the sizes of the column data entries vary considerably (and are less than 8,000 bytes).

-Use varBinary(max) when the column data entries exceed 8,000 bytes.

-For SQL 2000, use the Image data type. However, be aware that Microsoft has stated the Image data type is for backwards compatibility only, and may be discontinued on a future version."
Te anexo una tabla del mencionado libro que define el campo blob Image.

Espero sea útil

Nelson.
Imágenes Adjuntas
Tipo de Archivo: jpg Sql Server 2000 Blob Data Types.jpg (35,7 KB, 3 visitas)
Responder Con Cita
  #16  
Antiguo 25-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo nlsgarcia efectivamente declarando el campo como image ya puedo grabar archivos en la base de datos con sql2000 muchas gracia por tu ayuda aun asi leere tus link para documentarme mejor
Responder Con Cita
  #17  
Antiguo 25-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Kurono,

Gracias por tus comentarios

Cuando puedas coloca en el post las rutinas de lectura y grabación del campo blob en SQL Server 2000 para que sirvan de ejemplo de como procesar este tipo de datos.

Nelson.
Responder Con Cita
  #18  
Antiguo 25-10-2012
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
el codigo que utilize fue el mismo que mencione al principio del hilo

Código Delphi [-]
// De archivo en disco a campo BLOB 
TBlobField(ADOTable1.FieldByName('pdf')).LoadFromFile('archivo.pdf'); 
 // De campo BLOB a archivo en disco 
TBlobField(ADOTable1.FieldByName('pdf')).SaveToFile('archivo.pdf');

este es un ejemplo de como lo utilize en mis codigo de pruebas

para guardar en la base de datos

Código Delphi [-]
 
begin
  try
     TBlobField(ADOTable1.FieldByName('archivos')).LoadFromFile(Open.FileName);
   finally
     ADOTable1.Post;
     ShowMessage('archivo guardado');
   end;
end;


y este es para guardar de la base de datos al disco

Código Delphi [-]
 
begin
  TBlobField(ADOTable1.FieldByName('archivos')).SaveToFile('C:\'+ DBEdit1.Text+'.exe');
  ShowMessage('archivo guardado');
end;

Última edición por kurono fecha: 25-10-2012 a las 21:36:00.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aprendiendo a guardar archivos soler Varios 6 05-12-2007 17:24:58
guardar archivos en mi aplicacion gulder API de Windows 2 15-06-2005 17:17:04
Guardar archivos AVI Albano SQL 0 30-05-2005 19:35:32
Guardar Archivos En A: Niko Varios 2 21-08-2004 21:37:56
Guardar archivos en campos repo Firebird e Interbase 1 22-02-2004 23:44:21


La franja horaria es GMT +2. Ahora son las 12:29:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi