| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Данные не сохраняются в файле |
| Автор: Алина 17.12.2005, 15:05 | ||
| Есть необходимость импортировать данные из Экселевской таблицы в Access'овскую. На форме есть DataSource, привязанный к ADOTable1, BDGrid, который отображает данные из DataSource. При запуске приложения данные из Экселя достаются, передаются в ADOTable, но после закрытия приложения изменений в аксесовском файле нет.
Что я делаю не так? |
| Автор: YurikGL 17.12.2005, 16:25 | ||
меняем на что-то типа ADODataSet1.open //а то так и не открыли датасет то? ADODataSet1.first; repeat for i:=1 to adoTable.recordcount do adoTable1.fields[i].value:=adoDataset1.fields[i].value; adodataset1.next until adodataset1.eof |
| Автор: Алина 17.12.2005, 17:57 | ||
А почему цикл до adoTable.recordcount? оно вообще до вставки данных равно нулю, и как мы можем заряжать цикл до recordcount? можно так: ADODataSet1.first; repeat for i:=1 to adoTable.flields.count do adoTable1.fields[i].value:=adoDataset1.fields[i].value; adodataset1.next until adodataset1.eof Но как в таком случае сказать таблице, что мы каждый раз добавляем в нее новую запись? Может есть способ проще, чем перебирать датасет по кортежам-полям (там ведь может быть несколько миллионов кортежей)? |
| Автор: YurikGL 17.12.2005, 18:32 | ||||
Сглупил... да fields.count конечно... к
добавь adoTable1.insert for i:=..... do adoTable1.fields[i].value:=adoDataset1.fields[i].value; adoTable1.post з.ы. в конце дня туплю сильно... извиняйте.... з.ы.ы. вроде были стандартные средства экспорта из access в excel и наоборот з.ы.ы.ы вроде где-то видел кусок запроса, который в одном запросе обращался к разным базам средствами ADO и втыкал через insert into записи из одной базы в другую.... но это - частное решение и повторить то, что там было написано, я не готов.... В общем случае - перебираем поля и записи. з.ы.ы.ы.ы можно еще взять в буфер и вставить из буфера... работает достаточно быстро |
| Автор: Алина 17.12.2005, 19:27 |
| стандартные средства - это на один раз, имхо... иначе замаешься с ними... из буфера стало реально работать быстрее в четыре раза примерно! |
| Автор: YurikGL 17.12.2005, 19:30 | ||
Только по превышению определенного объема память кончается и буфер начинает глючить. Поэтому в свое время я переносил именно по записи... Кстати, можно еще через OLE работать... |