2016-09-30 14 views
0

イムでSQLクエリを実行しているが、私のクエリは1行は、Access VBAでSQLクエリを実行しようとしているアクセスVBA

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 

ので、それは文句を言わないで一度フルクエリを実行中に収まるように長すぎる、ですがこれを回避するには?

+0

これをパススルークエリで実行しない限り、Accessが認識するテーブル名を使用する必要があります。それは '[Genex]。[dbo]。[tblProducts]'を知らない。 – Andre

+0

こんにちはAndrew、tblproductsは今、同じ名前のリンクテーブルとしてあります。 – Bunion

+1

'SELECT'の後に空白がありません。そうでない場合は、VBAコードを記入してください。 – Andre

答えて

0

あなたはいくつかの問題を持っています。

1つは、SQLサーバーとAccess SQLが同じではないということです。 Access SQLははるかに制限されているので、SQLクエリがSQLサーバー上で実行されているだけであっても、Accessで実行されるわけではありません。 Access SQLと互換性のないSQL Serverクエリを実行するには、パススルークエリを使用する必要があります。

その他の問題は、Accessテーブル名とSQL Serverテーブル名が必ずしも同じではないことです。

今、あなたのアカウントにすべてのことをとっていると、クエリが実際にアクセスSQL互換性があると仮定すると、あなたはこのようにそれを実行することができます:

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

私が探していたもの! : – Bunion

+0

クエリに実際の条件がないため、文字列の連結にスペースが必要なものが2つあります(たとえば、 "SELECT FROM"& "table")。 1つのテーブルのフィールドの順序(またはデータ型)が完全に同じではない場合は、実際に受信フィールドをリストする必要がありますあなたのクエリで、および/またはいくつかの型変換を実行します。 – SunKnight0

1

SQLは空白を考慮しません。これは、クエリ全体を一度に実行する必要があります。私はあなたの問題はあなたがTSQL

でSELECT INTOを使用したいということだと思います

は、詳細についてはこちらをご覧ください:

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

+0

SQL Serverでこのクエリを実行すると問題なく実行されますが、SQL ServerのテーブルがVBA内の1行に収まるように、アクセス内でVBA内のクエリ全体を実行できません。 – Bunion

+0

Access SQLの美点ですSQL Serverとは異なる:) – User632716

+0

これは、私のテーブルがSQL 2008のテーブルにリンクされていても、私にまだ影響しますか? – Bunion

1

は、あなたがちょうどあなたが "使用ラップアラウンドの書式設定、について話しています& _ "あなたの文字列を続けるには?

strSQL = "SELECT [SAMPartGrp],[ProductPrefix] ,[ProductCode] ,[pcode1], " & _ 
    "[pcode2], [SubPart1],[SubPart2],[ProductCodeNew],[ProductDescription], " & _ 
    "[MadeFrom], [MadeFromDescription],[Field1],[SamFamilySort1], " & _ 
    "[SamFamilySort2],[SamFamilySort3],[SamFamilySort4], " & _ 
    "[SamFamilySort5], [Grade], " 
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 
+0

VBAでは、文字列内の行を連結することはできません。 https://stackoverflow.com/questions/16624550/how-to-break-long-string-to-multiple-lines – Andre

+0

なぜあなたはdownvoteする必要がありますか?私の速いタイピングのためにちょうど逃したと私はここで新しいです。私はあなたが動作することを保証します。それは私のコードのほとんどで働いた。 –

+0

あなたのオリジナルの答えは間違っていました。 - また、既存の回答に新しいものを追加しないと、すでに回答している古い質問に回答を追加すると、誰にも役立たない。あなたはあなたの時間と私たちを浪費しているだけです(なぜなら質問は一番上にぶつかるからです)。 – Andre

関連する問題