Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema al Guarda el Valor del Campo Tipo BLOB (https://www.clubdelphi.com/foros/showthread.php?t=66731)

Efren2006 09-03-2010 19:49:15

Problema al Guarda el Valor del Campo Tipo BLOB
 
Explico Detalledamente el problema:

Tengo una tabla que tiene un Campo BLOB, en el mismo deseo guardar los datos de un Archivo, hago todo lo que normalmente hago para hacerlo todo funciona bien el unico problema es que NO GUARDA el valor en la BD.

Plataforma:
DELPHI 2009
FIREBIRD 2.1
COMPONENTES IBX

Describo la Rutina del programa, incluso estan en comentario varias formas que probe:

Código Delphi [-]
procedure TBioFormatos.wwDBGrid2IButtonClick(Sender: TObject);
Var
  Archivo:AnsiString;
  Campo,ArcMemo:TStream;
  Numero:Integer;
  Stream: TMemoryStream;
  FileData : TStringList;
begin
  inherited;
  if Formatos.RecordCount>0 then
     if Application.MessageBox('Desea Sincronizar este Reporte en la Base de Datos..?','VALIDAR',MB_YESNO+MB_ICONEXCLAMATION)=IdYes Then
        Begin
        Try
          Screen.Cursor:=crHourGlass;
          LockWindowUpdate(Handle);
          Archivo:=Global.RutaReporte+TRIM(FormatosNOMARCHI.Value)+'.fr3';
          if FileExists(Archivo) Then
             Begin
             Diseno.Close;
             Diseno.Open;
             if Diseno.RecordCount>0 then
                Begin
                //fileData := TStringList.Create;
                //fileData.LoadFromFile(Archivo);
                //Diseno.Edit;
                //TBlobField(CAMPO).LoadFromFile(Archivo);
                //Stream := TMemoryStream.Create;
                //fileData.SaveToStream(Stream);
                //Stream.Position := 0;
                // Cargar el campo Blob desde la corriente
                //TBlobField(Diseno.FieldByName('DISENO')).LoadFromStream(Stream);
                //TBlobField(Diseno.FieldByName ('DISENO')));
                //Numero:=Length(DisenoDISENO.Value);
                //Showmessage(DisenoDISENO.Value;
                //Campo:=Diseno.CreateBlobStream(Diseno.FieldByName ('DISENO'),bmWrite);
                //Campo.CopyFrom(ArcMemo,ArcMemo.Size);
                Diseno.Edit;
                DisenoDISENO.LoadFromFile(Archivo);
                Diseno.Post;
                Diseno.Transaction.CommitRetaining;
                End;
             End;
        Finally
          Campo.Free;
          ArcMemo.Free;
          fileData.Free;
          Stream.Free;
          Diseno.Close;
          Screen.Cursor:=crArrow;
          LockWindowUpdate(0);
          ShowMessage('El Archivo Fue Sincronizado ... Verifique ');
        End;
        End;
end;

Casimiro Notevi 09-03-2010 21:28:58

No lo he mirado muy a fondo, pero así a simple vista creo que se te ha olvidado el .append o el .insert, salvo que sólo exista un registro en la tabla y siempre edites ese primer registro.
Código:

Diseno.Close;
Diseno.Open;
if Diseno.RecordCount>0 then
Begin
 Diseno.Edit;
 DisenoDISENO.LoadFromFile(Archivo);
 Diseno.Post;
 Diseno.Transaction.CommitRetaining;
end;


Efren2006 09-03-2010 22:59:58

Disculpen


Ya resolvi el problema, al parecer tenia un Problema con el componente TIBDataset , y por ello no estaba actualizando bien... De todas maneras gracias por su aporte.

jhonny 09-03-2010 23:02:54

Cita:

Empezado por Efren2006 (Mensaje 356275)
Disculpen


Ya resolvi el problema, al parecer tenia un Problema con el componente TIBDataset , y por ello no estaba actualizando bien... De todas maneras gracias por su aporte.

¿Que problema tenias en dicho DataSet?, ¿Como lo solucionaste?, sería interesante saberlo, por si en el futuro alguien mas tiene el mismo problema ;).

Efren2006 10-03-2010 03:50:24

Cita:

Empezado por jhonny (Mensaje 356277)
¿Que problema tenias en dicho DataSet?, ¿Como lo solucionaste?, sería interesante saberlo, por si en el futuro alguien mas tiene el mismo problema ;).

Amigo

Simplemente las Secuencias de InsertSQL y ModifiSQL,, no estaban actualizadas correctamente..

Delfino 10-03-2010 13:34:15

Cita:

Empezado por Efren2006 (Mensaje 356338)
Simplemente las Secuencias de InsertSQL y ModifiSQL,, no estaban actualizadas correctamente..

Eso es muy comun ya q cada vez q cambia la estructura de la tabla hay q generarlas de nuevo..


La franja horaria es GMT +2. Ahora son las 06:14:11.

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