到入到sqlserver.
procedure Tbrowse.N14Click(Sender: TObject);
var xlapplication,sheet:variant;
I,row,i1,ls_curID:integer;
col,k:integer;
qry_temp:Tquery;
fields:array[0..25] of string;
standard_id,tmp_position:string;
formProgress1:TformProgress1;
is_sqlstring,ls_allfield:string;
beginqry_temp:=Tquery.Create(nil);
qry_temp.databasename:='Zjdb';
try
with Qry_temp do
begin
Close;
SQL.Clear;
SQL.Add('select max(校友编号) As maxID from personal_info');
Open;
First;
end;
ls_allfield:=GetTableFields('personal_info');
ls_curID:=strtoint(Trim(Qry_temp.FieldByName('maxID').AsString));
with query_photo do
begin
close;
sql.clear;
sql.add('select 校友编号 from person_photo');
open;
end;
if opendialog2.Execute then //readxls
begin
try
xlapplication:=createoleobject('Excel.application');
xlapplication.visible:=false;
except
application.messagebox('您的系统没有安装Excel,请安装后再使用本功能!','读取文件失败',mb_iconerror+mb_ok);
xlapplication.free;
abort;
end;
try
try
xlapplication.workbooks.open(opendialog2.FileName);
except
application.MessageBox('打开文件失败!','',mb_iconerror+mb_ok);
end;
if InputQuery('输入框', '请输入Excel工作表所在页数 ',tmp_position)=false then
exit
else
begin
sheet:=xlapplication.workbooks[1].worksheets[strtoint(tmp_position)];
if trim(VarAsType(sheet.cells[1,1],varstring))<>'校友编号' then
begin
MessageBox(Application.Handle,'第一行必须为校友编号!','系统提示',MB_ICONINFORMATION or MB_OK);
abort;
end;
col:=sheet.usedRange.columns.count;
is_sqlstring:='';
for k:=1 to col do
begin
fields[k-1]:=trim(VarAsType(sheet.cells[1,k],varstring));
is_sqlstring:=is_sqlstring+','+fields[k-1];
end;
is_sqlstring:=Copy(is_sqlstring,2,Length(is_sqlstring));
/////////////判断Excel表中的字段名是否正确
for K:=1 to col do
begin
if pos(fields[k-1],ls_allfield)=0 then
begin
showmessage('您输入的字段名:'+fields[k-1]+'. 不存在,请检查!');
abort;
end;
end;
//////////////////////////////////////////
with query_person do
begin
close;
sql.clear;
sql.add('select '+ is_sqlstring+' from personal_info');
//showmessage(sql.text);
open;
end;
I := sheet.usedRange.rows.count;
Application.CreateForm(Tformprogress1, formprogress1);
formprogress1.show;
row:=2;
showmessage(VarAsType(sheet.cells[2,1],varstring));
if ls_curID<strtoint(VarAsType(sheet.cells[2,1],varstring)) then
begin
while VarAsType(sheet.cells[row,1],varstring)<>'' do
begin
// 如果编号没有重复,则提交到数据库
standard_id:=copy('00000000',1,8-length(trim(VarAsType(sheet.cells[row,1],varstring))))+VarAsType(sheet.cells[row,1],varstring);
query_person.Insert;
query_photo.Insert;
query_person.FieldByName('校友编号').asstring:=standard_id;
query_photo.FieldByName('校友编号').asstring:=standard_id;
for k:=2 to col do
query_person.fieldbyname(fields[k-1]).asstring:=trim(VarAsType(sheet.cells[row,k],varstring));
formProgress1.ProgressBar.Position:=Trunc((row*100)/I);
inc(row);
formProgress1.Refresh;
end;
query_person.ApplyUpdates;
query_photo.ApplyUpdates;
formProgress1.hide;
formProgress1.Free;
MessageBox(Application.Handle,'数据导入完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
end
else
begin
showmessage('您输入最小的校友编号必须大于'+inttostr(ls_curid)+'!');
exit;
end;
end;
finally
xlapplication.displayalerts:=false;
xlapplication.workbooks.close;
xlapplication.quit;
end;
end;
finally
qry_temp.Destroy;
end;
end;
procedure Tbrowse.N14Click(Sender: TObject);
var xlapplication,sheet:variant;
I,row,i1,ls_curID:integer;
col,k:integer;
qry_temp:Tquery;
fields:array[0..25] of string;
standard_id,tmp_position:string;
formProgress1:TformProgress1;
is_sqlstring,ls_allfield:string;
beginqry_temp:=Tquery.Create(nil);
qry_temp.databasename:='Zjdb';
try
with Qry_temp do
begin
Close;
SQL.Clear;
SQL.Add('select max(校友编号) As maxID from personal_info');
Open;
First;
end;
ls_allfield:=GetTableFields('personal_info');
ls_curID:=strtoint(Trim(Qry_temp.FieldByName('maxID').AsString));
with query_photo do
begin
close;
sql.clear;
sql.add('select 校友编号 from person_photo');
open;
end;
if opendialog2.Execute then //readxls
begin
try
xlapplication:=createoleobject('Excel.application');
xlapplication.visible:=false;
except
application.messagebox('您的系统没有安装Excel,请安装后再使用本功能!','读取文件失败',mb_iconerror+mb_ok);
xlapplication.free;
abort;
end;
try
try
xlapplication.workbooks.open(opendialog2.FileName);
except
application.MessageBox('打开文件失败!','',mb_iconerror+mb_ok);
end;
if InputQuery('输入框', '请输入Excel工作表所在页数 ',tmp_position)=false then
exit
else
begin
sheet:=xlapplication.workbooks[1].worksheets[strtoint(tmp_position)];
if trim(VarAsType(sheet.cells[1,1],varstring))<>'校友编号' then
begin
MessageBox(Application.Handle,'第一行必须为校友编号!','系统提示',MB_ICONINFORMATION or MB_OK);
abort;
end;
col:=sheet.usedRange.columns.count;
is_sqlstring:='';
for k:=1 to col do
begin
fields[k-1]:=trim(VarAsType(sheet.cells[1,k],varstring));
is_sqlstring:=is_sqlstring+','+fields[k-1];
end;
is_sqlstring:=Copy(is_sqlstring,2,Length(is_sqlstring));
/////////////判断Excel表中的字段名是否正确
for K:=1 to col do
begin
if pos(fields[k-1],ls_allfield)=0 then
begin
showmessage('您输入的字段名:'+fields[k-1]+'. 不存在,请检查!');
abort;
end;
end;
//////////////////////////////////////////
with query_person do
begin
close;
sql.clear;
sql.add('select '+ is_sqlstring+' from personal_info');
//showmessage(sql.text);
open;
end;
I := sheet.usedRange.rows.count;
Application.CreateForm(Tformprogress1, formprogress1);
formprogress1.show;
row:=2;
showmessage(VarAsType(sheet.cells[2,1],varstring));
if ls_curID<strtoint(VarAsType(sheet.cells[2,1],varstring)) then
begin
while VarAsType(sheet.cells[row,1],varstring)<>'' do
begin
// 如果编号没有重复,则提交到数据库
standard_id:=copy('00000000',1,8-length(trim(VarAsType(sheet.cells[row,1],varstring))))+VarAsType(sheet.cells[row,1],varstring);
query_person.Insert;
query_photo.Insert;
query_person.FieldByName('校友编号').asstring:=standard_id;
query_photo.FieldByName('校友编号').asstring:=standard_id;
for k:=2 to col do
query_person.fieldbyname(fields[k-1]).asstring:=trim(VarAsType(sheet.cells[row,k],varstring));
formProgress1.ProgressBar.Position:=Trunc((row*100)/I);
inc(row);
formProgress1.Refresh;
end;
query_person.ApplyUpdates;
query_photo.ApplyUpdates;
formProgress1.hide;
formProgress1.Free;
MessageBox(Application.Handle,'数据导入完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
end
else
begin
showmessage('您输入最小的校友编号必须大于'+inttostr(ls_curid)+'!');
exit;
end;
end;
finally
xlapplication.displayalerts:=false;
xlapplication.workbooks.close;
xlapplication.quit;
end;
end;
finally
qry_temp.Destroy;
end;
end;
解决方案 »
- 为什么窗体的keyPress事件中下列代码不执行呢?
- 求:帮忙修改局域传输文件程序的代码.
- Delphi7中的TXMLDocument到底行不行啊!大伙进来看看!
- 动态增加菜单问题
- 使用ADODataSet实现查询时遇到的问题!
- 如何取得一个运行时的托盘程序中的图标?该程序是外部程序.
- 我在用ActiveX的TShockwaveFlash的时候,当改变窗体大小的时候,TShockwaveFlash却不能………
- 一个防火墙问题
- 我用delphi连pb的数据库,怎样使用delphi或pb来完成odbc的自动注册
- mts环境,将clientdataset的fetchondemand 属性改为true,packetrecords不等于-1,为什么仍不能实现无状态分段取数?
- 日期相减
- 最后20分!!!!!!怎么样做很多控件的赋值????
USE master
Declare @a char(40)
set @a='D:\备份目录\备份文件'+right(Datename(dw,GetDate()),1)
EXEC sp_addumpdevice 'disk', MyNwind_ss1,@aBACKUP DATABASE 数据库名称 TO MyNwind_ss1 With Init
EXEC sp_DropDevice MyNwind_ss1
用户密码用BINARY数据类型或自己加密!!
DECLARE @DATE VARCHAR(12)
SELECT @DATE=CONVERT(VARCHAR(12),GETDATE(),112)
EXEC ('SELECT * INTO BK_TBL_'+ @DATE + ' FROM TABLENAME ')no2
可以对数据做简单的加密,放到表里