Buenas Ecfisa.
Gracias por contestar
Sigo con el mismo problema.
Mi DB es SQLServer 2008 y mi delphi EX3.
Tengo un formulario sencillo con dos TDBEdit, un TDBimage, con datos del registro, un Edit donde pongo la referencia del artículo y dos botones, uno para buscar el artículo a través del parámetro REFPROVEEDOR y otro para cargar una imagen jpg en el TDBImage.
Hasta ahí todo bien hasta que ejecutamos la sentencia
Código Delphi
[-]
if (ClientDataSet1.ChangeCount > 0) then
ClientDataSet1.ApplyUpdates(-1);
que es donde da el error.
Adjunto código por si se ve algo extraño
Código Delphi
[-]
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXMSSQL, Data.FMTBcd,
Vcl.ExtCtrls, Vcl.DBCtrls, Data.DB, Data.SqlExpr, Datasnap.DBClient,
Datasnap.Provider, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtDlgs, jpeg;
type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
SQLTable2: TSQLTable;
DBImage1: TDBImage;
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
ClientDataSet1: TClientDataSet;
DataSetProvider1: TDataSetProvider;
Button1: TButton;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
OpenPictureDialog1: TOpenPictureDialog;
Button2: TButton;
SQLQuery1: TSQLQuery;
Edit1: TEdit;
SQLDataSet1: TSQLDataSet;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function ConvertJPG2BMP(FileName:String):TBitmap;
var
pic:TPicture;
begin
pic := TPicture.Create;
pic.LoadFromFile(FileName);
result:=TBitmap.create;
result.Assign(pic.Graphic);
pic.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
if (ANSIUpperCase(ExtractFileExt(OpenPictureDialog1.FileName)) = '.JPG')
or
(ANSIUpperCase(ExtractFileExt(OpenPictureDialog1.FileName)) = '.JPEG') then
begin
if not (ClientDataSet1.State = dsInsert) then
ClientDataSet1.Edit;
dbImage1.Picture.Bitmap := ConvertJPG2BMP(OpenPictureDialog1.FileName );
end
else
begin
if not (ClientDataSet1.State = dsInsert) then
ClientDataSet1.Edit;
dbImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
ClientDataSet1.Post;
if (ClientDataSet1.ChangeCount > 0) then
ClientDataSet1.ApplyUpdates(-1);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SQLQuery1.Close;
ClientDataSet1.Active:=false;
SQLQuery1.Params.ParamByName('REFPROVEEDOR').AsString:=UpperCase(Edit1.Text);
ClientDataSet1.Active:=true;
SQLQuery1.Open;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
SQLConnection1.AutoClone:=true;
end;
end.