友人と私は、プロジェクトとして設計している請求システムに適したコードを取得するために、何時間も試みてきましたが、ほとんど進歩がありませんでした。
フィールド InvoiceNo を値に更新しようとしています (以前の VisualBasic コードで実行)。CustomerNo は特定の値で、FinishDate は 2 つの日付の間にあります。最初は TO_DATE を使用しようとしていましたが、Access が使用する SQL では同じではないことに気付きました (多くの検索を行った後)。
これは、私がテストして機能するものを取得し、VisualBasic に変換して変数に入れるために使用してきた単純なステートメントです。少し読みやすくなったので、紹介したいと思います。
UPDATE tblJob SET tblJob.InvoiceNo = '8' WHERE tblJob.CustomerNo = '1' AND (tblJob.FinishDate BETWEEN cdate(format('08/09/2013', '##/##/####')) AND cdate(format('03/10/2013', '##/##/####')));
いくつかの例を見た後、私たちの日付はスラッシュなしであることが意図されているように感じます。だから私はそれを試しましたが、それもうまくいきませんでした。
これらすべてから得られた VisualBasic コードを次に示します。これはまったく同じですが、テストに使用した設定値ではなく、いくつかの変数を使用しています。
DoCmd.RunSQL ("UPDATE tblJob SET tblJob.InvoiceNo = '" & newInvoiceNo & "' WHERE tblJob.CustomerNo = '" & VbCustNo & "' AND (tblJob.FinishDate BETWEEN cdate(format('" & Forms![frmMainMenu][txtFirstDate] & "', '##/##/####')) AND cdate(format('" & Forms![frmMainmenu][txtEndDate] & "', '##/##/####')));")
Access で文字列を日付に変換すると、Oracle の TO_DATE ではなくcdate (format()) であることがわかりました。しかし、それを適切に実行することはできないようです。どんな助けでも大歓迎です。