Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

新着の投稿記事


タイトルRe^3: 【Access】2つのテーブル 複数条件 引き算
記事No10864   [関連記事]
投稿日: 2017/05/25(Thu) 17:26
投稿者tkawn
> >                        "予算CD = " & 予算CD & " AND 月 = " & 月) AS 予算残額
ここの書式が、各フィールドのデータ型によって違ってきます。
こちらをご参考にしてみてください。

抽出条件文の書式
https://accesskid.wordpress.com/2010/10/12/%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6%E6%96%87%E3%81%AE%E6%9B%B8%E5%BC%8F/
2. 定義域集計関数やFind系メソッドのCreteria引数あるいは レコードセットやフォームのFilterプロパティの条件をVBAで指定する。

タイトルRe^2: 【Access】2つのテーブル 複数条件 引き算
記事No10863   [関連記事]
投稿日: 2017/05/25(Thu) 17:19
投稿者1232
クエリのSQLビューで入力してみましたが、クエリの結果「予算残額」フィールドが
全て空白で返されてしまいました…。

まだまだ初心者で、試行錯誤しながら作成してますので
イチから勉強しなおしてきます。

ありがとうございました!
今後の参考にさせて頂きます。

> テーブルではなくクエリですが、
>
> SELECT 予算CD,
> 月,
> 予算金額 - DSum("実行金額",
> "テーブル2",
> "予算CD = " & 予算CD & " AND 月 = " & 月) AS 予算残額
> FROM テーブル1;
>
> ではどうですか?

タイトルRe^2: 【Access】2つのテーブル 複数条件 引き算
記事No10862   [関連記事]
投稿日: 2017/05/24(Wed) 09:30
投稿者1232
ご回答ありがとうございます!
ちょっと、明日にならないとPC触れないので、明日試してみてまたご報告させて頂きます!


テーブルではなくクエリですが、
>
> SELECT 予算CD,
> 月,
> 予算金額 - DSum("実行金額",
> "テーブル2",
> "予算CD = " & 予算CD & " AND 月 = " & 月) AS 予算残額
> FROM テーブル1;
>
> ではどうですか?

タイトルRe: 【Access】2つのテーブル 複数条件 引き算
記事No10861   [関連記事]
投稿日: 2017/05/23(Tue) 19:18
投稿者tkawn
テーブルではなくクエリですが、

SELECT 予算CD, 
       月, 
       予算金額 - DSum("実行金額",
                       "テーブル2",
                       "予算CD = " & 予算CD & " AND 月 = " & 月) AS 予算残額
  FROM テーブル1;

ではどうですか?

タイトル【Access】2つのテーブル 複数条件 引き算
記事No10860   [関連記事]
投稿日: 2017/05/23(Tue) 16:59
投稿者1232
OS:Windows7
Access Version:2016


下記のような、2つのテーブルが存在していて
テーブル1の金額から、テーブル2の金額を引き算した結果の
テーブル3を表示させたいのです。
引き算をする条件は、同じ(予算CD)&同じ(月)に対応するレコードです。
仕様上、二つのテーブルを結合はさせたくありません。

テーブル1は、CD別・月別で既に金額が振り分けてあり
テーブル2は、CD別・月別で一旦集計をし(重複レコードが発生するため)、
テーブル1の対応するレコードより引き算をしたいです。

■テーブル1
予算CD 月 予算金額
=======================
 1   1 \100,000
 1   2 \200,000
 2   1 \100,000
 2   2 \200,000

■テーブル2
予算CD 月 実行金額
=======================
 1   1 \50,000
 1   1 \10,000 ←重複レコード発生あり
 2   1 \50,000
 2   2 \10,000 
 1   1 \0    ←こんなのが発生することもあり

■テーブル3(これを出したい)
予算CD 月 予算残額
=======================
 1   1 \40,000
 1   2 \200,000
 2   1 \50,000
 2   2 \190,000


恐らくSQLで解決するのかな…と思うのですが、色々例を見てみても
複数条件での引き算となると、理解が追い付きません。
勉強不足で大変恐縮なのですが、どうぞご教授頂きますよう、お願い致します。

タイトルRe^2: DAOで一行出力
記事No10859   [関連記事]
投稿日: 2017/04/13(Thu) 11:06
投稿者ケバブ
解決済: ON
皆様出来ました。
ありがとうございました。

タイトルRe: DAOで一行出力
記事No10858   [関連記事]
投稿日: 2017/04/13(Thu) 01:26
投稿者hatena
解決済: ON
前の回答が理解できたら、
& でフィールドを連結するのは冗長なので、
下記のようにする方法も学習するといいでしょう。

Sub 一行出力(エクスポート999 As String, test As String)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim Tmp As String
    Dim i As Long

    Set db = CurrentDb
    Set rs = db.OpenRecordset(エクスポート999)


    Open Application.CurrentProject.Path & "\一行出力.txt" For Output As #1
    If rs.EOF = False Then
        Do Until rs.EOF
            Tmp = Tmp & " "
            For i = 0 To rs.Fields.Count - 1
                Tmp = Tmp & rs.Fields(i)
            Next
            rs.MoveNext
        Loop
    End If
    Tmp = Mid$(Tmp, 2)
    Print #1, Tmp
    Close #1
    db.Close
    MsgBox Application.CurrentProject.Path & "\一行出力.txt として書き出しました。"
End Sub

タイトルRe: DAOで一行出力
記事No10857   [関連記事]
投稿日: 2017/04/12(Wed) 17:16
投稿者tkawn
解決済: ON
> Access VBAでADOで
DAOですね。
GetRows メソッドhttps://msdn.microsoft.com/ja-jp/library/office/ff194427.aspx
はどうでしょうか?

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim intF As Integer, intR As Integer
Dim varRcord As Variant
Dim Tmp As String

Set db = CurrentDb
Set rs = db.OpenRecordset(エクスポート999)

Open Application.CurrentProject.Path & "\一行出力.txt" For Output As #1

varRecord = GetRows(rs)

 For intR = 0 To Ubound(varRecord, 1)

  For intF = 0 To UBound(varRecord, 2)
    Tmp = Tmp & " " & varRecord(intF,intR)
   Next IntF
   
  Tmp = Tmp & vbCrLf
 Next intR

Tmp = Mid$(Tmp, 2)

Print #1, Tmp
Close #1
db.Close
MsgBox Application.CurrentProject.Path & "\一行出力.txt として書き出しました。"
End Sub

タイトルRe: DAOで一行出力
記事No10856   [関連記事]
投稿日: 2017/04/12(Wed) 17:13
投稿者hatena
解決済: ON
下記のコードで、フィールド1〜5まではつなげて出力できます。
コードの意味が理解できれば、16までつなげるのは簡単ですよね。
 

Sub 一行出力(エクスポート999 As String, test As String)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim Tmp As String
    Dim SW As Boolean


    Set db = CurrentDb
    Set rs = db.OpenRecordset(エクスポート999)


    Open Application.CurrentProject.Path & "\一行出力.txt" For Output As #1
    SW = True
    If rs.EOF = False Then
        Do Until rs.EOF
            If SW Then
                Tmp = rs.Fields("1") & rs.Fields("2") & rs.Fields("3") & rs.Fields("4") & rs.Fields("5")
                SW = False
            Else
                Tmp = Tmp & " " & rs.Fields("1") & rs.Fields("2") & rs.Fields("3") & rs.Fields("4") & rs.Fields("5")
            End If
            rs.MoveNext

        Loop
    End If
    Print #1, Tmp
    Close #1
    db.Close
    MsgBox Application.CurrentProject.Path & "\一行出力.txt として書き出しました。"
End Sub

タイトルDAOで一行出力
記事No10855   [関連記事]
投稿日: 2017/04/12(Wed) 14:28
投稿者ケバブ
解決済: ON
OS:Windows7
Access Version:2010

Access VBAでADOで「エクスポート999」というテーブルがあり、フィールドが1〜16の16個あり全てつなげて一行出力をしたいです。下記のやつでは1列は出力できるのですが2〜15列は出力できません。100行以上あります。
どこをどんな風にすれば2〜15列も出力出来るのでしょうか?
宜しくお願い致します。
Sub 実行()
一行出力 "エクスポート999", "テスト"
End Sub
Sub 一行出力(エクスポート999 As String, test As String)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fld As Field
Dim Tmp As String
Dim SW As Boolean

Set db = CurrentDb
Set rs = db.OpenRecordset(エクスポート999)
Set fld = rs.Fields("1")



Open Application.CurrentProject.Path & "\一行出力.txt" For Output As #1
SW = True
If rs.EOF = False Then
Do Until rs.EOF
If SW Then
Tmp = fld
SW = False
Else
Tmp = Tmp & " " & fld
End If
rs.MoveNext

Loop
End If
Print #1, Tmp
Close #1
db.Close
MsgBox Application.CurrentProject.Path & "\一行出力.txt として書き出しました。"
End Sub

ページの先頭へ 前ページへ戻る