1

AccessとVBAのアマチュアである私は、次のような壁にぶつかりました...

MS Access 2007では、次のクエリがあります。

SELECT .... WHERE format(NZ(l_f_date),'yyyy-mm-dd')<=**'2012-04-03'**);

もちろん少し短くしました。

データベースには、毎日実行する必要のある約20のクエリがあります。クエリのグループを実行するために必要な方法で実行するために、4つのマクロを作成しました。問題は、これらのクエリのすべてで、最初に日付を変更する必要があることです(上のクエリのように)。もう少し自動化する方法を探しています。

フォームを作成し、その上にすべてのマクロ用のボタンと2つのテキストボックスを配置して、必要な2つの日付を入力することを考えています。さて、太字の部分にそれらの日付を表示する必要があります。私がそれについて考えるとき、私には2つの選択肢があります:

  • データベースに一時テーブルを作成して、これら2つの日付を格納し、クエリでこれら2つのフィールドを取得します。
  • テキストボックスの値を、クエリの太字部分に直接挿入します。

私は最初の解決策を管理できると思いますが、2番目の解決策は頭を痛めています。

手伝ってくれますか?


コメントからのSQL

select proc_desc,count(s) as broj 
into upit3 
from ( select distinct a.case_id as s,
          a.org_case_id,a.act_date as day,d.prod_id,d.prod_desc,
          c.fname,c.dpd,c.due_amount,proc_id,proc_desc 
       from actions_b as a, cases_old_b as c,processes_b as p,
            product_dict_b as d 
       where a.org_case_id=c.[org_ case_id] 
       and a.act_date=Forms!Form!Text10 and d.prod_id=c.product 
       and p.proc_id=c.process and not_lead=1 ) 
group by proc_desc order by proc_desc;

OK、サンプルデータ....

x.datesでは、値は次のようになります:03.04.2012 a.act_date
では、 値は次のようになります:01.07.2011 13:53:56

したがって、この値をそのまま使用できない場合、クエリでLIKEステートメントを使用することはできますか?疑似: WHERE a.act_date LIKE x.date%
可能であれば、どのように使用しますか?私はSQLとアクセスクエリの初心者です...私はグーグルですが、今回のように時々行き詰まります。
ありがとう

4

3 に答える 3

1

この構造:

SELECT .... WHERE format(NZ(l_f_date),'yyyy-mm-dd')<='2012-04-03');

良い考えではありません。一般的なルールは、等号の左側にあるフィールド (列) 名に固執することです。そう

SELECT .... WHERE l_f_date <=#2012-04-03#

Null は含まれません。日付が文字列ではなく日付であることを願っています。

次にフォームを追加します。

SELECT .... WHERE l_f_date <= Forms!TheNameOfTheForm!TheNameOfTheTextbox

コメントを編集

クエリ デザイン ウィンドウを使用していますか? 次のテスト クエリを試してください。

SELECT a.case_id, a.act_date
FROM actions_b AS a
WHERE a.act_date=Forms!Form!Text10
于 2012-04-04T09:33:58.990 に答える
0

わかりましたので、昨日と今日の日付を格納するためだけに使用される単純な 2 列のテーブルをデータベースに作成することにしました...フォームに 2 つのテキスト ボックス、1 つのボタンを追加し、次の手順をボタンに追加しました:

Private Sub Command25_Click()
CurrentDb.Execute "DELETE * FROM Datumi"
Dim tbl As Recordset
Set tbl = CurrentDb.OpenRecordset("Datumi")
tbl.AddNew
tbl!brojka = "1"
tbl!datum = Text8.Value
tbl.Update
tbl.AddNew
tbl!brojka = "2"
tbl!datum = Text10.Value
tbl.Update
End Sub

ご覧のとおり、ボタンをクリックするとテーブルがクリアされ、新しい値が 2 行に保存されます... 行 1 は昨日、行 2 は今日です...

その後、次のようにそのテーブルから値を取得します。

... where x.brojka=1 and format(a.act_date,'yyyy-mm-dd')=format(x.datum,'yyyy-mm-dd') ...

もっとうまくできると確信していますが、これは私にとってはうまくいきます...

于 2012-04-10T12:36:38.077 に答える