• 締切済み

ACCESSでの置換で質問です。

クエリで特定のフィールドの値を置換するようにしていますが、完全一致ではなく一部に特定の文字があった場合、別の名前に置換したいです。 元データ 契約番号 R00332 R00224 R00553 個人所有 会社所有 上記の契約番号のフィールドを下記のように新しい別フィールドに置換したい。 Rが入っている数字は、部門契約 個人所有は、空欄 会社所有は、空欄 としたいのですが、Replaceで対応しようとしましたがエラーが出てしまい駄目でした。 他に方法ありますでしょうか? また、契約日のフィールドも下記のように変更したいのです。 契約日 1月10日 2月3日 1月3日 1月13日 契約日のフィールドの日付が1月中になっているものは2月1日とし、2月中のものは3月1日と請求日をこれも新しい別フィールドに記載したい。 

みんなの回答

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

No.2です。 1.置換  クエリのデザインモードで【更新】ツールをクリックすると  レコードの更新行が追加されます。  ここへReplce関数を使います。  添付はoffice2003をoffice2010に置き換えます。  Replace(Nz([ソフト名]),"2003","2010") 2.請求日の計算  前回の回答なぜか1月の契約日だけ請求日が2月になりません。  請求日:([契約日]-Day([契約日])+32)-Day(([契約日]-Day([契約日])+32))+1  と訂正下さい

seisei1016
質問者

お礼

ありがとうございました。助かります。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

請求日ですが、12月、大の月、小の月、うるう年があり、 これら全てに適用するため 請求日: ([契約日]-Day([契約日])+32)-Day(([契約日]-Day([契約日])+31)) でいかがでしょうか ※これは、ある日付から日を引くと、前月末になります。

回答No.1

組み込み関数で IIf という関数があります。 ExcelなどでIF関数使ったことありませんか?それらとほぼ同じで、条件分岐をしたいときに使う関数です。 フィールド名:IIf( 条件式 , 真の時の値 , 偽の時の値 ) という記述の仕方をします。 契約番号の例で具体的に書くならば、 例)  契約種別 : IIf( LEFT([契約番号],1) = "R" , "部門契約" , "") 契約日の件は、その翌月の1日というルールでいいですか? ならば、IIfを使わなくても、 請求日: DateSerial(Year([契約日]),Month([契約日])+1,1) とすればできそうです。 DateSerial関数は DateSerial( 年 , 月 , 日) を日付型にして返してくれる関数です。 月のところを契約日の翌月なので 契約日の月+1 、日は1日固定で 1 を指定しています。

seisei1016
質問者

お礼

できました。ありがとうございました。助かります。

関連するQ&A