Microsoft Access 掲示板

6,622 件中 5,601 から 5,640 までを表示しています。
2
nokonoko 2020/06/24 (水) 15:26:16 653a6@54883

できました!
あとで、よく勉強します。

1

下記でどうでしょうか。

Me.lst1.AddItem Format(rs!Qty, "0.00")
4
cerophan 2020/06/23 (火) 12:10:22 a6218@1c915

絶対無理だと思って質問してしまいましたが、探り探り作成して、なんとかうまくいきました!更新クエリを作って、そこにマクロでフォームから該当の案件番号を追加実行できるようにしました。クエリは更新クエリと、作成用のクエリ2つにすればよかったようです。また問題が起こってきたら質問させていただくと思います。失礼いたしました。

3
te17448 2020/06/23 (火) 11:18:10 17771@eee3d

'フォーム 開くとき
Private Sub Form_Open(Cancel As Integer)
Dim i As Integer

    For i = 1 To 42
        Me("T" & i).OnClick = "=SetDate(" & i & ")"
    Next
    Me.cmdPrev.OnClick = "=MoveMonth(-1)"
    Me.cmdNext.OnClick = "=MoveMonth(1)"
'    SetCalendar DLookup("日付", "T_予定") '開く時の日付表示
    SetCalendar Format(Now(), "yyyy/mm/dd")

End Sub

私はこれで動きました。

3
cerophan 2020/06/22 (月) 19:41:31 a6218@1c915

質問を修正しました。コメント1,2は編集できなかったため、古いものが残っています。すみません。

1

これだけの情報では回答は難しいです。
そのアクセスのシステムを作成した人に問い合わせるのが早道です。
作成した人に連絡がとれないなら、Accessに関してそれなりのスキルを持っている人が実際のファイルをみて解析しないと無理でしょう。

4
cerophan 2020/06/19 (金) 12:14:20 1d451@04686 >> 3

テーブル設計の見直しについて、自分なりにずっと考えています。正しく変更できるかはわかりませんが、とりあえず変更はする予定です。それでもフォームに書き込めなかったらまた、質問させていただきます。ご迷惑をおかけしました。

1
スナフキン 2020/06/19 (金) 10:03:49 a9237@06760

すみません
https://tsware.jp/tips/tips_642.htm
で解決しそうでした^^;;

2
cerophan 2020/06/18 (木) 19:55:11 1d451@04686

この質問の【T_お店】は【T_案件】の間違いです。別で全体的な構成の相談をさせていただいていたので、お伝えさせていただきました。この質問記事を編集しようと思いましたが、できませんでした。すみません。

3
cerophan 2020/06/18 (木) 19:44:41 1d451@04686 >> 2

できるだけ具体的に書いたつもりですが、つたない文章でわかりづらく申し訳ありません。(お客様=お店という点を残しましたが、実際は企業相手です。そこだけフィクションです)

2
cerophan 2020/06/18 (木) 18:03:55 f1ed8@04686

実は、ネットへの書き込みは半永久的で、あまり本当の名前で全部書くと関係者に見られたとき恥ずかしいなと思い、テーブル名を別のものに置き換えていました。そのことが要らぬご負担をおかけする原因となってしまいました…本当に申し訳ありません…
しかも、置き換えると自分でも確認するとき混乱する原因となっておりました…
本当に愚かです…

後ほど、イメージしていただけるよう、本当の内容で改めて具体的に書かせていただきます。
申し訳ありません。

1
cerophan 2020/06/18 (木) 17:27:28 f1ed8@224bc

こちらについて記載にミスがありました。別で質問している件にも関わるので、一旦保留させてください。スミマセン…

1

テーブル設計はデータ内容と矛盾しないように設計する必要があるので、各テーブルのデータ内容の分析が重要です。

【T_お店枝番】ですが、一つのお店が複数の支店とか店舗を持っていて、その店舗ごとのデータを格納するということでしょうか(テーブル名やフィールド名からはこのような印象になります)。
しかし、「担当者ごとに枝番が分かれている情報」とのことだとすると上記の内容とは違うようですね。
この担当者というのは、店に複数の担当者がいて、担当者によって扱う商品が異なるということでしょうか。

【T_案件】とは具体的にどのようなものなのでしょうか。お店枝番 と 商品番号 があるということは、担当者と商品に関係のあるデータが格納されということになりますが、実際はそうなのでしょうか。

上記の点についての詳細な情報が分からないと、具体的にアドバイスは難しいですね。
一般的な商店とかに関するデータならだいたい推測できるのですか、どうも一般的なものとは異なる業務形態のようなので、推測もしづらいです。

現状のリレーションシップを図示すると下記のようになりますが、通常はこのようにループになるような結合はNGです。

             ┌→【T_案件】←─────┐
【T_お店】→【T_お店枝番】┤                │
             └→【T_お店の商品】─┘

下記のような結合になるような設計にすべきです。

【T_お店】→【T_お店枝番】→ 【T_お店の商品】→【T_案件】               │

あるいは、一から設計を見直す必要があるかもしれません。

3

年月欄が空白のものが存在しないときがあり、

where 条件文 = [年月] Is Null
となってますので、その場合は、フォームに新規レコードの表示になっているとおもいますが、
そうなってますか。(データ追加が可能な状態なら)

もし、そうなら、フォームを開くアクションのあとに、下記のIf文を追加すればいいでしょう。

If [Forms]![F個人情報].[newrecord]=True Then
 メッセージボックス
      メッセージ 新規レコードです。

Else
 メッセージボックス
      メッセージ 年月欄を埋めてください

2
cerophan 2020/06/18 (木) 12:54:16 a6218@1c915

ご回答ありがとうございます!年月欄が空白のものが存在しないときがあり、そういうときと区別させたいとおもったのですがややこしくなりそうでしょうか…

6
cerophan 2020/06/17 (水) 23:20:48 1d451@04686

問題が解決しました。Q_案件で担当者と案件を外部結合できていませんでした。また、外部結合がエラーでできなかったのですが、担当番号にデフォルトで0が入ってしまっていたことが原因でした。色々お騒がせしました。

4
cerophan 2020/06/17 (水) 18:21:58 1d451@04686

やってみたのですが、うまくいきませんでした。txt担当者を作るためにQ_案件で担当者と案件をつなぐと、F_案件に担当者が入ったものしか表示されなくなってしまうのですが、担当者が全部に入っていません。訳の分からないことを言っていたらすみません。パニック気味です…

3

↑で書き込んだ「ラベルやイメージのコントロールが背面に隠れてしまい」の部分ですがアンカーを使用した場合は、初期表示の画面サイズ以下でドラッグを開放すると画面が見切れてしまい操作不能という表現が正しかったです。
初期画面以下に縮小できないように規制するコードも思っていたよりも簡単に出来たので参考までに載せておきます。

Option Compare Database
Option Explicit

Private originX As Long
Private originY As Long

Private Sub Form_Load()
    originX = Me.InsideWidth
    originY = Me.InsideHeight
End Sub

Private Sub img_Resize_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button And acLeftButton Then
        ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0&)
    End If
End Sub

Private Sub img_Resize_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If originX >= Me.InsideWidth Then Me.InsideWidth = originX
    If originY >= Me.InsideHeight Then Me.InsideHeight = originY
End Sub

以上、ありがとうございました。

2

なるほど! SendMessageにこんな使い道があったとは! コードがすごくシンプルに実装できますね。
あと実装して分かったことですが、サブフォームやListBoxの範囲内でドラッグを開放した場合ラベルやイメージのコントロールが背面に隠れてしまい再度ドラッグすることが不可能になってしまいました。
対策としては、初期の画面サイズ(InsideWidth or InsideHeight)を記憶してそれ以下に縮小しないように規制するコードを試行錯誤してみようと思います。
なにはともあれ、短時間でこのようなアイデアを教授頂き大変有り難うございます。

3
cerophan 2020/06/17 (水) 17:11:58 1d451@04686

ダウンロードできました!作っていただいたアクセスファイルを直接確認できるなんて、感動してます。仕事中のためあとでゆっくり見ます。ありがとうございました!

1

年月欄が空白のレコードのみ抽出しるように設定されているのですよね。
ならば、If文は必要ないですね。
フォームを開くアクションのあとに、「メッセージボックス」を追加するだけです。

画像1

2

あっ、ごめなさい。アップロードするフォルダーを間違えてました。今、移動させましたので、ダウンロードできるはずです。ご確認ください。

1

最初、拡張ズームボックス関数 - hatena chipsを参考に、API の SetWindowLong で何とかしようと苦戦しましたが、うまくいきませんでした。

ふと、下記を思い出して、
タイトルバー以外をドラッグしてフォームを移動させる - hatena chips
これを参考にSendMessageで右下枠をクリックしたことにすればうまくいきました。

フォームの右下にラベルを配置して、下記のように設定します。

名前 lblResize
水平アンカー 右
垂直アンカー 下

フォームのモジュールを下記のように記述します。

Option Compare Database
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32.dll" ()

Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Const HTBOTTOMRIGHT = 17

Private Sub lblResize_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button And acLeftButton Then
        ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0&)
    End If
End Sub

以上です。ラベルを使用しましたが、四角形コントロールやイメージコントロールでもOKです。

右下以外でもサイズ変更したい場合は、下記を参考にConst宣言してください。

HTLEFT            10        可変枠の左辺境界線
HTRIGHT           11        可変枠の右辺境界線
HTTOP             12        可変枠の上辺境界線
HTTOPLEFT         13        可変枠の左上隅
HTTOPRIGHT        14        可変枠の右上隅
HTBOTTOM          15        可変枠の下辺境界線
HTBOTTOMLEFT      16        可変枠の左下隅
HTBOTTOMRIGHT     17        可変枠の右下隅

ちなみに、下記を追加すると詳細セクションのドラッグでフォームを移動できます。

Private Sub 詳細_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button And acLeftButton Then
        ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End If
End Sub
1
cerophan 2020/06/17 (水) 13:24:00 1d451@04686

ありがとうございます!!早速ダウンロードを試みましたが、「404 File Not Found」となりました。
もう削除されてしまったでしょうか…遅くなり申し訳ありません。

2
かい 2020/06/15 (月) 21:38:12 cef7f@e87f3

漠然とした質問についてご回答頂きありがとうございます、試して確認する事ができました。
ただ、1レコード毎に処理しているのでしょうか、処理時間がかかりました。
Between を使いながら選択クエリで同様の事を実現できたので、追加クエリと組み合わせて処理しようと思います。

1

もやっとした説明ですが、下記のようなことでしょうか。

TBL1

ID
1
2
3
4
5
6
7
8
9
 
TBL2
スタートエンド更新値
131
452
663
794
 
更新クエリを実行して下記のようにしたい。

TBL1

ID
11
21
31
42
52
63
74
84
94
 
だとしたら下記のような更新クエリになります。
UPDATE TBL1, TBL2 SET TBL1.値 = TBL2.更新値
WHERE TBL1.ID Between TBL2.スタート And TBL2.エンド;
1

サブフォームのヘッダーかフッターにテキストボックスを配置してコントロールソースを下記のように設定します。
=Sum([数量]*[仕切値])
これでサブフォームに表示されているレコードの集計値(=整理番号毎の集計値)が表示されます。
このテキストボックスの名前を「金額計」とします。

メインフォームにテキストボックスを配置してコントロールソースを下記のように設定します。

=[サブフォームコントロール名].Form![金額計]

サブフォームコントロール名については下記を参照してください。

サブフォームとサブフォームコントロールの違いとは? - hatena chips

4

こちらからはそちらのファイルは見れないので、まずは、関連する現状のテーブル名、フィールド名、主キーフィールドの設定を提示してもらえませんか。

あるいは、右カラムの下のほうの「ファイル送信フォーム」から現状のファイルを送信してください。

3
眠神 2020/06/12 (金) 17:44:41 1667b@003b8

主キーテーブルにな納税通知書番号しか入れていないのですが、それが理由でしょうか?

2
眠神 2020/06/12 (金) 17:43:32 1667b@003b8

hatenaさんがおっしゃった通り,通知書番号、氏名、郵便番号、住所を格納したテーブルを作成し、それぞれ各フィールドにデータを指定し、リレーションシップで繋げたのですが、参照適合性が一致しないとの事でした。

1

通知書番号、住所、名前、郵便番号 を格納したテーブルが必要になります。
あるいは、住所、名前、郵便番号 を格納したテーブルと、通知書番号を格納したテーブルと、それらを関連付けるテーブルが必要です。

現状、どのようなテーブルがありますか。

2
nokonoko 2020/06/12 (金) 11:35:00 653a6@54883

ありがとうございました。
編集言語、作成言語(言語パックインストール)を英語にしてから開発することで、海外でも使えるようになったようです。

7
名前なし 2020/06/11 (木) 15:40:43 3f80a@c9e80

同じような時期に同様の事象にとても苦労しましたので参考にしてください。
結果を先に書くと Window10のUPDATEの影響で共有方法が変わってしまったようでした。

利用環境は、access2010で作成したaccdbを access2016で使用しています。
データ部だけをサーバに置き10人程度で参照、追加、更新等を同時に実施しています。
データ部へのアクセスにレコードロックはかけていません(まれにDirtyとなることもあります)

ある日、ACCESSの設定変更していないのに突然サーバにあるDBに接続できなくなりました。
まったく原因がわからず、ネットで数日間調べていました。
その間もDB障害が発生し、その都度最適化をしていました。
やっと1件だけ同じ現象を解消したとの記事があり、適応してみました。

内容は 「暗号化方法の設定」を変更しました。
ACCESS→ ファイル→ オプション→ クライアントの設定→ 規定の暗号化方法使用する(高度なセキュリティ)
規定の暗号化方法使用する(高度なセキュリティ) → 以前の暗号方法を使用する にしました。
これにより以前と同様使用できるようになりました。
適宜、オプションの中身を確認するようにしています。

最近も「クライアント設定」を確認したところ「レコードレベルでロックして開く」
にチェックが入っていました。こんなチェックは付けた覚えがありません。
これも全端末の設定を外しています。

1
hiroton 2020/06/11 (木) 08:21:37 729ae@f966d

これかな?
Office で編集言語または作成言語を追加する、または言語設定を行う

あと、自分の環境では英語はインストール済みでしたが
Office の言語アクセサリ パック

※試していません

3
あくせく 2020/06/10 (水) 07:11:07 fd919@de80a

ありがとうございます。
ご指摘通り、消し忘れでした。

1

CSVファイルなどのテキストファイルをインポートするときはインポート定義を設定できますが、エクセルファイルをインポートにはインポート定義はないです。

「保存済みのインポート操作」のことを言っているのなら、その画面で、ファイル名のところをクリックすれば編集できます。

Access2019で確認しましたが、下記のリンク先によると2007でもできるようです。

ACCESS 2007 で、保存済みのインポート操作を編集したいのですが、どうす... - Yahoo!知恵袋

2

問題なと思います。

ただ、下記の変数宣言は、使ってないので不要でしょう。
Dim strSQL As String

1
あくせく 2020/06/09 (火) 16:47:53 fd919@de80a

一応こんなのでできましたが、問題はないでしょうか。

    Dim strSQL As String
    Dim rst As DAO.Recordset

    Set rst = Me.subForm.Form.RecordsetClone

    rst.MoveFirst

    Do Until rst.EOF

        rst.Edit

            rst.Fields(checkItem) = True

        rst.Update

        rst.MoveNext

    Loop

    Me.subForm.Form.Requery

2
あくせく 2020/06/09 (火) 07:28:21 fd919@de80a

hatanaさん

ご回答ありがとうございます。
なるほど、気づきませんでした。
連続した番号のフィールドを作って、こちらを使わせていただきます。

1

下記のSQLで可能です。

SELECT AutoNo, (([AutoNo]-1)\3)+1 As Cate1, (([num]-1) Mod 3)+1 As Cate2
FROM Table1;

ただし、オートナンバー型の場合、削除したものは再利用されないので、番号が連続している保証はないので注意が必要です。連続した連番が必要なら、オートナンバー型とは別に連番用のフィールドを用意したほうかいいでしょう。