mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2026-03-13 09:24:25 +08:00
154 lines
4.7 KiB
ObjectPascal
154 lines
4.7 KiB
ObjectPascal
unit insertfiles_progress;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ComCtrls, ExtCtrls, Db;
|
|
|
|
type
|
|
TfrmInsertFilesProgress = class(TForm)
|
|
ProgressBar1: TProgressBar;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Button1: TButton;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
Timer1: TTimer;
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure ProcessFiles(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
canceled : Boolean;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
frmInsertFilesProgress: TfrmInsertFilesProgress;
|
|
|
|
|
|
implementation
|
|
|
|
uses insertfiles, main, childwin, helpers;
|
|
|
|
|
|
{$R *.DFM}
|
|
|
|
procedure TfrmInsertFilesProgress.Button1Click(Sender: TObject);
|
|
begin
|
|
canceled := true;
|
|
close;
|
|
end;
|
|
|
|
procedure TfrmInsertFilesProgress.ProcessFiles(Sender: TObject);
|
|
|
|
procedure die(msg : String);
|
|
begin
|
|
Screen.Cursor := crDefault;
|
|
raise exception.Create(msg);
|
|
end;
|
|
|
|
var
|
|
i,j: Integer;
|
|
Size: DWORD;
|
|
value, filename : String;
|
|
y,m,d,h,mi,s,ms : Word;
|
|
FileStream : TFileStream;
|
|
begin
|
|
Timer1.Enabled := false;
|
|
screen.Cursor := crHourglass;
|
|
ProgressBar1.Max := frmInsertFiles.ListViewFiles.Items.Count;
|
|
|
|
TRY
|
|
|
|
with frmInsertFiles do begin
|
|
for i:=0 to ListViewFiles.Items.Count-1 do
|
|
begin
|
|
if self.canceled then break;
|
|
self.Label4.Caption := inttostr(i+1)+' of ' + inttostr(ListViewFiles.Items.Count);
|
|
filename := ListViewFiles.Items[i].Caption;
|
|
self.Label5.Caption := mince(filename, 30) + ' ('+ListViewFiles.Items[i].SubItems[0]+' KB)';
|
|
Application.ProcessMessages;
|
|
with TMDIChild(Mainform.ActiveMDIChild) do
|
|
begin
|
|
ZQuery3.ParamCheck := true;
|
|
ZQuery3.SQL.Clear;
|
|
ZQuery3.SQL.Add( 'INSERT INTO '+mainform.mask(ComboBoxDBs.Text)+'.'+mainform.mask(ComboBoxTables.Text) +
|
|
' (' + mainform.mask(ComboBoxColumns.Text) );
|
|
self.Label6.caption := 'Inserting data ...';
|
|
Application.ProcessMessages;
|
|
for j:=0 to length(cols)-1 do
|
|
begin
|
|
if cols[j].Name = ComboBoxColumns.Text then
|
|
continue;
|
|
ZQuery3.SQL.Add( ', ' + mainform.mask(cols[j].Name) );
|
|
end;
|
|
ZQuery3.SQL.Add( ') VALUES (:STREAM,' );
|
|
|
|
for j:=0 to length(cols)-1 do
|
|
begin
|
|
if cols[j].Name = ComboBoxColumns.Text then
|
|
continue;
|
|
Value := cols[j].Value;
|
|
if pos('%', Value) > 0 then
|
|
begin
|
|
Value := stringreplace(Value, '%filesize%', inttostr(size), [rfReplaceAll]);
|
|
Value := stringreplace(Value, '%filename%', ExtractFileName(filename), [rfReplaceAll]);
|
|
Value := stringreplace(Value, '%filepath%', ExtractFilePath(filename), [rfReplaceAll]);
|
|
DecodeDate(FileDateToDateTime(FileAge(filename)), y, m, d);
|
|
DecodeTime(FileDateToDateTime(FileAge(filename)), h, mi, s, ms);
|
|
Value := stringreplace(Value, '%filedate%', Format('%.4d-%.2d-%.2d', [y,m,d]), [rfReplaceAll]);
|
|
Value := stringreplace(Value, '%filedatetime%', Format('%.4d-%.2d-%.2d %.2d:%.2d:%.2d', [y,m,d,h,mi,s]), [rfReplaceAll]);
|
|
Value := stringreplace(Value, '%filetime%', Format('%.2d:%.2d:%.2d', [h,mi,s]), [rfReplaceAll]);
|
|
end;
|
|
if cols[j].Quote then
|
|
Value := '"' + escape_string(Value) + '"';
|
|
ZQuery3.SQL.Add( Value );
|
|
end;
|
|
ZQuery3.SQL.Add( ')' );
|
|
try
|
|
self.Label6.caption := 'Reading file ...';
|
|
Application.ProcessMessages;
|
|
FileStream := TFileStream.Create( filename, fmShareDenyWrite );
|
|
ZQuery3.Params.Clear;
|
|
ZQuery3.Params.CreateParam( ftBlob, 'STREAM', ptInput );
|
|
ZQuery3.ParamByName('STREAM').LoadfromStream( FileStream, ftBlob );
|
|
except
|
|
FileStream.Free;
|
|
MessageDlg( 'Error reading file:'#13#10+filename, mtError, [mbOK], 0 );
|
|
break;
|
|
end;
|
|
ZQuery3.ExecSQL;
|
|
self.Label6.caption := 'Freeing memory ...';
|
|
Application.ProcessMessages;
|
|
FileStream.Free;
|
|
end;
|
|
ProgressBar1.StepIt;
|
|
Application.ProcessMessages;
|
|
end;
|
|
end;
|
|
|
|
FINALLY
|
|
TMDIChild(Mainform.ActiveMDIChild).ZQuery3.ParamCheck := false;
|
|
screen.Cursor := crDefault;
|
|
close;
|
|
END;
|
|
end;
|
|
|
|
procedure TfrmInsertFilesProgress.FormShow(Sender: TObject);
|
|
begin
|
|
ProgressBar1.Position := 0;
|
|
Label4.Caption := '';
|
|
Label5.Caption := '';
|
|
Label6.Caption := '';
|
|
Canceled := false;
|
|
Timer1.Enabled := true;
|
|
end;
|
|
|
|
|
|
end.
|