请教大家:在批导入excel数据到access数据库的时候,如果有与数据库中重复的记录,它有错误提示。但是在它之前那些未重复的那些记录已经导入到access数据库了,我想做的是:要么全部成功导入,要么全部失败!请教大家帮我看看!!!try
OpenDialog:=TOpenDialog.Create(Self);
OpenDialog.DefaultExt := 'xls';
OpenDialog.Filter := 'Microsoft Excel 文件 (*.xls)|*.xls';
OpenDialog.Execute;
if OpenDialog.FileName<>'' then
try
Screen.Cursor:=crSqlWait;
ss_adoconnexcel.Close;
ss_adoconnexcel .ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpenDialog.FileName+';Extended Properties=Excel 8.0;Persist Security Info=False';
ss_adoconnexcel .Open;
with ss_adoqueryexcel do
begin
Close;
Sql.Clear;
Sql.Add('SELECT 楼栋编号,房间编号, 所属院系,收费标准,可住人数 FROM [Sheet1$]');
Prepared:=true;
Open;
end; ss_adoconnexcel.BeginTrans ;
ss_adoqueryexcel.First;
while not ss_adoqueryexcel.Eof do
begin
with ss_ADOCom do
begin
with ss_adoqueryexcel do
begin
CommandText:='INSERT INTO sushe VALUES('+''''+Trim(FieldByName('楼栋编号').AsString)+''''+','+''''+trim(fieldbyname('房间编号').AsString )+''''+','+''''+Trim(FieldByName('所属院系').AsString)+''''+','+''''+trim(fieldbyname('收费标准').asstring)+''''+','+''''+trim(fieldbyname('可住人数').asstring)+''''+')';
Execute;
end;
end;
ss_adoqueryexcel.Next; end;
ss_adoconnexcel.CommitTrans;
showmessage('EXCEL数据成功导入ACCESS数据库!');
except
ss_adoconnexcel.Cancel ;
ss_adoconnexcel.RollbackTrans;
showmessage('数据导入失败!');
end;
finally
susheinfo_qry.Close;
susheinfo_adocon.Close ;
ss_adoconnexcel.Close ; Screen.Cursor:=crDefault; end;
另外:如何对dbgrid中某列符合条件字段的值,进行统计相加呢?好像要用到ADOTable2.GotoBook(CurrentRecord);
ADOTable2.FreeBook(CurrentRecord); 这样的语句,请xdjm能提供这方面的资料参考!谢谢!
OpenDialog:=TOpenDialog.Create(Self);
OpenDialog.DefaultExt := 'xls';
OpenDialog.Filter := 'Microsoft Excel 文件 (*.xls)|*.xls';
OpenDialog.Execute;
if OpenDialog.FileName<>'' then
try
Screen.Cursor:=crSqlWait;
ss_adoconnexcel.Close;
ss_adoconnexcel .ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpenDialog.FileName+';Extended Properties=Excel 8.0;Persist Security Info=False';
ss_adoconnexcel .Open;
with ss_adoqueryexcel do
begin
Close;
Sql.Clear;
Sql.Add('SELECT 楼栋编号,房间编号, 所属院系,收费标准,可住人数 FROM [Sheet1$]');
Prepared:=true;
Open;
end; ss_adoconnexcel.BeginTrans ;
ss_adoqueryexcel.First;
while not ss_adoqueryexcel.Eof do
begin
with ss_ADOCom do
begin
with ss_adoqueryexcel do
begin
CommandText:='INSERT INTO sushe VALUES('+''''+Trim(FieldByName('楼栋编号').AsString)+''''+','+''''+trim(fieldbyname('房间编号').AsString )+''''+','+''''+Trim(FieldByName('所属院系').AsString)+''''+','+''''+trim(fieldbyname('收费标准').asstring)+''''+','+''''+trim(fieldbyname('可住人数').asstring)+''''+')';
Execute;
end;
end;
ss_adoqueryexcel.Next; end;
ss_adoconnexcel.CommitTrans;
showmessage('EXCEL数据成功导入ACCESS数据库!');
except
ss_adoconnexcel.Cancel ;
ss_adoconnexcel.RollbackTrans;
showmessage('数据导入失败!');
end;
finally
susheinfo_qry.Close;
susheinfo_adocon.Close ;
ss_adoconnexcel.Close ; Screen.Cursor:=crDefault; end;
另外:如何对dbgrid中某列符合条件字段的值,进行统计相加呢?好像要用到ADOTable2.GotoBook(CurrentRecord);
ADOTable2.FreeBook(CurrentRecord); 这样的语句,请xdjm能提供这方面的资料参考!谢谢!
解决方案 »
- 诚聘Delphi程序员(深圳福田区)
- 怎样让它只提示一次???
- 怎么取系统时间?
- 谁知道“类别未授权使用”是个什么错误?如何解决?
- 不想当程序员了,考了个CCNA,想换个工作。从什么报纸上或那个网站能够知道国展的招聘日期??
- 我有一個串口程序﹕需要從串口獲得數據然後顯示出來﹐想獲得向股票區線圖的樣式﹐請問如何做﹖用TChart可以做嗎﹖如何做﹖﹖
- 请教ListView中的Item排列问题?
- 学过VB,刚接触delphi,关于代码的事情。
- maskedit好难搞耶。。。。
- 救救我吧,关于DELPHI的打印机检测问题,请高手帮忙解决。
- 向核桃、夜星以及所有D版朋友道歉--修罗
- 如何编写带参数启动的程序?
//[aaa$]->Excel文件aaa.xls中的aaa页
procedure TForm1.Button10Click(Sender: TObject);
begin
sSql :=
'select * into bbb from [excel 8.0;database=f:\aaa.xls].[aaa$]';
with AccessConnection do
begin
Connected := True;
Execute(sSql);
end;
end;