谢谢
解决方案 »
- tabcontrol上按钮的图标如何更换,他是通过TStrings添加按钮的,看来是不会有imageindex的了!请各位大侠指点!
- 如何通过button让窗口不可移动?
- 程序出错,未找到原因,请教大家!
- 怎么在DELPHI 6 中调用COM+组件(急!解决问题另送200分!)
- 我没次调试程序都要输入数据库密码打开数据库,可以跳过这个登陆吗?
- 我为爱忧伤。。。
- 用了就不放?,内存怪现象请教高手?
- API函数调用,急!!!!!!!!!!!!1
- 请教如何动态SQL的语句?
- Quick Report 3.5 Professional for Delphi6安装后提示designintf.dcu找不到。
- 关于TIdHashMessageDigest5.
- 用delphi写了一个IOCP的例子,有个问题,一直无法解决啊。
unit Unit14;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, ComCtrls, ExtCtrls, DB, Grids, DBGrids, DBReportGrid,
ADODB, StdCtrls;type
TForm14 = class(TForm)
Panel1: TPanel;
StatusBar1: TStatusBar;
ADODataSet1: TADODataSet;
DataSource1: TDataSource;
Panel2: TPanel;
Label2: TLabel;
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label3: TLabel;
Button1: TButton;
DBGrid1: TDBGrid;
Label4: TLabel;
Label5: TLabel;
ADODataSet1DSDesigner: TStringField;
ADODataSet1DSDesigner2: TBCDField;
ADODataSet1DSDesigner3: TIntegerField;
Panel4: TPanel;
ADODataSet1DSDesigner4: TIntegerField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form14: TForm14;
procedure KSSR;implementationuses ConnectDM, DBRoutines,ExportTo;
procedure KSSR;
begin
if Form14=nil then
Form14:=TForm14.Create(Application)
else
Form14.Show;end;
{$R *.dfm}procedure TForm14.FormCreate(Sender: TObject);
var
aa: string[28] ;
bb: string[28] ;
cc: string[28] ;
Y, M, D: WORD;begin
aa:=DateToStr(Date);
bb:=copy(aa,1,5);
bb:=bb+'.20';
DecodeDate(Date(), Y, M, D);
if M>1 then
M:=M-1
else begin
Y:=Y-1;
M:=12;
end;
cc:=IntToStr(Y)+'.';
if M<10 then
cc:=cc+'0'+IntToStr(M)
else
cc:=cc+IntToStr(M);
cc:=cc+'.21';
DateTimePicker1.DateTime:=StrToDate(cc);
DateTimePicker2.DateTime:=StrToDate(bb);
Panel4.Caption:='说明:因数据量大,故计算时间较长';
//DateTimePicker1.DateTime:=Date ;
//DateTimePicker2.DateTime:=Date ;
end;
procedure TForm14.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADODataSet1.Close;
DataObject.qryHelper.Close;
DataObject.qryHelper1.Close;
Action:=caFree;
end;procedure TForm14.FormDestroy(Sender: TObject);
begin
Form14:=nil;
end;procedure TForm14.Button1Click(Sender: TObject);
var
Sum1:Double;
Sum2:Double;
Sum3:Double;
begin with ADODataSet1 do
begin
Close;
// ShowMessage(DateToStr(DateTimePicker1.Date));
CommandText:='Execute an_Manager1 :startdate, :enddate';
Parameters[0].Value:=DateTimePicker1.Date;
Parameters[1].Value:=DateTimePicker2.Date+1;
Open;
end;
with DataObject.qryHelper do
begin
Close;
SQL.Text:='select convert(decimal(12,2),sum(实付单价*数量)) from 门诊费用_head a join 门诊费用_data b on a.序号=b.序号 where 日期 between :startdate and :enddate ';
Parameters[0].Value:=DateTimePicker1.Date;
Parameters[1].Value:=DateTimePicker2.Date+1;
Open;
Sum1:=Fields[0].AsFloat;
Close;
end;
with DataObject.qryHelper1 do
begin
Close;
SQL.Text:='select convert(decimal(12,2),sum(单价*数量)) from 住院费用 where 日期 between :startdate and :enddate ';
Parameters[0].Value:=DateTimePicker1.Date;
Parameters[1].Value:=DateTimePicker2.Date+1;
Open;
Sum2:=Fields[0].AsFloat;
Close;
end;
TDBGridExport.Export_To_Excel(DBGrid1);
sum3:=Sum1+Sum2;
Panel4.Caption:='门诊收入:'+FloatToStr(Sum1)+' 住院收入:'+FloatToStr(Sum2)+' 总收入:'+FloatToStr(Sum3);end;end.
TDBGridExport.Export_To_Excel(DBGrid1);这句提示错误,请指点一下,谢谢
interface
uses
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, Db, DBGrids, Comobj, extctrls, comctrls, ActiveX;
type
TSpaceMark = (csComma, csSemicolon, csTab, csBlank, csEnter);
TDBGridExport = class(TComponent)
private
FDB_Grid: TDBGrid; {读取DBGrid的源}
FTxtFileName: string; {文本文件名}
FSpaceMark: TSpaceMark; {间隔符号}
FSpace_Ord: Integer; {间隔符号的Asc数值}
FTitle: string; {显示的标题}
FSheetName: string; {工作表标题}
FExcel_Handle: OleVariant; {Excel的句柄}
FWorkbook_Handle: OleVariant; {书签的句柄}
FShow_Progress: Boolean; {是否显示插入进度}
FProgress_Form: TForm; {进度窗体}
FRun_Excel_Form: TForm; {启动Excel提示窗口}
FProgressBar: TProgressBar; {进度条}
function Connect_Excel: Boolean; {启动Excel}
function New_Workbook: Boolean; {插入新的工作博}
function InsertData_To_Excel: Boolean; {插入数据}
procedure Create_ProgressForm(AOwner: TComponent); {创建进度显示窗口}
procedure Create_Run_Excel_Form(AOwner: TComponent); {创建启动Excel窗口}
//procedure SetSpaceMark(Value: TSpaceMark); {设置导出时的间隔符号}
protected
public
constructor Create(AOwner: TComponent); override; {新建}
destructor Destroy; override; {销毁}
function Export_To_Excel: Boolean; overload; {导出到Excel中}
function Export_To_Excel(DB_Grid: TDBGrid): Boolean; overload;
function Export_To_Txt(NewFile: Boolean = True): Boolean; overload; {导出到文本文件中}
function Export_To_Txt(FileName: string; NewFile: Boolean = True): Boolean; overload;
function Export_To_Txt(DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean; overload;
function Export_To_Txt(FileName: string; DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean; overload;
published
property DB_Grid: TDBGrid read FDB_Grid write FDB_Grid;
property Show_Progress: Boolean read FShow_Progress write FShow_Progress;
property TxtFileName: string read FTxtFileName write FTxtFileName;
// property SpaceMark: TSpaceMark read FSpaceMark write SetSpaceMark;
property Title: string read FTitle write FTitle;
property SheetName: string read FSheetName write FSheetName;
end; procedure Register;implementation procedure Register;begin
RegisterComponents( 'Stone', [TDBGridExport]);
end;
{-------------------------------------------------------------------------------}
{新建}
constructor TDBGridExport.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FShow_Progress := True;
FSpaceMark := csTab;
end;{销毁}
destructor TDBGridExport.Destroy;
begin
varClear(FExcel_Handle);
varClear(FWorkbook_Handle);
inherited Destroy;
end;
{===============================================================================}
{导出到文本文件中}
function TDBGridExport.Export_To_Txt(NewFile: Boolean = True): Boolean;
var
Txt: TStrings;
Tmp_Str,data_Str,Column_name: string;
i, j: Integer;
Data_Set: TDataSet;
book: pointer;
Before_Scroll, Afrer_Scroll: TDataSetNotifyEvent;
begin
Result := False;
if NewFile = True then
FTxtFileName := ' ';
if FTxtFileName = ' ' then
begin
with TSaveDialog.Create(nil) do
begin
Title := '请选择输出文件名 ';
DefaultExt := 'txt ';
Filter := '文本文件(*.Txt) |*.txt ';
Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofNoReadOnlyReturn, ofEnableSizing];
if Execute then
FTxtFileName := FileName;
Free;
if FTxtFileName = ' ' then {如果没有选中文件,则直接推出}
exit;
end; if FTxtFileName = ' ' then
begin
raise exception.Create( '没有指定输出文件 ');
Exit;
end;
end;
if FDB_Grid = nil then
raise exception.Create( '请输入DBGrid名称 ');
Txt := TStringList.Create;
try{显示插入进度}
if FShow_Progress = True then
begin
Create_ProgressForm(nil);
FProgress_Form.Show;
end;
{第一行,插入标题}
Tmp_Str := ' '; //FDB_Grid.Columns[0].Title.Caption;
for i := 1 to FDB_Grid.Columns.Count do
if FDB_Grid.Columns[i - 1].Visible = True then
Tmp_Str := Tmp_Str + FDB_Grid.Columns[i - 1].Title.Caption + Chr(FSpace_Ord);
Tmp_Str := Copy(Tmp_Str, 1, Length(Tmp_Str) - 1);
Txt.Add(Tmp_Str);
{插入DBGrid中的数据}
Data_Set := FDB_Grid.DataSource.DataSet;
{记忆当前位置并取消任何事件}
// new(book);
book := Data_Set.GetBook;
Data_Set.DisableControls;
Before_Scroll := Data_Set.BeforeScroll;
Afrer_Scroll := Data_Set.AfterScroll;
Data_Set.BeforeScroll := nil;
Data_Set.AfterScroll := nil;
if FShow_Progress = True then
begin
Data_Set.Last;
FProgress_Form.Refresh;
FProgressBar.Max := Data_Set.RecordCount;
end;
{插入DBGrid中的所有字段}
Data_Set.First;
j := 2;
while not Data_Set.Eof do
begin
if FShow_Progress = True then
FProgressBar.Position := j - 2;
Column_name := FDB_Grid.Columns[0].FieldName;
Tmp_Str := ' '; //Data_Set.FieldByName(Column_name).AsString;
for i := 1 to FDB_Grid.Columns.Count do
if FDB_Grid.Columns[i - 1].Visible = True then
begin
data_Str := FDB_Grid.Fields[i - 1].DisplayText;
Tmp_Str := Tmp_Str + data_Str + Chr(FSpace_Ord);
end;
Tmp_Str := Copy(Tmp_Str, 1, Length(Tmp_Str) - 1);
Txt.Add(Tmp_Str);
j := j + 1;
Data_Set.Next;
end;
{恢复原始事件以及标志位置}
Data_Set.GotoBook(book);
Data_Set.FreeBook(book);
// dispose(book);
Data_Set.EnableControls;
Data_Set.BeforeScroll := Before_Scroll;
Data_Set.AfterScroll := Afrer_Scroll;
{写到文件}
Txt.SaveToFile(FTxtFileName);
Result := True;
finally
Txt.Free;
if FShow_Progress = True then
begin
FProgress_Form.Free;
FProgress_Form := nil;
end;
end;
end;
function TDBGridExport.Export_To_Txt(FileName: string; NewFile: Boolean = True): Boolean;
begin
FTxtFileName := FileName;
Result := Export_To_Txt(NewFile);
end; function TDBGridExport.Export_To_Txt(DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean;
begin
FDB_Grid := DB_Grid;
Result := Export_To_Txt(NewFile);
end; function TDBGridExport.Export_To_Txt(FileName: string; DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean;
begin
FTxtFileName := FileName;
FDB_Grid := DB_Grid;
Result := Export_To_Txt(NewFile);
end;
interface
uses
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, Db, DBGrids, Comobj, extctrls, comctrls, ActiveX;
type
TSpaceMark = (csComma, csSemicolon, csTab, csBlank, csEnter);
TDBGridExport = class(TComponent)
private
FDB_Grid: TDBGrid; {读取DBGrid的源}
FTxtFileName: string; {文本文件名}
FSpaceMark: TSpaceMark; {间隔符号}
FSpace_Ord: Integer; {间隔符号的Asc数值}
FTitle: string; {显示的标题}
FSheetName: string; {工作表标题}
FExcel_Handle: OleVariant; {Excel的句柄}
FWorkbook_Handle: OleVariant; {书签的句柄}
FShow_Progress: Boolean; {是否显示插入进度}
FProgress_Form: TForm; {进度窗体}
FRun_Excel_Form: TForm; {启动Excel提示窗口}
FProgressBar: TProgressBar; {进度条}
function Connect_Excel: Boolean; {启动Excel}
function New_Workbook: Boolean; {插入新的工作博}
function InsertData_To_Excel: Boolean; {插入数据}
procedure Create_ProgressForm(AOwner: TComponent); {创建进度显示窗口}
procedure Create_Run_Excel_Form(AOwner: TComponent); {创建启动Excel窗口}
//procedure SetSpaceMark(Value: TSpaceMark); {设置导出时的间隔符号}
protected
public
constructor Create(AOwner: TComponent); override; {新建}
destructor Destroy; override; {销毁}
function Export_To_Excel: Boolean; overload; {导出到Excel中}
function Export_To_Excel(DB_Grid: TDBGrid): Boolean; overload;
function Export_To_Txt(NewFile: Boolean = True): Boolean; overload; {导出到文本文件中}
function Export_To_Txt(FileName: string; NewFile: Boolean = True): Boolean; overload;
function Export_To_Txt(DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean; overload;
function Export_To_Txt(FileName: string; DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean; overload;
published
property DB_Grid: TDBGrid read FDB_Grid write FDB_Grid;
property Show_Progress: Boolean read FShow_Progress write FShow_Progress;
property TxtFileName: string read FTxtFileName write FTxtFileName;
// property SpaceMark: TSpaceMark read FSpaceMark write SetSpaceMark;
property Title: string read FTitle write FTitle;
property SheetName: string read FSheetName write FSheetName;
end; procedure Register;implementation procedure Register;begin
RegisterComponents( 'Stone', [TDBGridExport]);
end;
{-------------------------------------------------------------------------------}
{新建}
constructor TDBGridExport.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FShow_Progress := True;
FSpaceMark := csTab;
end;{销毁}
destructor TDBGridExport.Destroy;
begin
varClear(FExcel_Handle);
varClear(FWorkbook_Handle);
inherited Destroy;
end;
{===============================================================================}
{导出到文本文件中}
function TDBGridExport.Export_To_Txt(NewFile: Boolean = True): Boolean;
var
Txt: TStrings;
Tmp_Str,data_Str,Column_name: string;
i, j: Integer;
Data_Set: TDataSet;
book: pointer;
Before_Scroll, Afrer_Scroll: TDataSetNotifyEvent;
begin
Result := False;
if NewFile = True then
FTxtFileName := ' ';
if FTxtFileName = ' ' then
begin
with TSaveDialog.Create(nil) do
begin
Title := '请选择输出文件名 ';
DefaultExt := 'txt ';
Filter := '文本文件(*.Txt) |*.txt ';
Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofNoReadOnlyReturn, ofEnableSizing];
if Execute then
FTxtFileName := FileName;
Free;
if FTxtFileName = ' ' then {如果没有选中文件,则直接推出}
exit;
end; if FTxtFileName = ' ' then
begin
raise exception.Create( '没有指定输出文件 ');
Exit;
end;
end;
if FDB_Grid = nil then
raise exception.Create( '请输入DBGrid名称 ');
Txt := TStringList.Create;
try{显示插入进度}
if FShow_Progress = True then
begin
Create_ProgressForm(nil);
FProgress_Form.Show;
end;
{第一行,插入标题}
Tmp_Str := ' '; //FDB_Grid.Columns[0].Title.Caption;
for i := 1 to FDB_Grid.Columns.Count do
if FDB_Grid.Columns[i - 1].Visible = True then
Tmp_Str := Tmp_Str + FDB_Grid.Columns[i - 1].Title.Caption + Chr(FSpace_Ord);
Tmp_Str := Copy(Tmp_Str, 1, Length(Tmp_Str) - 1);
Txt.Add(Tmp_Str);
{插入DBGrid中的数据}
Data_Set := FDB_Grid.DataSource.DataSet;
{记忆当前位置并取消任何事件}
// new(book);
book := Data_Set.GetBook;
Data_Set.DisableControls;
Before_Scroll := Data_Set.BeforeScroll;
Afrer_Scroll := Data_Set.AfterScroll;
Data_Set.BeforeScroll := nil;
Data_Set.AfterScroll := nil;
if FShow_Progress = True then
begin
Data_Set.Last;
FProgress_Form.Refresh;
FProgressBar.Max := Data_Set.RecordCount;
end;
{插入DBGrid中的所有字段}
Data_Set.First;
j := 2;
while not Data_Set.Eof do
begin
if FShow_Progress = True then
FProgressBar.Position := j - 2;
Column_name := FDB_Grid.Columns[0].FieldName;
Tmp_Str := ' '; //Data_Set.FieldByName(Column_name).AsString;
for i := 1 to FDB_Grid.Columns.Count do
if FDB_Grid.Columns[i - 1].Visible = True then
begin
data_Str := FDB_Grid.Fields[i - 1].DisplayText;
Tmp_Str := Tmp_Str + data_Str + Chr(FSpace_Ord);
end;
Tmp_Str := Copy(Tmp_Str, 1, Length(Tmp_Str) - 1);
Txt.Add(Tmp_Str);
j := j + 1;
Data_Set.Next;
end;
{恢复原始事件以及标志位置}
Data_Set.GotoBook(book);
Data_Set.FreeBook(book);
// dispose(book);
Data_Set.EnableControls;
Data_Set.BeforeScroll := Before_Scroll;
Data_Set.AfterScroll := Afrer_Scroll;
{写到文件}
Txt.SaveToFile(FTxtFileName);
Result := True;
finally
Txt.Free;
if FShow_Progress = True then
begin
FProgress_Form.Free;
FProgress_Form := nil;
end;
end;
end;
function TDBGridExport.Export_To_Txt(FileName: string; NewFile: Boolean = True): Boolean;
begin
FTxtFileName := FileName;
Result := Export_To_Txt(NewFile);
end; function TDBGridExport.Export_To_Txt(DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean;
begin
FDB_Grid := DB_Grid;
Result := Export_To_Txt(NewFile);
end; function TDBGridExport.Export_To_Txt(FileName: string; DB_Grid: TDBGrid; NewFile: Boolean = True): Boolean;
begin
FTxtFileName := FileName;
FDB_Grid := DB_Grid;
Result := Export_To_Txt(NewFile);
end;