这里是我最后做的结果,贴出来,方便大家以后参照,结帐了 if ChkKhwl.Checked=true then begin if FileExists(EdtMdb.Text)=false then begin MessageBox(Application.Handle,'文件不存,请检查后再试!','提示',MB_OK+MB_ICONWARNING); EdtMdb.SetFocus; EdtMdb.SelectAll; Exit; end; try TempAdoConn:=TAdoConnection.Create(nil); TempAdoConn.LoginPrompt:=false; TempAdoConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+EdtMdb.Text+';Persist Security Info=False'; try TempAdoConn.Open; ListBox1.Clear; TempAdoConn.GetTableNames(ListBox1.Items,False); DS.Close; Ds.Connection:=TempAdoConn; except MessageBox(Application.Handle,pchar('数据库文件:〖'+EdtMdb.Text+'〗连接失败!'),'提示',MB_OK+MB_ICONWARNING); end; if ListBox1.Items.Count<=0 then begin end else begin for i:=0 to ListBox1.Items.Count-1 do begin Ds.close; Ds.CommandText:=' select * from '+ListBox1.Items[i]; Ds.open; if ds.Eof and ds.Bof then begin end else begin pb.Max:=ds.RecordCount; intCount:=0; pb.Position:=0; Ds.First; LblCaption.Caption:='正在导入客户往来数据...'; while not Ds.Eof do begin if Ds.Fields[0].IsNull then y:='' else y:=Ds.Fields[0].Value; if Ds.Fields[1].IsNull then r:='' else r:=Ds.Fields[1].Value; if Ds.Fields[2].IsNull then pdh:='' else pdh:=Ds.Fields[2].Value; if Ds.Fields[3].IsNull then kmbh:='' else kmbh:=Ds.Fields[3].Value; if Ds.Fields[4].IsNull then kmmc:='' else kmmc:=Ds.Fields[4].Value; if Ds.Fields[5].IsNull then khbh:='' else khbh:=Ds.Fields[5].Value; if Ds.Fields[6].IsNull then khmc:='' else khmc:=Ds.Fields[6].Value; if Ds.Fields[7].IsNull then zy:='' else zy:=Ds.Fields[7].Value; if Ds.Fields[8].IsNull then jfbb:=0 else jfbb:=Ds.Fields[8].Value; if Ds.Fields[9].IsNull then dfbb:=0 else dfbb:=Ds.Fields[9].Value; if Ds.Fields[10].IsNull then fx:='' else fx:=Ds.Fields[10].Value; if Ds.Fields[11].IsNull then yebb:=0 else yebb:=Ds.Fields[11].Value; TempSql:=' insert into tbnote_khwlmx('+ ' f_y,f_r,f_pdh,f_kmbh,f_kmmc,f_khbh,f_khmc,f_zy,f_jfbb,f_dfbb,f_fx,f_yebb '+ ' ) values( '''+ y+''','''+ r+''','''+ pdh+''','''+ kmbh+''','''+ kmmc+''','''+ khbh+''','''+ khmc+''','''+ zy+''','+ FloatToStr(jfbb)+','+ FloatToStr(dfbb)+','''+ fx+''','+ FloatToStr(yebb)+ ' )'; AdoConnTo.Execute(TempSql); inc(intCount); LblTotal.Caption:='已导入记录:'+inttostr(intCount)+' 条'; edtbm.Caption:=Ds.Fields[2].AsString; self.Refresh; pb.Position:=intCount; Ds.Next; end;//end while end;// end else end;//end for end;//ListBox1.Items.Count>0 finally TempAdoConn.Close; TempAdoConn.Free; end;//end try end;//Khwl
ADOConnection1.GetTableNames(ListBox1.Items,False);
http://community.csdn.net/Expert/topic/3203/3203036.xml?temp=.2080194
SELECT Name from MSysObjects where flags=0 and type>0 and id>0
就行了。
字段Name里保存的就是表名称。
http://access911.net/index.asp?board=4&mode=3&recordid=73FAB61E17DC kiboisme(还是铁棒.....针) 兄弟的方法正确,但可能没有权限
combobox1.Items.Clear ;
AC1.GetTableNames(combobox1.Items,false);
combobox1.ItemIndex :=0;
At1.TableName :=combobox1.Text ;
At1.Open ;
combobox2.Items.Clear ;
At1.GetFieldNames(combobox2.items);
combobox2.ItemIndex :=0;
if ChkKhwl.Checked=true then
begin
if FileExists(EdtMdb.Text)=false then
begin
MessageBox(Application.Handle,'文件不存,请检查后再试!','提示',MB_OK+MB_ICONWARNING);
EdtMdb.SetFocus;
EdtMdb.SelectAll;
Exit;
end;
try
TempAdoConn:=TAdoConnection.Create(nil);
TempAdoConn.LoginPrompt:=false;
TempAdoConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+EdtMdb.Text+';Persist Security Info=False';
try
TempAdoConn.Open;
ListBox1.Clear;
TempAdoConn.GetTableNames(ListBox1.Items,False);
DS.Close;
Ds.Connection:=TempAdoConn;
except
MessageBox(Application.Handle,pchar('数据库文件:〖'+EdtMdb.Text+'〗连接失败!'),'提示',MB_OK+MB_ICONWARNING);
end;
if ListBox1.Items.Count<=0 then
begin
end
else
begin
for i:=0 to ListBox1.Items.Count-1 do
begin
Ds.close;
Ds.CommandText:=' select * from '+ListBox1.Items[i];
Ds.open;
if ds.Eof and ds.Bof then
begin
end
else
begin
pb.Max:=ds.RecordCount;
intCount:=0;
pb.Position:=0;
Ds.First;
LblCaption.Caption:='正在导入客户往来数据...';
while not Ds.Eof do
begin
if Ds.Fields[0].IsNull then y:='' else y:=Ds.Fields[0].Value;
if Ds.Fields[1].IsNull then r:='' else r:=Ds.Fields[1].Value;
if Ds.Fields[2].IsNull then pdh:='' else pdh:=Ds.Fields[2].Value;
if Ds.Fields[3].IsNull then kmbh:='' else kmbh:=Ds.Fields[3].Value;
if Ds.Fields[4].IsNull then kmmc:='' else kmmc:=Ds.Fields[4].Value;
if Ds.Fields[5].IsNull then khbh:='' else khbh:=Ds.Fields[5].Value;
if Ds.Fields[6].IsNull then khmc:='' else khmc:=Ds.Fields[6].Value;
if Ds.Fields[7].IsNull then zy:='' else zy:=Ds.Fields[7].Value;
if Ds.Fields[8].IsNull then jfbb:=0 else jfbb:=Ds.Fields[8].Value;
if Ds.Fields[9].IsNull then dfbb:=0 else dfbb:=Ds.Fields[9].Value;
if Ds.Fields[10].IsNull then fx:='' else fx:=Ds.Fields[10].Value;
if Ds.Fields[11].IsNull then yebb:=0 else yebb:=Ds.Fields[11].Value;
TempSql:=' insert into tbnote_khwlmx('+
' f_y,f_r,f_pdh,f_kmbh,f_kmmc,f_khbh,f_khmc,f_zy,f_jfbb,f_dfbb,f_fx,f_yebb '+
' ) values( '''+
y+''','''+
r+''','''+
pdh+''','''+
kmbh+''','''+
kmmc+''','''+
khbh+''','''+
khmc+''','''+
zy+''','+
FloatToStr(jfbb)+','+
FloatToStr(dfbb)+','''+
fx+''','+
FloatToStr(yebb)+
' )';
AdoConnTo.Execute(TempSql);
inc(intCount);
LblTotal.Caption:='已导入记录:'+inttostr(intCount)+' 条';
edtbm.Caption:=Ds.Fields[2].AsString;
self.Refresh;
pb.Position:=intCount;
Ds.Next;
end;//end while
end;// end else
end;//end for
end;//ListBox1.Items.Count>0
finally
TempAdoConn.Close;
TempAdoConn.Free;
end;//end try
end;//Khwl
现在A哥上任三把火,错烧我就惨了编号: 6 发送者 drillmaster 发送时间 2004-7-31 9:11:58 删除 回复
内容 谢谢你呀,这次结贴只给了180,以后望多多帮忙呀