Microsoft Access 掲示板

6,622 件中 4,561 から 4,600 までを表示しています。
9

SQL文を拝見しましたが、特に問題はなさそうです。
こうなると、デバッグ作業をすることになりますが、実ファイルのないこちらでは無理です。
下記のリンク先を参考にステップ実行によるデバッグ作業を行ってください。

最も基本的なステップ実行 - Excel VBA

8
トマト 2020/12/07 (月) 13:27:15 0029a@1c915

テーブルにしてみたところ、リンクが切れている部分についてのエラーは出ましたが、それ以外のエラーは出ませんでした。SQL文ですが、そのまま掲載するのもちょっとあれなので、お送りさせていただきますね。ありがとうございます。

1
hatena 2020/12/07 (月) 13:05:05 修正

クエリのデザインビューで下記のように設定してください。

フィールド:生死[Forms]![F_検索]![tgl_生死]
抽出条件:[Forms]![F_検索]![tgl_生死]
または:False

あるいは、

フィールド生死
抽出条件IIf([Forms]![F_検索]![tgl_生死]=True,Yes,[生死])

前者は[tgl_生死]が押されてないときに、
「生死」がNullのレコードが、前者は表示されますが、後者は表示されません。

7

エラーメッセージから推測すると、サブフォームのレコードソースのクエリに問題があるように思えます。

サブフォームのレコードソースをクエリではなくテーブルにしたらどうなりますか。
それでエラーが出ないなら、クエリに問題があるということになります。
その場合は、現状のクエリのSQL文を提示してください。

2
nokonoko 2020/12/07 (月) 09:42:04 653a6@54883

ありがとうございました。解決しました。

6
トマト 2020/12/07 (月) 08:53:30 修正 0029a@1c915

ありがとうございます。再確認しました。サブフォームコントロール名で間違いありません。サブコントロール名とサブフォームコントロール名が同じものに設定されていたので、試しにさぼフォームコントロール名を変更して試してみましたが、エラー発生状況は同じでした。
おっしゃるとおり、デバックボタンを押すと該当の行が反転される状況です。

7
hatena 2020/12/06 (日) 13:04:55 修正

ダイアログだと閉じるときrequeryになるということでしょうか?

はい、その通りです。
Windowmode:=acDialog を指定して(ダイアログモードで)開くと、開いたフォームを閉じるまで次のコードに進みません。
閉じた後に次のコードが実行されます。

5

「実行時エラー2471 クエリパラメーターとして指定した式でエラー'年月日'が発生しました」というエラーが出たときに、デバッグボタンをクリックするとその行が反転表示されるのですか。

念のために確認ですが、上記の「Fサブ管理」というのはサブフォームコントロール名ですか。
サブフォーム名サブフォームコントロール名は別物です。

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

8

ご教示ありがとうございます。今回の件は、メインのパソコンから手動で操作します。システム移管中でして少しの間だけの対処法でしたので。また、宜しくお願い致します。

4
トマト 2020/12/05 (土) 22:26:12 0029a@1c915

ご確認ありがとうございます。
エラーが出るコードはここになります。

Private Sub 更新ボタン_Click()
    Me.Fサブ管理.Form.Form_AfterUpdate '←←ここです。
End Sub
6
セロハン 2020/12/05 (土) 20:21:35 f1ed8@5dbd2 >> 5

ありがとうございます。そこまで考えが及びませんでした。
スミマセン、F管理を閉じるとき、F管理総合をrequeryしないといけないと思っていたのですが、教えていただいた内容だとF管理を開くときにrequeryしているようです。
ダイアログだと閉じるときrequeryになるということでしょうか?

5

Forms!F管理総合 と 他フォームが同時に開いていることがないということが保障されていればいいですが、
もし、同時に開いていて、他フォームから「F管理」を呼び出したとき、意図しない動作になる恐れがあります。

現状、同時に開くことがなくても、将来、機能を追加したり、仕様変更でそうならないとも限りません。

自分がするなら、「F管理」をダイアログモードで開いて、「F管理総合」の方で自身を再クエリするという方法を使いますね。

「F管理総合」のモジュール

DoCmd.OpenForm "F管理", Windowmode:=acDialog
Me.Requery

「F管理」のモジュール

Private Sub Form_Close()
  Me.Refresh
End Sub

ご参考までに。

3

そのエラーがでるコードはどこですか。

4
セロハン 2020/12/05 (土) 10:33:41 0029a@1c915 >> 3

On Error Resume Nextを使えばいいですね。解決しました。

2
トマト 2020/12/05 (土) 09:24:09 0029a@1c915

ありがとうございます。大変参考になりました。
しかし、今回のコードのせいかエラーが出ます。
「実行時エラー2471 クエリパラメーターとして指定した式でエラー'年月日'が発生しました」
エラーを発生させない方法はありますでしょうか。

サブフォーム内のコード

Public Sub Form_AfterUpdate()

    Me.Requery

    Dim maxDate
    maxDate = DMax("年月日", "T管理", "管理ID=" & Me!txt管理ID)    
    
    If Me.Parent!年月日new = maxDate Then
    Else
       Me.Parent!new = maxDate
    End If
End Sub
1

サブフォームのモジュールの

Private Sub Form_AfterUpdate()

PrivatePublic に修正

Public Sub Form_AfterUpdate()

メインフォームのコマンドボタンのクリック時を下記のように記述

Private Sub 更新ボタン_Click()
    Me.サブフォームコントロール名.Form.Form_AfterUpdate
End Sub
1

リボンの[ファイル]→[オプション]クリックで[Accessのオプション]ダイアログが開く。
[クライアントの設定]→[フィールド移動の動作]で
[フィールドの先頭に移動]または[フィールドの最後に移動]を選択すればいいでしょう。

画像1

2
トマト 2020/12/04 (金) 18:46:00 0029a@1c915 >> 1

なるほど!背面に置く発想がありませんでした。また、わかりやすいように背景色を統一するのも参考にさせていただきます。教えていただき感謝です。

1

Djoin("従業員名","T_従業員","部署ID=" & Nz([T_従業員]![部署ID],-1))

でどうでしょうか。-1 は存在しないIDならなんでもいいです。

1

関連するコントロール(参照しているコントロール)の近くの空いている所に配置してます。
隙間がないとき、「最背面に移動」で関連するコントロールの背面に隠してます。
関連するものがないときは、適当に空いている所に配置します。

また、非表示コントロールが分かりやすいように背景色を薄いピンクにしてます。

3
朱色 2020/12/04 (金) 17:52:47 db0eb@84bb2

ちなみにcount関数は値の数を数えるので、今月のデータ数を数えるのであればsumのほうが良いと思うのですが。
Count関数

また、集計関数を使う場合、ヘッダーやフッターに設定している他の集計関数でエラーがあると
まとめてすべて「#エラー」と表示されるようなのでご注意ください。
(サンプル作っててALLエラーが出ると思ったらこれでしたorz

2
トマト 2020/12/04 (金) 16:33:34 修正 0029a@1c915 >> 1

なるほど。フィールド名にしていたつもりでしたが、テキストボックスと同一になっており、テキストボックス名を見に行っていたようです。
テキストボックス名を変更したらうまくいくようになりました。ありがとうございました。

1

[月] はレコードソースに含まれるフィールド名ですか。
テキストボックス名だとエラーになります。

集計関数の引数の式は、フィールド名を含まないとエラーになります。
(フィールドを対象に集計するものなので)

7

daoは分かりません。

WEB検索すればサンプルコードは見つかると思いますので、試してみては。

あるいは、
手動でそのMDBへのリンクテーブルを作成することはとできますか。
できるなら、DoCmd.TransferDatabase メソッドでリンクテーブルを作成すればどうでしょうか。

いろいろ、試してみてダメな場合、
ネットワーク環境に依存する問題だと思いますので、同じ環境を用意できないこちらからはこれ以上のアドバイスは難しいですね。
たまたま、同じようなエラーを経験した人が見てればヒントは出せるかもしれませんが。

3
セロハン 2020/12/04 (金) 09:08:15 0029a@1c915

この件について、改めて質問させていただきたく投稿致します。
「F管理」を「F管理総合」から開くときと、直接他フォームの履歴から開くパターンがあります。
他フォームから開くときは「F管理総合」を開いていないのでエラーが起きるのですが、
「F管理総合」から開くときもあるので下記コードは残したいです。
条件分岐できますでしょうか。

Private Sub Form_Close()
  Me.Refresh
  Forms!F管理総合.Requery
End Sub
6

大変申し訳有りません。今日手動でいじってみた所odbc に接続が失敗しました、というエラーが出て開けませんでした。一台のパソコンからのみ開く事が出来る様です。開けたのは旧システムのmdbファ
イルでした。この状態は、どう言う状態でしょうか?

5

オンラインの状態のmdbファイルです。属性n、オフラインでの使用不可になっています。プロパティの詳細です。セキュリティタブが無かったためフルアクセスは、無理そうです。daoだと接続出来ますか?ご教示お願い致します。

4

daoは分かりません。どの様な情報が足りないでしょうか?宜しくお願い致します。

3

その情報だけからは、ちょっと原因は分からないです。

DAOでやってみる。

リンクテーブルにしてみる。

SQLでIN句で接続してみる。

など、他の方法も試してみては。

2

set mya=createobject("adodb.connection")
myb="接続先フルパス"
with createobject("excel.applcation")
set myc=.workbooks.add.activesheet.range("a1")
.visible=true
end with
mya 接続文字列

.open
set myd=.execute("クエリ名")
myc.copyfromrecordset myd
end with

此れがコードです。スマホで書いています。すみません

6
セロハン 2020/12/02 (水) 11:56:27 0029a@1c915 >> 5

確かに、言われてみると新規フォームではないですよね。。
今後は正確な用語をお伝えするよう、気を付けます。ご指摘ありがとうございます。
お騒がせいたしました。

2
ポンタ 2020/12/02 (水) 11:51:49 0029a@1c915 >> 1

なるほど。。全く別の種類の会社データなのでまとめるという発想が全くありませんでした。
検討してみます!ご提案ありがとうございます。

1

企業情報が格納されているテーブルが2つあるということでしょうか。
ユニオンクエリで一つの纏めることはできます。

フィールド構成が同じなら、クエリのSQLビューで下記のように記述します。

SELECT * FROM 企業登録テーブル①
UNION ALL
SELECT * FROM 企業登録テーブル②;

できれば、分けずに最初から一つのテーブルに纏めておいた方がいいです。
ユニオンクエリは重いし、更新できないなど、制限がありますので。

一つに纏めておいて、分割したデータが欲しいときはクエリの抽出条件で分けるようにします。

5

「新規フォームを作って移動してしまうことがある」というのは、ひょっとして
「新規レコードへ移動してしまうことがある」という意味のつもりだったのかな?
だとしたら既定の動作ですね。
このような言葉だけでやりとりする場合は、用語は正確に使うというのは重要ですので、まずは正確な用語を理解して使うように意識しましょう。

結局、データを増やしたくないフォームだったので、

それが目的なら、「新規追加禁止」にするのがベストな解決策ですね。

4
セロハン 2020/12/01 (火) 23:35:04 0029a@1c915

ありがとうございます。おたずねするまで、特殊な事例とは思わず深く考えていなかったのですが
結局、データを増やしたくないフォームだったので、勝手にレコードが増えたりして不便だったため
(本当は全部非連結にしたいが、レポート作成のため連結にしているフォーム)
新規追加禁止で対応し、解決しました。
別で同じような事例が起きた場合、改めてご報告させていただくかもしれません。

3

ネット上には残らないので安心してください。私のところだけにメールで届きます。

2
セロハン 2020/12/01 (火) 17:45:27 f1ed8@5dbd2

特に変わった設定をしたつもりはないのですが…。
ちなみに参考までにファイルをお送りした場合、ネット上にずっと残る形になりますか?
別にまずいデータが入っているわけではないんですが、なんとなく。

1

テキストボックスによってはEnterを押すと新規フォームを作って移動してしまうことがあるので、

そんなことがあるのですか。
Enterだけで新規フォームを作ってしまうのですか。
通常の設定ではそんなことはないと思いますが。
どのような設定をしているのですか。

2
セロハン 2020/11/30 (月) 16:53:26 0029a@1c915 >> 1

おそらく「F管理総合」フォームを開いていなかったようです・・そういうことですね。
ありがとうございました。