Im чтение одной базы данных Access с ADO и копирования данных в другую с той же структурой. Моя проблема в том, что когда-то, он не вставляет в конец файла.Запись не вставляется в конец файла доступа с delphi
DM1.ADOConnectionReadAccess.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;' + 'User ID=Admin;' +
'Data Source=' + Directory + 'Courbe\Courbe Actuel.mdb' + ';' +
'Mode=Share Deny None;Extended Properties="";' + 'Jet OLEDB:Engine Type=5;';
DM1.ADOConnectionReadAccess.Connected := true;
DM1.ADODataSetReadAccess.CommandText := 'select * from Courbe_Reservoir order by DateHeure';
DM1.ADODataSetReadAccess.Active := true;
Итак, я прочитал свою базу данных и закажу ее по дате. Теперь я должен сделать некоторые изменения в данных, когда я скопирую их в новую базу данных.
DM1.ADOConnectionCopyExcel.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'User ID=Admin;' +
'Data Source=' + Directory + 'Courbe\Part of curve.mdb' + ';' +
'Mode=Share Deny None;Extended Properties="";' +
'Jet OLEDB:Engine Type=5;';
DM1.ADOConnectionCopyExcel.Connected := true;
while not DM1.ADODataSetReadAccess.Eof do
begin
Date2 := DM1.ADODataSetReadAccess.FieldByName('DateHeure').AsDateTime;
DernierDebit := DernierDebit + DM1.ADODataSetReadAccess.FieldByName('DebitRes').AsFloat/1000;
DM1.ADOCommandCopyExcel.CommandText :=
'INSERT INTO Courbe_Reservoir' + ' VALUES (:DateHeure1, ' +
':Niveau, ' + //niveau
':DebitRes, ' + //débit entrée
':PH, ' + //ph
':Chlore, ' + //Chlore
':Turbidite, ' + //Turbidité
':Temp, ' + //température
'0, ' + //Consommation l/min
'0, ' + //Log
':DernierDebit, ' + //Consommation journalière
'0, 0, 0, '''', '''', ''''' + ')';
DM1.ADOCommandCopyExcel.Parameters.ParamByName('DateHeure1').Value := Date1;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('Niveau').Value := DM1.ADODataSetReadAccess.FieldByName('Niveau').AsFloat;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('DebitRes').Value := DM1.ADODataSetReadAccess.FieldByName('DebitRes').AsFloat;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('PH').Value := DM1.ADODataSetReadAccess.FieldByName('PH').AsFloat;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('Chlore').Value := DM1.ADODataSetReadAccess.FieldByName('Chlore').AsFloat;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('Turbidite').Value := DM1.ADODataSetReadAccess.FieldByName('Turbidite').AsFloat;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('Temp').Value := DM1.ADODataSetReadAccess.FieldByName('Temp').AsFloat;
DM1.ADOCommandCopyExcel.Parameters.ParamByName('DernierDebit').Value := DernierDebit;
DM1.ADOCommandCopyExcel.Execute;
end;
Когда я проверить новую базу данных, я получил следующий результат на изображении:
Как вы можете видеть, я получил разрыв во время, потому что я получил запись на каждую минуту. Отсутствующая запись на изображении находится в другом месте в базе данных.
В конце концов, я хочу знать, почему его не показывают в том же порядке, в который я их вставляю. Суть в том, что я хочу экспортировать новую базу данных доступа (.mdb) в файл excel с помощью команды export, но команда экспорта, похоже, берет файл доступа и копирует его, чтобы преуспеть, как есть, поэтому его невозможно заказать, поскольку экспорт. Я не хочу повторять все записи снова с помощью select и вставлять его в excel один за другим.
Прямо сейчас у меня есть файл с почти 180 000 записями, и мне нужно разделить его в месяц, поэтому новая база данных будет содержать около 44 000 записей.
Спасибо за вашу помощь
Итак, если я понимаю, у меня не будет выбора вставить строку за строкой мои данные из ms-access в ms-excel, так как я не могу убедиться что база данных доступа не должна правильно начинаться. – Carl
Странная вещь заключается в том, что я не удалял ранее запись в моей базе данных, потому что перед вставкой данных я получил пустую таблицу (которая была уплотнена). – Carl
Я ожидаю, что вы сможете создавать свои таблицы в любом порядке; вы не указали код, который вы используете для этого. Кроме того, Excel также поддерживает сортировку. –