首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi-excel数据导入到dbgrid中,dbgrid再批量插入到sql中解决办法

2012-04-19 
delphi---excel数据导入到dbgrid中,dbgrid再批量插入到sql中现在sql里有book的表,里面有id书名价格idbookn

delphi---excel数据导入到dbgrid中,dbgrid再批量插入到sql中
现在sql里有book的表,里面有 
id 书名 价格 
id bookname price 
1 社会与科学 18 
2 delphi入门 25 
3 百科 30 

在delphi里现在希望先把数据从excel导入到dbgrid中,然后点“批量插入”时,把刚才所有存到导入的dbgrid的数据插入到sql中,问一下大家怎么才能做到,有二个关键代码 

1.button1:“从excel导入到dbgrid中”的关键代码 
2.button2:"批量插入dbgrid数据到数据库中"的关键代码 

谢谢大家!

[解决办法]
如果利用dbgrid其实就是利用数据集来操作
从excel读数据,然后利用
adoquery.append;
adoquery.fieldbyname('').value := 读的值
....
...

然后,对dbgrid进行编辑.
最后adoquery.post;就达到了批量提交了.
但这里要用事务来控制.

读Excel代码:利用一个结构体,供你参考

var
RangeMatrix: Variant;
OpenDialog1: TOpenDialog;
iRE: integer;
IN_TYPE,vStockName: String;
sStockName,sCompany: String;
i: Integer;
MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;
ASN2_NEW: PASN2_NEW;
begin
OpenDialog1:=TOpenDialog.Create(nil);
try
OpenDialog1.FileName:='*.csv;*.xls';
if not OpenDialog1.Execute then
begin
Result := false;
exit;
end;
MsExcel := CreateOleObject('Excel.Application');
MsExcelWorkBook := msExcel.Workbooks.Open(OpenDialog1.FileName);
MsExcelWorkSheet := msExcel.Worksheets.Item[1];
except
Result := false;
end;
//开始从EXCEL文件读取相关的信息

try
Application.ProcessMessages;
for i := 1 to MsExcelWorkSheet.Rows.Count do
begin
New(FASN2);
FASN2.In_Stock_No := trim(MsExcelWorkSheet.Range['B1'].Value);
FASN2.MAIN_FLG := trim(MsExcelWorkSheet.Range['A' + IntToStr(i)].Value);
FAsn2List.Add(FASN2);
//在这里可以调用adoquery.append代码
end;
Result := true;
finally
MsExcel.WorkBooks.Close;
end;
MsExcel.Quit;
OpenDialog1.Free;
end;
[解决办法]
补充:读Excel的方法,1楼的提示可用,但批次提交,可使用TClientDataSet,我有回复你重复的另一个贴子。
[解决办法]
楼主你这两个功能其实只要一条sql就可以搞定

Delphi(Pascal) code
//excel 读到 dbgridvar  str:string;begin  str:='select * from opendatasource(''microsoft.jet.oledb.4.0'',''data source="文件路径";user id=admin;password=;extened properties=excel 5.0'')...[sheet1$]';  adoquery.close;  adoquery.sql.clear;  adoquery.sql.add(str);  adoquery.active:=true;  adoquery.open;end;//dbgrid 导入数据表var  str:string;begin  str:='select *  into t from opendatasource(''microsoft.jet.oledb.4.0'',''data source="文件路径";user id=admin;password=;extened properties=excel 5.0'')...[sheet1$]';  with adoquery do    begin      close;      sql.clear;      sql.add(str);      execsql;      if rowsaffected>0 then        showmessage('插入成功')      else        showmessage(插入失败);    end;   end;
[解决办法]
数据库内容能够导入到 DBGRID 中?
我所知道的是 DBGRID 只是一个界面控件,用于显示相关联的表的内容,并提供编辑。注意:数据一直是在数据库中。

[解决办法]
哈哈 这个我前一段时间遇到过 也是客户那要这样的功能 不过我和楼主的有点不一样 我不用先导到dbgrid中 
我是可以让用户从那一行开始到结束行导入到sql2000里 我的代码太长了

热点排行