2014-03-03 59 views
1

我正在使用以下代碼將數據從SQL中使用記錄集插入到訪問表中。該表格還用於其他操作。雖然這將數據完美地插入表格,但是這個巨大的時間需要花費時間。我是否應該使用其他方法將數據插入表中以減少所需的時間?使用記錄集從SQL插入到訪問表中

Do Until rs.EOF 
      DoCmd.RunSQL "INSERT INTO Table (Alpha,Beta,Gamma) VALUES(" & _ 
      rs.Fields(0).Value & ",'" & rs.Fields(1).Value & "'," & rs.Fields(2).Value _ 
      & ");" 
     rs.MoveNext 
Loop 
+0

您能否詳細說明您的代碼 –

+0

您是否將相同的數據插入每一行?你爲什麼一直在做循環?只需運行一次sql,就可以爲表中的每一行運行相同的sql。 – Fionnuala

+0

是的,我正在做一個循環。但是什麼是最好的方式,以便我可以在一個鏡頭中插入數據。 – Nishith

回答

1
  1. 創建一個鏈接表的SQL表,說這就是所謂的MyLinkedTable
  2. 創建追加查詢從您的鏈接表追加到本地Access表。它看起來像這樣:INSERT INTO MyAccessTable (Field1,Field2...) SELECT Field1,Field2... FROM MyLinkedTable;
0

如果你可以選擇在SQL語句UPDATEVBA而不是循環的數據,將採取的一小部分時間,因爲所有的工作將在服務器端進行。

+0

是否有可能做到這一點是vba。我的表正在訪問。該表格用於其他操作。 – Nishith

+0

整個想法是不想在VBA中這樣做,因爲它需要很長時間。你想在SQL中完成所有工作。告訴我,源表是否與目標表位於同一個數據庫中? –

+0

源數據庫在SQL中,但目標表在訪問中。 – Nishith

0

你只需要做一個INSERT INTO SELECT。我們需要關於您的RecordSet的更多信息,但您可能不需要它。

'Here we go, with just one line! DoCmd.RunSQL "INSERT INTO Table (Alpha,Beta,Gamma) SELECT column1, column2, column2 FROM YourTable" SELECT語句可能與您用於打開Recordset的語句相同。 祝你好運!