0

SQLクエリを介してアクセスデータベースからレコードを取得することに取り組んでいます。origina クエリは、最新の日付データを取得します。しかし、たとえば 2012 年 3 月 3 日にツールを実行したい場合でも、最新のデータが取得されます。しかし、2012 年 3 月 3 日の日付または 2012 年 3 月 3 日に近いが日付を超えない日付のいずれかであるデータが必要です。たとえば、2012 年 3 月 3 日が利用できず、2012 年 3 月 2 日がデータベースで利用できる場合、その日付を選択する必要があります。変更されたクエリを以下に示します。予約語のスペルミスや句読点の間違いなどは例外です。質問を手伝ってもらえますか。クエリでは、切り捨てが私のプログラムから入力されます。私のクエリは次のとおりです。

CString sel = "SELECT I.ProductType, I.Spread, I.DateUpdated FROM MortgageRateSpreads I,(select ProductType, MAX(DateUpdated) AS DateUpdated1"; sel += "where DateUpdated <=" ;
sel += tRunDate.Format(" {ts '%Y-%m-%d' }");

CRecordset set(&pdatabase);

    try
    {

        double  val;
        CDBVariant var;

        if (set.Open(CRecordset::forwardOnly, sel/*, CRecordset::readOnly*/)) 
        {
            m_Log->Log("recordset is open");
            while (!set.IsEOF())

MY Sel は:

sel "SELECT I.ProductType, I.Spd, I.DateUpdated FROM MRSpds I,(select ProductType, MAX(DateUpdated) AS DateUpdated1where DateUpdated <={ts '2012-02-08'  } FROM MRSpds GROUP BY ProductType) T WHERE I.ProductType = T.ProductType AND I.DateUpdated =T.DateUpdated1"

ありがとうございました

            {               
4

1 に答える 1

0

ms access は日付の前後に # 記号が好きだと思います。DateUpdated<=#3-3-2012# sel += "where..." の場合、sel += "where ..." などのスペースが必要です。また、SQL ステートメントの日付文字列は、DateUpdated <= のようになります。 #2012/3/3#

また、ネストされた select ステートメントには、where 句の後に from 句があるようです。私はそれが次のようなものであるべきだと思います

(ProductType を選択、MAX(DateUpdated) AS DateUpdated1 FROM MRSpds where DateUpdated <= #2012-02-08# GROUP BY ProductType) T

于 2012-12-30T00:39:43.347 に答える