边读边插!
贴一段代码,希望对你有所帮助
//****************** "导表 " *************************************************** //read ADOQuery_read.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+datapath+'feeData.mdb;Persist Security Info=False'; sql_str:=''; sql_str:='select * from FeeData'; ADOQuery_read.Close; ADOQuery_read.SQL.Clear; ADOQuery_read.SQL.Add(sql_str); ADOQuery_read.Open; while not ADOQuery_read.Eof do begin for i:=0 to ADOQuery_read.RecordCount do begin //write sql_str1:=''; sql_str1 := 'INSERT INTO FeeData'+formatdatetime('yyyymmdd',startForm.startdate.DateTime)+'(EntryNetWork,EntryStation,EntryStationName,'; sql_str1 := sql_str1 +'ExitNetWork,ExitStation,ExitStationName,FlagStations,FlagStationName1,'; sql_str1 := sql_str1 +'FlagStationName2,FlagStationName3,FlagStationName4,VehicleClass,TotalToll,SplitNumber,SplitSequence,OwnerNetWork,OwnerID,OwnerName,Roadcode,OwnerToll,Distance,runtime,VerifyCode,type)'; sql_str1 := sql_str1 + ' VALUES(:EntryNetWork,:EntryStation,:EntryStationName,'; sql_str1 := sql_str1 +':ExitNetWork,:ExitStation,:ExitStationName,:FlagStations,:FlagStationName1,:FlagStationName2,'; sql_str1 := sql_str1 +':FlagStationName3,:FlagStationName4,:VehicleClass,:TotalToll,:SplitNumber,:SplitSequence,:OwnerNetWork,:OwnerID,:OwnerName,:Roadcode,:OwnerToll,:Distance,:runtime,:VerifyCode,:type)'; ADOQuery_InsertTable.Close; ADOQuery_InsertTable.SQL.Clear; ADOQuery_InsertTable.SQL.Add(SQL_STR1);
ADOQuery_InsertTable.Parameters.ParamByName('EntryNetWork').value := ADOQuery_read.FieldValues['EntryNetWork'] ; ADOQuery_InsertTable.Parameters.ParamByName('EntryStation').value := ADOQuery_read.FieldValues['EntryStation'] ; ADOQuery_InsertTable.Parameters.ParamByName('EntryStationName').value := ADOQuery_read.FieldValues['EntryStationName'] ; ADOQuery_InsertTable.Parameters.ParamByName('ExitNetWork').value := ADOQuery_read.FieldValues['ExitNetWork'] ; ADOQuery_InsertTable.Parameters.ParamByName('ExitStation').value := ADOQuery_read.FieldValues['ExitStation'] ; ADOQuery_InsertTable.Parameters.ParamByName('ExitStationName').value := ADOQuery_read.FieldValues['ExitStationName'] ; ADOQuery_InsertTable.Parameters.ParamByName('FlagStations').value := ADOQuery_read.FieldValues['FlagStations'] ; ADOQuery_InsertTable.Parameters.ParamByName('FlagStationName1').value := ADOQuery_read.FieldValues['FlagStationName1']; ADOQuery_InsertTable.Parameters.ParamByName('FlagStationName2').value := ADOQuery_read.FieldValues['FlagStationName2']; ADOQuery_InsertTable.Parameters.ParamByName('FlagStationName3').value := ADOQuery_read.FieldValues['FlagStationName3']; ADOQuery_InsertTable.Parameters.ParamByName('FlagStationName4').value := ADOQuery_read.FieldValues['FlagStationName4']; ADOQuery_InsertTable.Parameters.ParamByName('VehicleClass').value := ADOQuery_read.FieldValues['VehicleClass']; ADOQuery_InsertTable.Parameters.ParamByName('TotalToll').value := ADOQuery_read.FieldValues['TotalToll']; ADOQuery_InsertTable.Parameters.ParamByName('SplitNumber').value := ADOQuery_read.FieldValues['SplitNumber']; ADOQuery_InsertTable.Parameters.ParamByName('SplitSequence').value := ADOQuery_read.FieldValues['SplitSequence']; ADOQuery_InsertTable.Parameters.ParamByName('OwnerNetWork').value := ADOQuery_read.FieldValues['OwnerNetWork']; ADOQuery_InsertTable.Parameters.ParamByName('OwnerID').value := ADOQuery_read.FieldValues['OwnerID']; ADOQuery_InsertTable.Parameters.ParamByName('OwnerName').value := ADOQuery_read.FieldValues['OwnerName']; ADOQuery_InsertTable.Parameters.ParamByName('Roadcode').value := ADOQuery_read.FieldValues['Roadcode']; ADOQuery_InsertTable.Parameters.ParamByName('OwnerToll').value := ADOQuery_read.FieldValues['OwnerToll']; ADOQuery_InsertTable.Parameters.ParamByName('Distance').value := ADOQuery_read.FieldValues['Distance']; ADOQuery_InsertTable.Parameters.ParamByName('runtime').value := ADOQuery_read.FieldValues['runtime']; ADOQuery_InsertTable.Parameters.ParamByName('VerifyCode').value := ADOQuery_read.FieldValues['VerifyCode']; ADOQuery_InsertTable.Parameters.ParamByName('type').value := ADOQuery_read.FieldValues['type'];
ADOQuery_InsertTable.ExecSQL; j:=j+1; doinghint.Visible:=true; doinghint.Caption:='正在进行费率表下发,现在'+IntToStr(j)+'条,共'+IntToStr(ADOQuery_read.RecordCount)+'条记录'; Application.ProcessMessages; ADOQuery_read.next; end; end; showmessage('费率表已经成功下发!'); // 写记录 sql_str:=''; sql_str := 'INSERT INTO FeeDataStatus(startdate,tableName)'; sql_str := sql_str + ' VALUES('''+formatdatetime('yyyy-mm-dd',startForm.startdate.DateTime)+''','''+tableName+''')' ; ADOQuery_InsertTable.Close; ADOQuery_InsertTable.SQL.Clear; ADOQuery_InsertTable.SQL.Add(sql_str); ADOQuery_InsertTable.ExecSQL; // n3.Enabled:=true; n3.Enabled:=true; doinghint.Visible:=false; exit;
一条一条的差是一种方法,当然,如果已经有了一个结果集,这个结果集由一个adoquery
得到
可以用insert into table + adoquery中的sql 语句一起把记录写入目的表
Insert Into TableName2 Select * From TableName1//已有一个T2与T1的表,并且结构相同的
Select * Into NewTableName From OldTableName //自动新建一个与原来相同的表
用ADOQUERY就行了
假如这两表在不同的目录下,那该怎么办?