0

SharePoint に継続的に入力されるデータがあります。このテーブルは MS Access にリンクされており、月に 1 回、ライブの SharePoint データベースから静的な Access データベースにコピーしてデータを凍結します。これは SQL クエリを使用して行いますが、うまく機能します。

クエリの要点は次のとおりです (この例では単純化してフィールドを削除しました)。

INSERT INTO [CALL DATA] ( FiscalMonth, FiscalYear, EncDateTime, TimeDuration )
SELECT "07-Apr" AS FiscalMonth, "FY13" AS FiscalYear, 
CallAttempts.[Attempt Date & Time], CallAttempts.[Attempt Duration (Mins)]
FROM CallAttempts
WHERE ((CallAttempts.[Attempt Date & Time]>#4/1/2013#) AND 
       (CallAttempts.[Attempt Date & Time]<#5/1/2013#) AND 
       (CallAttempts.[Attempt Duration (Mins)] IS NOT NULL));

ご覧のとおり、毎月、このクエリの一部を手動で更新する必要があります。and および and の値、FiscalMonthおよびFiscalYear日付と時刻の制約です。これは私にとっては問題なく機能しますが (コーディングしました)、技術者以外の人に引き渡さなければなりません。

私は Access に精通していません。このクエリを実行する前に更新するユーザーフォームを作成できますか (ドロップダウン選択と実行用のデータピッカーを追加することを考えています)。 それは可能ですか?

または、これを完全に行うためのより良い方法はありますか?

4

1 に答える 1

1

はい、とても簡単にできます。これで始められるはずです:

Private Sub cmdGo_Click()
   Dim Mo As Integer
   Dim Yr As Integer
   Dim strSQL As String
   Dim Mon As String
   Dim DateStart As Date
   Dim DateEnd As Date

   strSQL = ""
   strSQL = strSQL & "INSERT INTO [call data] " & vbCrLf
   strSQL = strSQL & "            (fiscalmonth, " & vbCrLf
   strSQL = strSQL & "             fiscalyear, " & vbCrLf
   strSQL = strSQL & "             encdatetime, " & vbCrLf
   strSQL = strSQL & "             timeduration) " & vbCrLf
   strSQL = strSQL & "SELECT '07-@Mon' AS FiscalMonth, " & vbCrLf
   strSQL = strSQL & "       'fy@yr'   AS FiscalYear, " & vbCrLf
   strSQL = strSQL & "       callattempts.[attempt date & time], " & vbCrLf
   strSQL = strSQL & "       callattempts.[attempt duration (mins)] " & vbCrLf
   strSQL = strSQL & "FROM   callattempts " & vbCrLf
   strSQL = strSQL & "WHERE  ( ( callattempts.[attempt date & time] >= #@DateStart# ) " & vbCrLf
   strSQL = strSQL & "         AND ( callattempts.[attempt date & time] <#@DateEnd# ) " & vbCrLf
   strSQL = strSQL & "         AND ( callattempts.[attempt duration (mins)] IS NOT NULL ) )"

   Mo = Me.cboMonth.Value
   Yr = Me.cboYear.Value
   Mon = MonthName(Mo, True)
   DateStart = DateSerial(Yr, Mo, 1)
   DateEnd = DateAdd("m", 1, DateStart)
   strSQL = Replace(strSQL, "@mon", Mon)
   strSQL = Replace(strSQL, "@Yr", Yr)
   strSQL = Replace(strSQL, "@DateStart", DateStart)
   strSQL = Replace(strSQL, "@DateEnd", DateEnd)

   'Debug.Print strSQL
End Sub
于 2013-05-10T16:58:36.363 に答える