[sincronización de la base de datos delphi] Operación de base de datos universal de Delphi

  Muchas personas se quejan de que Delphi no proporciona un control que pueda poner datos arbitrarios en la base de datos. Aunque no es difícil implementarlo con código, es más conveniente tener un control. Esta vez finalmente me tomé el tiempo para hacer ese control. Puedes arrastrar y soltar directamente. Admite la escritura de cualquier tipo de datos en la base de datos, también se puede leer desde la base de datos para transmitir o guardar directamente como un archivo. Además, agregué algo de procesamiento de imágenes de uso común, guardar imágenes en formato jpg o gif es muy conveniente y se puede mostrar directamente en la imagen.

  unidad RaDBOLE;

  interfaz

  usos

  SysUtils, Clases, DB, DBTables, JPEG, ExtCtrls, GIFCtrl;

  tipo

  TImageType = (itBMP, itJPG, itGIF, itOther);

  TOnSaveData = procedimiento (remitente: TObject) del objeto;

  TOnLoadData = procedimiento (remitente: TObject) del objeto;

  TOnShowImage = procedimiento (remitente: TObject; ImageType: TImageType) del objeto;

  tipo

  TRaDBOLE = clase (TComponent)

  privado

  fDataSet: TDataSource;

  fDataField: string;

  fImage: TImage;

  fGifImage: TRxGIFAnimator;

  fOnSaveData: TOnSaveData;

  fOnLoadData: TOnLoadData;

  fOnShowImage: TOnShowImage;

  protegido

  público

  constructor Create (AOwner: TComponent); anular;

  {Guardar en la base de datos}

  función SaveToDatabase (AFileName: string): boolean;

  {Agregar a la base de datos}

  función AppendToDatabase (AFileName: string): boolean;

  {Leer desde la base de datos para transmitir}

  función LoadToStream (var AStream: TStream): boolean;

  {Leer de la base de datos al archivo}

  función LoadToFile (AFileName: string): boolean;

  {Leer foto}

  procedimiento GetImage;

  publicado

  propiedad DataSet: TDataSource leer fDataSet escribir fDataSet;

  propiedad DataField: cadena de lectura fDataField escribir fDataField;

  Imagen de la propiedad: TImage read fImage write fImage;

  propiedad GifImage: TRxGIFAnimator lee fGifImage escribe fGifImage;

  propiedad OnSaveData: TOnSaveData lee fOnSaveData escribe fOnSaveData;

  propiedad OnLoadData: TOnLoadData lee fOnLoadData escribe fOnLoadData;

  propiedad OnShowImage: TOnShowImage leer fOnShowImage escribir fOnShowImage;

  fin;

  procedimiento de registro;

  implementación

  procedimiento de registro;

  empezar

  RegisterComponents ('Componentes de Rarnu', [TRaDBOLE]);

  fin;

  {TRaDBOLE}

  función TRaDBOLE.AppendToDatabase (AFileName: string): boolean;

  era

  mm: tmemorystream;

  empezar

  resultado: = verdadero;

  mm: = tmemorystream.Create;

  mm.LoadFromFile (AFileName);

  mm.Posición: = 0;

  tratar

  fDataSet.DataSet.Append;

  tblobfield (fDataSet.DataSet.FieldByName (fDataField)). LoadFromStream (mm);

  fDataSet.DataSet.Post;

  excepto

  resultado: = falso;

  fin;

  mm libre;

  si asignado (OnSaveData) entonces

  OnSaveData (Self);

  fin;

  constructor TRaDBOLE.Create (AOwner: TComponent);

  empezar

  Crear heredado (AOwner);

  fDataSet: = nil;

  fDataField: = '';

  fImage: = nil;

  fin;

  procedimiento TRaDBOLE.GetImage;

  era

  ww: tmemorystream;

  JPEG: TJPEGImage;

  IT: TImageType;

  empezar

  si fImage = nil entonces Salir;

  ww: = tmemorystream.Create;

  tblobfield (fDataSet.DataSet.FieldByName (fDataField)). SaveToStream (ww);

  tratar

  fImage.Picture.Assign (fDataSet.DataSet.FieldByName (fDataField));

  IT: = itBMP;

  excepto

  tratar

  JPEG: = TJPEGImage.Create;

  JPEG.Assign (fDataSet.DataSet.FieldByName (fDataField));

  fImage.Picture.Assign (JPEG);

  IT: = itJPG;

  excepto

  tratar

  si fGifImage = nil entonces Salir;

  fGifImage.Image.Assign (fDataSet.DataSet.FieldByName (fDataField));

  IT: = itGIF;

  excepto

  IT: = itOther;

  fin;

  fin;

  fin;

  //fImage.Picture.Graphic.LoadFromStream(ww);

  ww.Free;

  si asignado (OnShowImage) entonces

  OnShowImage (Self, IT);

  fin;

  función TRaDBOLE.LoadToFile (AFileName: string): boolean;

  era

  tt: tmemorystream;

  empezar

  resultado: = verdadero;

  tt: = tmemorystream.Create;

  tratar

  tblobfield (fDataSet.DataSet.FieldByName (fDataField)). SaveToStream (tt);

  posición tt: = 0;

  tt.SaveToFile (AFileName);

  excepto

  resultado: = falso;

  fin;

  tt.Free;

  si asignado (OnLoadData) entonces

  OnLoadData (Self);

  fin;

  función TRaDBOLE.LoadToStream (var AStream: TStream): boolean;

  era

  tt: tmemorystream;

  empezar

  resultado: = verdadero;

  tt: = tmemorystream.Create;

  tratar

  tblobfield (fDataSet.DataSet.FieldByName (fDataField)). SaveToStream (tt);

  posición tt: = 0;

  AStream: = tt;

  excepto

  resultado: = falso;

  fin;

  tt.Free;

  si asignado (OnLoadData) entonces

  OnLoadData (Self);

  fin;

  función TRaDBOLE.SaveToDatabase (AFileName: string): boolean;

  era

  mm: tmemorystream;

  empezar

  resultado: = verdadero;

  mm: = tmemorystream.Create;

  mm.LoadFromFile (AFileName);

  mm.Posición: = 0;

  tratar

  fDataSet.Edit;

  tblobfield (fDataSet.DataSet.FieldByName (fDataField)). LoadFromStream (mm);

  fDataSet.DataSet.Post;

  excepto

  resultado: = falso;

  fin;

  mm libre;

  si asignado (OnSaveData) entonces

  OnSaveData (Self);

  fin;

  fin.

  ---------------------

  Autor: brisa de la rima

  Fuente: CSDN

  Original: https://blog.csdn.net/ttpage/article/details/9161695

  Declaración de derechos de autor: Este artículo es un artículo original de blogger, adjunte un enlace a la publicación del blog al volver a imprimir.

 Software de sincronización de bases de datos

Supongo que te gusta

Origin www.cnblogs.com/sqlserver-mysql/p/12759851.html
Recomendado
Clasificación