急!救命!excel导到数据库屡屡出错!

alucado2004 2004-04-22 08:23:09
转excel到paradox,有时可以有时不行,提示key 错误,不知有没高手写过相关的东西,给予指导,小弟在此拜谢!!!1
...全文
61 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alucado2004 2004-04-23
  • 打赏
  • 举报
回复
问题不再上述代码里,程序中有错误,只是体现在这里罢了,还是谢谢大家的帮助!:)
ln521 2004-04-22
  • 打赏
  • 举报
回复
以前写过
工你参考了
你自几编写一段代码不就好了
给个例了,这是自己学的
将excel表的数据传到表中
procedure TFormDataDisk.BitBtn2Click(Sender: TObject);
var FileName,SQLText,DepartNameText,DepartID:string;
xlsfile:TFileStream;
month,m:integer;
huicaiNum,juejinNum,LiancaiNum,shengchanNum,QitaNum,danhaoNum:integer;
row,column,pozit:integer;
value:variant;
begin
DriveItem.Enabled :=False;
FolderItem.Enabled :=False;
FileItem.Enabled :=False;
BitBtn2.Enabled :=False;
FileName:=PathEdit.Text+'\'+trim(XlsName.Text);
ExcelApp.Connect;
try
ExcelApp.Workbooks.Open(FileName,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,0);
except
showmessage('警告:文件路径不正确,文件不存在!');
ExcelApp.Quit;
ExcelApp.Destroy;
exit;
end;
try
Excelbook.ConnectTo(ExcelApp.Workbooks[1]);
Excelsheet.ConnectTo(ExcelApp.worksheets[1] as _worksheet);
FormHit:=TFormHit.Create(Application);
FormHit.Label1.Caption :='数据正从磁盘导入数据库中,请稍后........';
FormHit.Label2.Caption :='数据正从磁盘导入数据库中,请稍后........';
FormHit.Show;
FormHit.Update;
FormHit.Refresh;
huicaiNum:=ExcelSheet.Cells.Item[1,1];
juejinNum:=ExcelSheet.Cells.Item[1,2];
liancaiNum:=ExcelSheet.Cells.Item[1,3];
QitaNum:=ExcelSheet.Cells.Item[1,4];
shengchanNum:=ExcelSheet.Cells.Item[1,5];
DanhaoNum:=ExcelSheet.Cells.Item[1,6];
month:=ExcelSheet.Cells.Item[1,7];
DepartNameText:=ExcelSheet.Cells.Item[1,8];
DepartID:=Copy(ExcelSheet.Cells.Item[1,9],3,6);

// 导 数据 //回采面数据
pozit:=3+huicaiNum;
row:=3;
SQLText:='insert into bhuicai(month,QuDuiMingCheng,qh,mh,'+
't31,t21,t121,t91,ta1,ta2,ta3,'+
't811,t812,ta4,ta5,ta6,ta7,ta8,ta9,ta10,ta12,'+
'ta13,ta14,ta15,ta17,ta20,ta21,ta23,ta24,ta25,'+
'ta26,ta27,ta28,ta29,ta30,ta31,danweiname,danweiId,kuangjingname) '+
'values(:month,:QuDuiMingCheng,:qh,:mh,:t31,:t21,'+
':t121,:t91,:ta1,:ta2,:ta3,:t811,:t812,:ta4,:ta5,'+
':ta6,:ta7,:ta8,:ta9,:ta10,:ta12,:ta13,:ta14,:ta15,'+
':ta17,:ta20,:ta21,:ta23,:ta24,:ta25,:ta26,:ta27,'+
':ta28,:ta29,:ta30,:ta31,:Danweiname,:danweiId,:kuangjingname)';
while row<pozit do
begin
with DisktoDBQry do
begin
close;
SQL.Clear;
SQL.Add(SQLText);
Parameters[0].Value:=month;
Parameters[1].Value:=ExcelSheet.Cells.Item[row,2].value;
Parameters[2].Value:=ExcelSheet.Cells.Item[row,3].value;
Parameters[3].Value:=ExcelSheet.Cells.Item[row,4].value;
Parameters[4].Value:=ExcelSheet.Cells.Item[row,5].value;
Parameters[5].Value:=ExcelSheet.Cells.Item[row,6].value;
Parameters[6].Value:=ExcelSheet.Cells.Item[row,7].value;
Parameters[7].Value:=ExcelSheet.Cells.Item[row,8].value;
Parameters[8].Value:=ExcelSheet.Cells.Item[row,9].value;
Parameters[9].Value:=ExcelSheet.Cells.Item[row,10].value;
Parameters[10].Value:=ExcelSheet.Cells.Item[row,11].value;
Parameters[11].Value:=ExcelSheet.Cells.Item[row,12].value;
Parameters[12].Value:=ExcelSheet.Cells.Item[row,13].value;
Parameters[13].Value:=ExcelSheet.Cells.Item[row,14].value;
Parameters[14].Value:=ExcelSheet.Cells.Item[row,15].value;
Parameters[15].Value:=ExcelSheet.Cells.Item[row,16].value;
Parameters[16].Value:=ExcelSheet.Cells.Item[row,17].value;
Parameters[17].Value:=ExcelSheet.Cells.Item[row,18].value;
Parameters[18].Value:=ExcelSheet.Cells.Item[row,19].value;
Parameters[19].Value:=ExcelSheet.Cells.Item[row,20].value;
parameters[20].Value:=ExcelSheet.Cells.Item[row,21].value;
parameters[21].Value:=ExcelSheet.Cells.Item[row,22].value;
parameters[22].Value:=ExcelSheet.Cells.Item[row,23].value;
parameters[23].Value:=ExcelSheet.Cells.Item[row,24].value;
parameters[24].Value:=ExcelSheet.Cells.Item[row,25].value;
parameters[25].Value:=ExcelSheet.Cells.Item[row,26].value;
parameters[26].value:=ExcelSheet.Cells.Item[row,27].value;
parameters[27].Value:=ExcelSheet.Cells.Item[row,28].value;
parameters[28].Value:=ExcelSheet.Cells.Item[row,29].value;
parameters[29].Value:=ExcelSheet.Cells.Item[row,30].value;
parameters[30].Value:=ExcelSheet.Cells.Item[row,31].value;
parameters[31].Value:=ExcelSheet.Cells.Item[row,32].value;
parameters[32].Value:=ExcelSheet.Cells.Item[row,33].value;
parameters[33].Value:=ExcelSheet.Cells.Item[row,34].value;
parameters[34].Value:=ExcelSheet.Cells.Item[row,35].value;
parameters[35].Value:=ExcelSheet.Cells.Item[row,36].value;
parameters[36].Value:=DepartNameText;
parameters[37].Value:=DepartId;
Parameters[38].Value:=Departnametext;
try
DisktoDBQry.ExecSQL;
except
DisktoDBQry.Cancel;
end;
end;
row:=row+1;
end;
FormHit.Free;
//Excelsheet.SaveAs(FileName);
//Excelapp.Save(FileName,1);
ExcelApp.Quit;
ExcelApp.Destroy;
showmessage('数据导入成功!');
except
showmessage('数据导入失败!');
end;
alucado2004 2004-04-22
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExcelXP, OleServer, StdCtrls, Buttons, Grids, DB, DBTables;

type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
btnopenexcel: TBitBtn;
Table1: TTable;
procedure btnopenexcelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnopenexcelClick(Sender: TObject);
var
i:integer;
j:integer;
eparam:olevariant;
docutype:olevariant;
wkbk:_workbook;
begin
OpenDialog1.InitialDir:=ExtractFilePath(paramstr(0));
OpenDialog1.Execute;
try
ExcelApplication1.Connect;
except
ShowMessage('Á¬½Ó´íÎó');
exit;
end;
ExcelApplication1.Visible[0]:=false;
ExcelApplication1.Caption:='excel files';
eparam:=EmptyParam;
docutype:=0;
table1.Close;
table1.Open;
table1.Edit;
try
wkbk:=ExcelApplication1.Workbooks.Add(eparam,docutype);
wkbk:=ExcelApplication1.Workbooks.Open(OpenDialog1.FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,docutype,EmptyParam,docutype);
except
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ShowMessage('ÇëÑ¡Ôñexcel±í¸ñ!');
Exit;
end;
end;
Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
Excelworksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
for i:=1 to 500 do
begin
if Trim(excelworksheet1.cells.item[i,1])<>''then
begin
table1.Append;
table1.FieldByName('xb_name').Value:=excelworksheet1.cells.item[i,1];
table1.FieldByName('jys_name').Value:=excelworksheet1.cells.item[i,2];
table1.FieldByName('js_name').Value:=excelworksheet1.cells.item[i,3];
table1.FieldByName('zh_ch').Value:=excelworksheet1.cells.item[i,4];
table1.FieldByName('kind').Value:=excelworksheet1.cells.item[i,5];
table1.FieldByName('zh_w').Value:=excelworksheet1.cells.item[i,6];
table1.Post;
end
else
begin
end;
end;
table1.Close;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;

end.
代码如上,表中无重复记录啊!
sos!!!!
crystaltam 2004-04-22
  • 打赏
  • 举报
回复
看看才知
估计你EXCEL里有重复计录

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧