1

私は少し見回して、解決策と思われるものを見つけましたが、これは機能していません:-(

私はこの方法を使用したことがなく、どこが間違っているのか本当にわかりません。おそらく別の方法を使用する必要がありますか? どちらの方法でも、SQL は Access で正常に機能します。誰かがそれを見て、私を正しい方向に向けてもらえますか? お時間をいただきありがとうございます。

ニック

    Dim cmd As New ADODB.Command
    Dim conn As ADODB.Connection
    Dim prm As ADODB.Parameter
    Dim strConn As String

    Set cmd = New ADODB.Command

    KdNr=12564 'Parameter to be passed (set here as dummy)

    cmd.ActiveConnection = CurrentProject.Connection
    cmd.CommandText = "CREATE PROCEDURE procUmsatz " & _
    "(CustNo long) " & _
    "AS SELECT dbo_STATISTIKVK.KUNDE, Sum(dbo_STATISTIKVK.WERTEK) AS WE_Gesamt, Sum(dbo_STATISTIKVK.WERTVK) AS Umsatz_Gesamt, ([Umsatz_Gesamt]-[WE_Gesamt])/[Umsatz_Gesamt] AS Spanne_PC_Gesamt, [Umsatz_Gesamt]-[WE_Gesamt] AS Spanne_EUR_Gesamt, Year([BELEGDAT]) AS Year_, dbo_STATISTIKVK.ARTIKEL INTO tbl_Excel_Umsatz " & _
    "FROM dbo_STATISTIKVK " & _
    "WHERE (((dbo_STATISTIKVK.MENGE)>0) AND ((dbo_STATISTIKVK.BELEGDAT)>#1/1/2010#)) " & _
    "GROUP BY dbo_STATISTIKVK.KUNDE, Year([BELEGDAT]), dbo_STATISTIKVK.ARTIKEL " & _
    "HAVING (((dbo_STATISTIKVK.KUNDE)= [CustNo]) AND ((Sum(dbo_STATISTIKVK.WERTVK))>0) AND ((dbo_STATISTIKVK.ARTIKEL)<>""VERSAND"" And (dbo_STATISTIKVK.ARTIKEL)<>""99"" And (dbo_STATISTIKVK.ARTIKEL)<>""MAN"" And (dbo_STATISTIKVK.ARTIKEL)<>""Manuell"")) " & _
    "ORDER BY Year([BELEGDAT])"

    cmd.Execute

    '--------------------------------------------------------------------------

    strConn = "Provider = Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=\\STATION\PasstProReloaded\Excel.mdb"

    Set conn = New ADODB.Connection
    conn.Open strConn

    Set cmd = New ADODB.Command
    cmd.CommandText = "procUmsatz"
    cmd.CommandType = adCmdStoredProc
    cmd.ActiveConnection = conn

    Set prm = cmd.CreateParameter("CustNo", adInteger, adParamInput)
    cmd.Parameters.Append prm
    cmd.Parameters("CustNo").Value = KdNr

    'Execute the Stored Procedure
    cmd.Execute

    'Close the connection
    conn.Close 
4

1 に答える 1

0

少し動かしてみてください。Excel がアクティブな接続を持っている可能性は低いです。

strConn = "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=\\STATION\PasstProReloaded\Excel.mdb"

Set conn = New ADODB.Connection
conn.Open strConn

cmd.ActiveConnection = strConn
cmd.CommandText = "CREATE PROCEDURE procUmsatz " & _
"(CustNo long) " & _
"AS SELECT dbo_STATISTIKVK.KUNDE, Sum(dbo_STATISTIKVK.WERTEK) AS WE_Gesamt, Sum(dbo_STATISTIKVK.WERTVK) AS Umsatz_Gesamt, ([Umsatz_Gesamt]-[WE_Gesamt])/[Umsatz_Gesamt] AS Spanne_PC_Gesamt, [Umsatz_Gesamt]-[WE_Gesamt] AS Spanne_EUR_Gesamt, Year([BELEGDAT]) AS Year_, dbo_STATISTIKVK.ARTIKEL INTO tbl_Excel_Umsatz " & _
"FROM dbo_STATISTIKVK " & _
"WHERE (((dbo_STATISTIKVK.MENGE)>0) AND ((dbo_STATISTIKVK.BELEGDAT)>#1/1/2010#)) " & _
"GROUP BY dbo_STATISTIKVK.KUNDE, Year([BELEGDAT]), dbo_STATISTIKVK.ARTIKEL " & _
"HAVING (((dbo_STATISTIKVK.KUNDE)= [CustNo]) AND ((Sum(dbo_STATISTIKVK.WERTVK))>0) AND ((dbo_STATISTIKVK.ARTIKEL)<>""VERSAND"" And (dbo_STATISTIKVK.ARTIKEL)<>""99"" And (dbo_STATISTIKVK.ARTIKEL)<>""MAN"" And (dbo_STATISTIKVK.ARTIKEL)<>""Manuell"")) " & _
"ORDER BY Year([BELEGDAT])"

cmd.Execute

コメントを編集

KdNr=12564 'Parameter to be passed (set here as dummy)

strConn = "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=\\STATION\PasstProReloaded\Excel.mdb"

Set conn = New ADODB.Connection
conn.Open strConn

cmd.ActiveConnection = strConn

cmd.CommandText = "SELECT dbo_STATISTIKVK.KUNDE, Sum(dbo_STATISTIKVK.WERTEK) AS WE_Gesamt, Sum(dbo_STATISTIKVK.WERTVK) AS Umsatz_Gesamt, ([Umsatz_Gesamt]-[WE_Gesamt])/[Umsatz_Gesamt] AS Spanne_PC_Gesamt, [Umsatz_Gesamt]-[WE_Gesamt] AS Spanne_EUR_Gesamt, Year([BELEGDAT]) AS Year_, dbo_STATISTIKVK.ARTIKEL INTO tbl_Excel_Umsatz " & _
"FROM dbo_STATISTIKVK " & _
"WHERE (((dbo_STATISTIKVK.MENGE)>0) AND ((dbo_STATISTIKVK.BELEGDAT)>#1/1/2010#)) " & _
"GROUP BY dbo_STATISTIKVK.KUNDE, Year([BELEGDAT]), dbo_STATISTIKVK.ARTIKEL " & _
"HAVING (((dbo_STATISTIKVK.KUNDE)= [CustNo]) AND ((Sum(dbo_STATISTIKVK.WERTVK))>0) AND ((dbo_STATISTIKVK.ARTIKEL)<>'VERSAND' And (dbo_STATISTIKVK.ARTIKEL)<>'99' And (dbo_STATISTIKVK.ARTIKEL)<>'MAN' And (dbo_STATISTIKVK.ARTIKEL)<>'Manuell')) "

Set prm = cmd.CreateParameter("CustNo", adInteger, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters("CustNo").Value = KdNr

''Debugging
Debug.Print cmd.CommandText
Stop
''End of debugging
cmd.Execute

代わりに、クエリが MS Access に procUmsatz として既に存在する場合

strConn = "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=\\STATION\PasstProReloaded\Excel.mdb"

Set conn = New ADODB.Connection
conn.Open strConn

Set cmd = New ADODB.Command
cmd.ActiveConnection = strConn
cmd.CommandText = "procUmsatz"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = conn

Set prm = cmd.CreateParameter("CustNo", adInteger, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters("CustNo").Value = KdNr

'Execute the Stored Procedure
cmd.Execute
于 2012-05-15T10:19:55.143 に答える