Dim FirstDay As Date
'予定表示プロシージャ
Public Sub SetSchedule()
Dim i As Integer, rs As DAO.Recordset, zissagyou As String
zissagyou = "実作業"
For i = 1 To 42
Me("T" & i).Caption = ""
Next
Set rs = CurrentDb.OpenRecordset( _
"SELECT 作業日時,時間,SUM(時間の合計) FROM T_設計_日報入力 WHERE " & _
"日時>#" & FirstDay & "# AND 日時<=#" & FirstDay + 42 & "# AND 作業No = '" & Me.txb作業No & "' AND 作業分類 = " & zissagyou & " GROUP BY 日時,時間,作業分類", _
dbOpenForwardOnly, dbReadOnly)
Do Until rs.EOF
With Me("T" & rs!日時 - FirstDay)
.Caption = .Caption & rs!時間の合計 & "H" & vbCrLf
End With
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
End Sub
になります
作業No、作業分類は短いテキストです
SELECT T_設計_日報入力.作業No, T_設計_日報入力.作業名No, Sum(T_設計_日報入力.時間) AS 時間の合計
FROM T_設計_日報入力
WHERE (((T_設計_日報入力.日時)>=[Forms]![F_設計_実績確認_伝票処理]![FROM] And (T_設計_日報入力.日時)<=[Forms]![F_設計_実績確認_伝票処理]![TO]))
GROUP BY T_設計_日報入力.作業No, T_設計_日報入力.作業名No
HAVING (((T_設計_日報入力.作業No)=[Forms]![F_設計_実績確認_伝票処理]![txb伝票No検索]));
申し訳ありません 使い方、確認不足でした。
になります
作業No、作業分類は短いテキストです
このクエリのSQLをベースに考えた時どうVBAにしたらよいか教えてほしいです
コードは画像ではなく実際のものをコピーして貼り付けてください。その場合、マークダウンのコードブロックにしてください。詳細は下記を参照ください。
Microsoft Access 掲示板 の使い方 Microsoft Access 掲示板 - zawazawa
あと、貼り付けるコードは、変数の宣言部分、代入部分を含めて貼り付けてください。画像のコードでは FirstDayの宣言、代入のコードがありません。
作業No、作業分類 のフィールドのデータ型も提示してください。
パラメータ設定しているクエリだったのでエラー?がでたみたいでした。。
試行錯誤しテーブルから抽出条件、グループ化のパラメータ設定をしているのですが、
『パラメーターが少なすぎます2を指定してください。』と出てきます。
どこが間違っているか教えてほしいです。
db.OpenRecordset("SELECT~~~のように記述したいのですが
このクエリのSQLをベースに考えた時どうVBAにしたらよいか教えてほしいです
皆さん丁寧に教えていただきありがとうございます。
Officeのバージョンは合わせた方がいいみたいですね。
それを考えるとお勧めしていただいた365が良さそうに思います。
ランタイム版についても教えていただきありがとうございます。
いろいろと調べて検討してみます。
ありがとうございました。
やはりバグでしたか…
マイクロソフトに報告してみようかと…
ナビゲーションフォームでかなり作り込んでしまったので
なんとか直ってほしいと思ってしまいます。
今回はありがとう御座いました。
officeのバージョン違い、エディション違いのインストールはなかなかに複雑です
汎用の回答としては「組み合わせによってはできるものもある」程度の後ろ向きな回答になってしまいます。
bit(32bit/64bit)
インストール形式(windowsインストーラー(MSI)/C2R)
これらをキーワードにご自身の環境とインストール可否を調べて見てください
「はい(YES)」の回答になりますが、出来あがったデータベースを使用するだけであればランタイム版(Microsoftのサイトから無料ダウンロード)だけで動きます
「開発用に1本製品版を購入すれば良い」でしょう
追加された新機能を使わなければたいていは動くと思います。が、保証はできません。できればバージョンは合わせた方がいいでしょう。
それよりも、
Office2016のサポートは2025年10月14日まで、Office2021は2026年10月13日までです。
マイクロソフトOfficeのサポート期限
それを考慮したら MicroSoft365 で毎年課金して常に最新版を使えるようにしてもいいように思います。
2台のパソコンにインストールする必要があります。
同時にということが、二人で同時に使用するということなら、Officeのアカウントも2つ必要です。
こういうのは、余力がある時にさっさと決断するしか無いんですよ。遅かれ早かれなので。
指数関数的な従量課金(コスト)が想定されるなら躊躇しますけど、挙げられているような不具合は事務的に処理するだけです。
accdbファイルはエラーは出ませんが、accdeだと提示のエラーになりますね。
新規にaccdeファイルを作成してみましたが、やはり同じエラーがでますね。
ナビゲーションフォームに問題がありそうなので、ナビゲーションフォームを一から作り直すか、
ナビゲーションフォームはやめて、サブフォームで同様のものを作成するということを試してみてはどうですか。
私自身は、ナビゲーションフォームが実装されたとき、便利そうとおもって使ってみましたが、いろいろ制限が多かったし、おなじことはサブフォームを使って実現できるので、今は使っていません。
ファイル受け取りました。
時間が取れたら動作確認してみます。
しばらくお待ちください。
hatena様、返信が遅くなりました。
早速お送りいたしましたのでよろしくお願いいたします。
チョコさん、何度もお手数おかけしてすみません。どうも送信フォームがうまく動作していないようなので、下記のメールアドレスへファイルを添付して送信してもらえますか。
受け取ったら、メールアドレスは削除します。(削除済み)
そうですか…。標準のActiveXコントロールの中にあるのに残念です。
Windows10+Access2013で使っていたのですが,そのときも,Acrobat Reader DCとの相性が悪く,Acrobat Reader Ⅺに
戻して使っていました。今回も,新しく買ったパソコンで,今までのプログラムを使えないかとテストしていました。
Webブラウザーに切り替えるしかなさそうですね。
再送信致しました。下記の画面になりましたので念のために記載致します。
Microsoft Access 掲示板用ファイル送信
メールの送信を完了しました。
ありがとうございました。
Microsoft Access 掲示板
今、帰宅してメールを確認したのですが、受信できていないようです。お手数ですが、もう一度送信フォームから送信してもらえますか。
追加情報です。作成したナビゲーションフォームは、上側と、左側にタブを設定出来るもので、タブを数個作るとエラーが発生します。タブによってはエラーが出ない時もあるし、出るときもあります。感覚的には、タブを多く作るとでるような気がします。
ありがとうございます。よろしくお願いいたします。
今、出先ですので家に帰ったら、ファイルを確認してみます。しばらくお待ちください。
なんかダメらしいですよ
WebブラウザーコントロールでフォームにPDFファイルを表示する方法(T'sWareさん)
失礼致しまた。Microsoft Access 掲示板用ファイル送信よりACCESSファイルを送信しました。
条件付き書式は重い処理になるので、別案を検討してみるといいかも。
方法としては下記で紹介している方法の応用になります。下記では背景色ですが、前面色(文字色)を対象に同じ設定にします。
カレント行の背景色の変更 その3 - hatena chips
文字色を変更したいテキストボックスの前面にぴったり重なるようにテキストボックスを配置して下記のように設定します。
=IIf(条件式,[フィールド名],"")
上記のテキストボックスのフォーカス取得時のイベントプロシージャ
元のテキストボックスの更新後処理
Me.Recalc で少しはやくなりました!
返事が遅れて申し訳ありません。今度こそと思ってフォームを作り直したり、テーブルを作り直したりしていました が できませんでした。あらためて質問しようとしたところ、hatenaさんの返信があるのをみて、その通りやってみたら できました! ありがとうございました! 12年前に引き続き救っていただきました。このフォーラムが継続していてほんとにありがたいです。今後ともよろしくお願いします!
Me.Refresh
あるいは
Me.Recalc
でどうでしょう
strWhere3 = "jo_shiba_dirt =" & "'" & Me!jo_shiba_dirt & " '"
上記の最後の引用符の前の半角スペースを削除したらどうなりますか?
もし、それを外して改善するならば、まずは外し、色の変更は別の質問で誰かに教えて貰うとか。
色の変更は条件付き書式で変更しています。
データを入力しても 条件付き書式が動作してくれないので
DoCmd.Requery "" を行って更新している状況です
確認した結果はさておき、サクッと作り直すのもいいですね。
ありがとうございます。やはり目につくような問題ないですよね。とりあえずフォームを作り直してみようと思います。
取り敢えず、strWhere3句を外してやってみたり、手動でF_T0指数表示用を開いてみたり、確認するといいのかもしれません。
>更新されるときに全レコード更新されるので、再表示までに毎入力、時間がかかってしまいます、
1つのレコード更新時に、全てのレコードをもう一度更新するようなコードを書いていませんか?取り敢えず、テキストの色を変更するコードをOFFにして確認してみるといいかも。
実体として
ならば、そのプロシージャでやればいいです
「別のフォーム」がいつ開かれるのかわからないのであれば、上記プロシージャの他、そのフォームの読み込み時イベントでも制御する必要があるかもしれません
下記サイトを参考に。
■T'sWare AccessVBA徹底入門 Chapter5-3 ~Recordsetオブジェクト~
Database.OpenRecordset メソッド (DAO)
どのような状況なのかよく分かりませんが、そのような状況自体がNGなものなので、担当者さんに改善を要求するのが筋だと思います。
IIfを使うなら、下記でいいはすです。
または、
実体としてはその上の例と同じですよ
クライアント側にショートカットを置く代わりに、ショートカットを実行する(フロントエンドデータベース(ACCESSファイル)を起動する)ACCESSファイルを作成して配布していた(ショートカットの先はサーバー内のフロントエンドデータベース)
です
フロントエンドデータベースは全てクライアントPC側に置かなければなりません
できました!!
ありがとうございます。
ただ、別の担当者がNz関数をVBAで改良しているみたいで、 使用できない状況です
質問内容と同様に
総作業時間: Nz([時間の合計], 0) を IIf(IsNull・・・ にして使おうとしましたが、うまく記述できませんでした。。
おしえていただきたいです、、、、
accessファイルを新規作成、単純なテーブルとフォームを設定。フロントエンドaccessファイルとバックエンドaccessファイルに分割。その後、同じ症状が再現されるか確認してみるのはいかがですか?
複数のデータベースがあり、それぞれにアクセスするためのメニューファイルがさらに個別に作られていて、そのメニューファイルだけが各個人のPCにコピーされていた(結局サーバー上のフロントエンド データベースをその作業をする複数人で共有していた)
少し詳しく聞きたいです
クライアントファイルは各個人のPCに保存されていますか?
これがうまくできてないのでは?
これだけならば、この状態はサーバーにアクセスする必要がありません
クライアントファイル(フロントエンド データベース)が正しく作られているか?
そのファイルが各個人のPCに保存され、各PC上で実行されているか?
を確認してみてください
hirotonの経験だと
クライアントファイルはサーバーに入れっぱなしで各個人のPCにはそのショートカットが置かれていた(結局サーバー上のフロントエンド データベースを全員で共有していた)
とか
複数のデータベースがあり、それぞれにアクセスするためのメニューファイルがさらに個別に作られていて、そのメニューファイルだけが各個人のPCにコピーされていた(結局サーバー上のフロントエンド データベースをその作業をする複数人で共有していた)
などの間違った運用に出くわしたことがあります
分割はしています
上記の3項目でいうのであれば
・同じACCESSファイル(データベース)を開いている。ただし、データは読み込んでいない(フォームを開いていたりはしない)
になります、、、
改善策あるでしょうか?