Ver Mensaje Individual
  #5  
Antiguo 07-06-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Prueba quitando Active. Si no me equivoco esto es una función que devuelve si el query está ejecutado o no.
Por otro lado, utiliza parámetros siempre que puedas. Evita un montón de errores (por ejemplo si meten una comilla simple en la descripción.
Además es mucho mas facil leer el código.

Por otro lado, ¿cuál es el error?
  • Crea un registro con el valor de IMAGEN nulo.
  • Crea un registro con el valor de IMAGEN erróneo/cortado.
  • Da un error al ejecutar el Query ¿Cúal?

Código Delphi [-]
// Mostramos el fomulario y lo ubicamos
Frm_Producto.Visible := true;
Frm_Producto.Show;

// Insertamos imagen
MS := TMemoryStream.Create;
try
    // Cargo imagen en un Stream desde un archivo
    MS.LoadFromFile(D_Img.FileName);
    
    // Ejecuta la consulta
    with DataModuleLACM.UniQuery1 do
    begin
        sql.Clear;
        sql.Add(' INSERT INTO CM_PRODUCTO ( ');
        sql.Add(' IMAGEN, BARCODE, DESCRIPCION, INV_MIN, CAJA, UND, F_CREAR_PROD, ID_CATG, ID_MARCA, ESTADO_PROD) ');
        sql.Add(' VALUES ( ');
        sql.Add(' :IMAGEN, :BARCODE, ESCRIPCION, :INV_MIN, :CAJA, :UND, :F_CREAR_PROD, :ID_CATG, :ID_MARCA, :ESTADO_PROD) ');

        // El parametro IMAGEN se carga de manera especial desde un stream
        ParamByName('IMAGEN').LoadFromStream(MS, ftGraphic);

        ParamByName('BARCODE').AsString := EdtCod_Barra.Text;
        ParamByName('DESCRIPCION').AsString := EdtDescripcion.Text;
        ParamByName('INV_MIN').AsString := EdtInve_Min.Text;
        ParamByName('CAJA').AsString := EdtCaja.Text;
        ParamByName('UND').AsString := EdtUnd.Text;
        ParamByName('F_CREAR_PROD').AsString := EdtFecha.Text;
        ParamByName('ID_CATG').AsString := DBEdt_Categoria_id.Text;
        ParamByName('ID_MARCA').AsString := DBEdt_Marca_id.Text;
        ParamByName('ESTADO_PROD').AsString := 'Activo';
        // Active; Quita esto
        ExecSQL;
        Close;
    end;
finally
    MS.Free;
free;
Responder Con Cita