2011-01-31 1 views
1

Использование Delphi 2009. У меня есть TADOConnection в папку, содержащую файл csv и TADOQuery, который извлекает данные из файла csv там (назовите его TADOQueryCSV). Это работает нормально.Использование результата TADOQuery в другом запросе?

У меня также есть второе TADOConnection для базы данных Access с таблицей AccessTbl_TEMP и различными TADOQueries, которые обрабатывают данные там. Они работают нормально.

Теперь я хочу обработать данные, возвращаемые TADOQueryCSV, и вставить их в таблицу в базе данных Access. Но как я могу ссылаться на данные, возвращенные из файла csv.?

Мне нужно что-то подобное, но не знаю, как написать предложение FROM.

INSERT INTO AccessTbl_TEMP (Поле1, Field2) ВЫБОР csvField1, csvField2 ОТ TADOQueryCSV;

ответ

0

Вы должны использовать связанные с MS Access таблицы, где связанная таблица будет указывать на файл CSV.

+0

То, что я делаю в данный момент. Я пытался уйти от hassel ссылки на таблицу MSAccess (особенно, когда она была установлена ​​на компьютерах клиентов) и сделать все это в delphi, оставив базу данных доступа как базу данных. Также скоро я хочу отказаться от доступа и использовать firebird или что-то еще, поэтому для обработки вам потребуется delphi. – dochsm

+0

Затем вы можете переместить данные во временную таблицу и затем использовать ее в запросах. Но это замедлит полную работу. –

+0

Вы можете включить строку соединения в предложение FROM с оператором IN. Точный синтаксис будет зависеть от ваших данных, но то, что я всегда делаю, это создать связанную таблицу, затем взять полученную строку соединения, а затем использовать конструктор запросов и вставить части строки подключения в два соответствующих свойства запроса, исходную базу данных и источник Подключить строку. –

2

Вы можете перемещать данные в коде в Delphi. dsSource - это TADOQueryCSV, а dsTarget - таблица AccessTbl_TEMP.

dsSource.First; 
while not dsSource.Eof do 
begin 
    dsTarget.Append; 
    // Assign field values from dsSource to dsTarget 
    dsTarget.Post; 
    dsSource.Next; 
end; 

 Смежные вопросы

  • Нет связанных вопросов^_^