1
votes

Using Delphi 2009. I have a TADOConnection to folder containing a csv file and a TADOQuery that pulls data from a csv file in there (Call it TADOQueryCSV). That works OK.

I also have a second TADOConnection to an Access database with a table called AccessTbl_TEMP and various TADOQueries that process data in there. They work OK.

Now I want to process the data returned by the TADOQueryCSV and insert it into the table in the Access database. But how do I refer to the data returned from the csv file.?

I need something like this but don't know how to write the FROM clause.

INSERT INTO AccessTbl_TEMP ( Field1,Field2 ) SELECT csvField1, csvField2 FROM TADOQueryCSV;

3

3 Answers

2
votes

You can move the data in code in Delphi. dsSource is TADOQueryCSV and dsTarget is the table AccessTbl_TEMP.

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

You have to use the MS Access linked tables, where a linked table will point to a CSV file.

0
votes

Try this is faster way :

for x := 0 to Source.fieldcount - 1 do
begin
Target.fieldbyname(Source.fields[x].fieldname).value :=
Source.fields[x].value;
except
end;
end;

using value will convert the data for you. using the try / except concept will keep you from having to determine if the field is there