在Access VBA中运行SQL查询

时间:2016-09-30 13:48:21

标签: sql vba ms-access

我试图在Access VBA中运行SQL查询,但我的查询太长而无法放入一行

INSERT INTO tblProduct SELECT[SAMPartGrp],[ProductPrefix] ,[ProductCode] ,[pcode1],[pcode2],[SubPart1],[SubPart2],[ProductCodeNew],[ProductDescription],[MadeFrom],[MadeFromDescription],[Field1],[SamFamilySort1],[SamFamilySort2],[SamFamilySort3]
,[SamFamilySort4],[SamFamilySort5],[Grade],[Length],[Thickness],[fWidth],[Factor],[CubicMtrs],[CubicMtrsFull],[Weight(T)],[DrawingFilepath],[PackingFilePath],[EFACSProductGrouping],[BatchSize],[PackSize],[Density],[createdby],[createddate],[ProductType],[reorderpolicy],[EFACSExport],[PreactorExport],[customer],[Obsolete/DoNotUse],[noinminipack],[piecesincrate],[minipackheight],[DimA],[DimB],[DimC],[DimD],[DimE],[DimF],[DimG],[DimH],[DimI],[DimJ],[DimK],[DimL],[DimM],[DimN],[DimO] ,[DimP],[DimQ],[DimR],[DimS],[DimT],[DimU],[DimV],[DimW],[DimX],[DimY],[DimZ],[TolA],[TolB],[TolC],[TolD],[TolE],[TolF],[TolG],[TolH],[TolI],[TolJ],[TolK],[TolL],[TolM],[TolN],[TolO],[TolP],[TolQ],[TolR],[TolS],[TolT],[TolU],[TolV],[TolW],[TolX],[TolY],[TolZ]
  ,[Dimension],[Main],[Saws],[Moulders],[PaintLines],[XCut],[DET],[MitreSaw],[Wrapper],[Blocks]
  ,[HingeRecess],[ShrinkWrap],[CNC],[SW],[ShrinkWrapPackSize] ,[SAMBarCode],[machinedaway],[ExcludeFromPreactorUpload],[UseOtherM3XC],[UseOtherM3XC81],[UseOtherM3MS],[UseOtherM3MS83],[comment],[samtype1],[fsc],[LabelPack],[LabelPiece],[trml],[vtype1],[vtype2],[minipack] ,[profile],[madefromlength],[productchamp],[packtype],[uom],[acumatica],[Cupboard],[AcmtaExport],[ExportedtoAcmta],[PostingClass]
   FROM tblProducts

因此它不会立即运行完整查询,是否有针对此的解决方法?

4 个答案:

答案 0 :(得分:1)

SQL不会考虑空格,这应该立即运行整个查询。

我认为你的问题是你想使用带有TSQL的SELECT INTO

有关详细信息,请参阅此处:

https://msdn.microsoft.com/en-us/library/bb208934(v=office.12).aspx

答案 1 :(得分:1)

你有几个问题。

一个是SQL服务器和Access SQL不一样。 Access SQL受到更多限制,因为SQL查询在SQL服务器上运行并不意味着它将在Access中运行。要运行不兼容Access SQL的SQL Server查询,必须使用传递查询。

另一个问题是Access表名和SQL Server表名不一定相同。

现在,假设您考虑了所有这些并且您的查询实际上与Access SQL兼容,您可以像这样运行它:

Dim sql as String
sql = "Query part A"
sql = sql & "Query Part B"
... repeat as necessary
DoCmd.RunSQL sql

答案 2 :(得分:1)

您是否只是谈论环绕式格式,您使用"&amp ;; _"继续你的字符串?

strSQL = "SELECT [SAMPartGrp],[ProductPrefix] ,[ProductCode] ,[pcode1], " & _
   "[pcode2], [SubPart1],[SubPart2],[ProductCodeNew],[ProductDescription], " & _
   "[MadeFrom], [MadeFromDescription],[Field1],[SamFamilySort1], " & _
   "[SamFamilySort2],[SamFamilySort3],[SamFamilySort4], " & _
   "[SamFamilySort5], [Grade], "

答案 3 :(得分:0)

试试这个。

Dim strSQL as String

strSQL = "INSERT INTO tblProduct SELECT[SAMPartGrp],[ProductPrefix] , " & _ 
         "[ProductCode] ,[pcode1],[pcode2],[SubPart1],[SubPart2],[ProductCodeNew], " & _
         "[ProductDescription],[MadeFrom],[MadeFromDescription],[Field1], " & _
         "[SamFamilySort1],[SamFamilySort2],[SamFamilySort3], [SamFamilySort4], " _
         "[SamFamilySort5],[Grade],[Length],[Thickness], [fWidth],[Factor], " & _
         "[CubicMtrs],[CubicMtrsFull],[Weight(T)],[DrawingFilepath], " & _ 
         "[PackingFilePath],[EFACSProductGrouping],[BatchSize], " & _                                         
         "[PackSize],[Density],[createdby],[createddate],[ProductType], " & _
         "[reorderpolicy],[EFACSExport],[PreactorExport],[customer], " & _
         "[Obsolete/DoNotUse],[noinminipack],[piecesincrate], [minipackheight], " & _
         "[DimA],[DimB],[DimC],[DimD],[DimE],[DimF],[DimG],[DimH], " & _ 
         "[DimI],[DimJ],[DimK],[DimL],[DimM],[DimN],[DimO] ,[DimP], " &_
         "[DimQ],[DimR],[DimS],[DimT],[DimU],[DimV],[DimW],[DimX], " & _
         "[DimY],[DimZ],[TolA],[TolB],[TolC],[TolD],[TolE],[TolF], " & _       
         "[TolG],[TolH],[TolI],[TolJ],[TolK],[TolL],[TolM],[TolN], " & _
         "[TolO],[TolP],[TolQ],[TolR],[TolS],[TolT],[TolU],[TolV], " & _
         "[TolW],[TolX],[TolY],[TolZ],[Dimension],[Main],[Saws], " &_
         "[Moulders],[PaintLines],[XCut],[DET],[MitreSaw],[Wrapper], " &_
         "[Blocks],[HingeRecess],[ShrinkWrap],[CNC],[SW], " & _
         "[ShrinkWrapPackSize] ,[SAMBarCode],[machinedaway], " & _
         "[ExcludeFromPreactorUpload],[UseOtherM3XC],[UseOtherM3XC81], " & _
         "[UseOtherM3MS],[UseOtherM3MS83],[comment],[samtype1],[fsc], " & _
         "[LabelPack],[LabelPiece],[trml],[vtype1],[vtype2],[minipack] , " & _
         "[profile],[madefromlength],[productchamp],[packtype],[uom], " & _
         "[acumatica],[Cupboard],[AcmtaExport],[ExportedtoAcmta], " & _
         "[PostingClass] FROM tblProducts;"
DoCmd.RunSQL strSQL