2017-09-29 7 views
0

私はRDLCレポートにこの機能を持っています。 私はMsアクセスで文字列を作成しました(私はまっすぐ書いているだけでかなり悪いですから) MS Accessで動作し、PC上のビジュアルスタジオで動作します。 これはEXEにコンパイルされたときにも機能します。未定義機能:MONTHNAME - OLEDB

しかし、すべてのヘルプは素晴らしいことだ表現

未定義関数のMONTHNAME

SELECT MonthName(Month(tblpack.cycledate)) AS MonthDate, Year(tblpack.cycledate) AS YearDate, Sum(tblpack.weeksinpack) AS SumOfweeksinpack, Month(tblpack.cycledate) AS MonthOrder 
FROM tblpatient INNER JOIN tblpack ON tblpatient.patientid = tblpack.patientid 
WHERE (((tblpack.iscommunity)=True) AND ((tblpatient.over5med)=True) AND ((tblpack.isrepat)=True) AND ((tblpack.cycledate) Between ? And ?) AND ((tblpack.packeduser) Is Not Null)) OR (((tblpack.iscommunity)=True) 
AND ((tblpatient.over5med)=True) AND ((tblpack.isconcession)=True) AND ((tblpack.cycledate) Between ? And ?) AND ((tblpack.packeduser) Is Not Null)) 
GROUP BY MonthName(Month(tblpack.cycledate)), Year(tblpack.cycledate), Month(tblpack.cycledate) 
ORDER BY MonthName(Month(tblpack.cycledate)), Year(tblpack.cycledate) 

を考え出すされたONEのラップトップに。文字列が同じで接続が同じでも、なぜ1つのコンピュータで動作するのか、別のコンピュータで動作しないのか理解できません。

Gangel

答えて

1

あなたはAccessアプリケーションのセッション内で実行しているクエリでのみ使用できますサンドボックス機能以来、ADO.NETとMonthName機能を使用することはできません。 This articleは、あなたの問題に関連アクセスの動作を説明: SQLクエリに埋め込まれたときに

カスタムユーザ記述VBAの機能だけでなく、多くのビルトインVBA 言語の関数は、Microsoft Accessで実行されます。回避策として

(ADO、ADO.NETなどを介して実行時に)残念ながら、Jetデータベース エンジンが使用できる機能を使用すると、完全な月の名前を表示するMMMMフォーマット文字列でFormat機能を使用することができ、制限されています:

SELECT Format(tblpack.cycledate, 'MMMM') AS MonthDate, 
     Year(tblpack.cycledate) AS YearDate, Sum(tblpack.weeksinpack) AS SumOfweeksinpack, 
     Month(tblpack.cycledate) AS MonthOrder 
FROM tblpatient 
INNER JOIN tblpack ON tblpatient.patientid = tblpack.patientid 
WHERE (((tblpack.iscommunity)=True) 
     AND ((tblpatient.over5med)=True) 
     AND ((tblpack.isrepat)=True) 
     AND ((tblpack.cycledate) Between ? And ?) 
     AND ((tblpack.packeduser) Is Not Null)) 
     OR (((tblpack.iscommunity)=True) 
     AND ((tblpatient.over5med)=True) 
     AND ((tblpack.isconcession)=True) 
     AND ((tblpack.cycledate) Between ? And ?) 
     AND ((tblpack.packeduser) Is Not Null)) 
GROUP BY Format(tblpack.cycledate, 'MMMM'), Year(tblpack.cycledate), Month(tblpack.cycledate) 
ORDER BY Format(tblpack.cycledate, 'MMMM'), Year(tblpack.cycledate) 

参考文献:

How to configure Jet 4.0 to prevent unsafe functions from running in Access 2003

month name from date field in c#.net from access database

+0

ありがとうTetsuya、 私の唯一の質問は:私のクエリは2台のコンピュータで動作し、3台では動作しないのはなぜですか? –

+1

これらのPCのアクセス設定とバージョンはまったく同じですか?この問題は、MSJetエンジンを使用しているときによく発生します(ACEエンジンに似た問題があるかどうか分かりません)。 –

+0

ありがとう、それはそれを説明します。たぶんそれはアクセスバージョンです。私はあなたの質問に変更しました、助けてくれてありがとう! :) –

関連する問題