2013-03-26 20 views
0

我在Microsoft Access中有一個表單,它將文本文件中的記錄導入表中。原始代碼是這樣的:使用Tablesample的Visual Basic RunSQL語法錯誤

DoCmd.RunSQL "UPDATE QC_File SET QC_File.ToQC = 'x' " & _ 
"WHERE (((QC_File.ID) In (Select TOP " & VarPer & " PERCENT ID " & _ 
"FROM QC_File As DUPE " & _ 
"WHERE [DUPE].[HIST_USUS_ID] = [QC_File].[HIST_USUS_ID] And [DUPE].[Client1] = 'CLIENT' " & _ 
"ORDER BY [DUPE].[ID] DESC;)))"` 

此代碼只抓住了前10%時,我想它拉一個隨機的10%,所以我嘗試以下,但我不斷收到查詢表達式中的錯誤(「語法錯誤「 )並沒有指定錯誤發生在哪一行,它只是返回整個代碼。

DoCmd.RunSQL "UPDATE QC_File SET QC_File.ToQC = 'x' " & _ 
"WHERE (((QC_File.ID) In (Select ID " & _ 
"FROM QC_File As DUPE Tablesample(10 PERCENT) " & _ 
"WHERE [DUPE].[HIST_USUS_ID] = [QC_File].[HIST_USUS_ID] And [DUPE].[Client1] = 'CLIENT' " & _ 
"ORDER BY [DUPE].[ID] DESC;)))" 

我已經使用NEWID()嘗試,但一切確實是按隨機順序返回的前10%。在Visual Basic中編寫SQL時不能使用Tablesample命令?

回答

0

訪問會反對這個FROM子句中子查詢:

FROM QC_File As DUPE Tablesample(10 PERCENT) 

Tablesample()不訪問SQL支持。

我建議你建立一個新的Access查詢,它可以完成你想要的子查詢。一旦你有這個工作,使用它作爲子查詢。