Private Sub cmdA_Click()
Me.Filter = "A like '" & Me.txtA & "'"
Me.FilterOn = True
End Sub
Private Sub cmdB_Click()
Me.Filter = "B like '" & Me.txtB & "'"
Me.FilterOn = True
End Sub
Private Sub cmdC_Click()
Me.Filter = "C like '" & Me.txtC & "'"
Me.FilterOn = True
End Sub
Private Sub cmd解除_Click()
Me.FilterOn = False
Me.txtA.Value = ""
Me.txtB.Value = ""
Me.txtC.Value = ""
End Sub
ExcelApp As Object
Book As Object
Sheet As Object
‘いきなりCells(1,1).Value = “ほにゃらら”
Sheet.Cells(1,1).Value = “ほにゃらら”
Set Sheet = Nothing
Set Book = Nothing
Set ExcelApp = Nothing
修正しましたという回答では、本当に原因が取り除かれたのか取り除いたつもりになっているのかわかりません。もう一度聞きます。INSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)がINSERT INTO 一時テーブル名 SELECT 正しくは以下も続く;になった事を確認しましたか?修正前に戻すとINSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)に戻る事を確認出来ましたか?YES or NOで教えて頂けますか?
Private Sub ほにゃららボタン_Click()
DoCmd.GoToRecord , , acNext
CurrentDb.QueryDefs(“ほにゃらら追加クエリ”).Execute
CurrentDb.QueryDefs(“ほにゃらら更新クエリ”).Execute
Me.Requery
End Sub
.xlsx形式は 2007以降のバージョンから実装されたものですので、2003の時にはなかったものなので、Access2003で.xlsx形式のエクスポートは不可能です。
エクスポートしてできたファイルを直接ダブルクリックすると開くことはできますか。
開けた場合、その時のエクセルのバージョンは2003ですか、2007ですか。
excel.exe のところをフルパスに変更したらどうでしょうか。
詳しくないんだけど、excel.exeの部分もフルパスに変えてみるとか。
Excel2003に戻すのはどうですか。また、当面、Windows10とサポート継続中のExcelを用意すると考えないのですか?
下記のサイトが参考になるかもしれません。
https://www.drk7.jp/MT/archives/001226.html
Excel 2003 と Excel 2007 を共存させる場合の留意点
りんごさんへアドバイスありがとうございました。確かに仰る通りですね。先の事を考慮して早急に色々と考え直してみます。それまで当面のExcelファイルにエクスポート出来るのにSHELL関数で開かなくなった事だけ解決したいのですが、対処方はないでしょうか? 互換ファイルになった兼ね合いだと思うのですが。コード記述を少し変更したらいいという問題ではないでしょうか?
まず、諸々のアップデートをもっと進めませんか?この質問が解決しても、結局、問題の先送りだから無意味でしょ。
次に、VBAコードは白紙に戻して全部作り直しましょう。Excelをあれこれして、Accessに取り込んであれこれして、Excelにエクスポートとかも、外注してAccessに一本化しましょう。いつの時代の話ですか。
取引先との金銭の流れは、取引先→自社
下請けとの金銭の流れは、自社→下請け先
ということで、性質が違うものなので分けた方がいいように思います。
そういうことになると思います。
一例をあげると下記のような感じになるのでは。
T_受注
受注ID 主キー
受注日
取引先CD
金額
内容
T_下払
下払ID 主キー
受注ID T_受注の外部キー
発注日
下請け先CD
金額
内容
フラグ管理は、なんちゃってデータベースになりがちでなので、かなり大変なテクニックらしい。
過去の質問が参考になるかも。このサイトのトピック検索に下請けと入力してみるのはどうでしょう。
兎にも角にも、関数従属性です。あれこれに惑わされないようにありたいですね。
ちなみに、分割フォームだとしても、No5 の回答と同じ方法で実現できます。
テキストボックスとコマンドボタンをフォーム上に配置するというのが私の回答です。
テーブルを作成するという話はどこにもありません。
うまく話が通じていないようです。Accessの基本や用語がよく理解されていないように思います。
とりあえずうまく行っているようなのて、私の回答もここまでにしときます。
まずは、入門書か入門サイトで基本事項と用語を学習されることをお勧めします。
2022ー03ー05ー01T00:00:00.170Z
というデータは変換するとどのようになるのがご希望ですか。
「エクセルにように」ということはエクセルではできているということですか。
そのエクセルでの方法を提示してもらえますか。
変換結果はアクセスのテーブルへ出力するのでしょうか。
だとしたら、データ型は「日付/時刻型」にするのが、後々使いやすいでしょう。
①データ例は正しい形です。
②データ型等そもそも分からないためそこから教えていただければと思います。
このデータ例は正しいものですか。正しいものを提示ください。
また、返還後の値も提示してください。
別の列(フィールド)のデータ型はなんですか。
完成形のイメージが分からなかったので「そうではない」という返答を期待して「サブフォーム」を話題にしたんですが、
ということなんで忘れてもらっていいですよ
今年76歳になる超初心者です
いろいろとありがとうございます
これまで『帳票フォーム』の経験がなく
『単票フォーム』で作成、『分割フォーム』で検索をいたしておりました
『帳票フォーム』は経験がありませんでしたので
いろいろと戸惑いがありましたが
新規で『txtA, txtB, txtC, cmdA, cmdB, cmdC』の名称でテーブルを作成して
テストいたしましたところ、3検索項目の検索に成功いたしました
ありがとうございます
ただし、自分がイメージしていた検索結果が『分割フォーム』の表示とは違いますので
今回お教えいただいた検索結果から単票フォームへの接続方法を勉強してみます
>>画面という言い方がいまいちだけど
今後は『フォーム』と表現します
>>サブフォームとして3つ並べればいいだけなのでは
お恥ずかしいですが『サブフォーム』も未経験です
勉強いたします。
画面という言い方がいまいちだけど単にサブフォームとして3つ並べればいいだけなのでは?
ありがとうございます
VBAは、コピーしながら作成してきましたので
複数の検索画面がうまく作成できるかどうか
挑戦してみます。時間がかかると思いますが
結果報告いたします
本当にありがとうございます。
テーブル構成、フォーム設計、検索条件などの詳細が不明なのが下記と仮定して回答します。
検索対象フィールドは A, B, C の3つで、すべてテキスト型とします。
上記のフィールドを含むテーブルをレコードソースとする帳票フォームで検索結果を表示させるとします。
帳票フォームのフォームヘッダーに検索値入力用テキストボックス3つ、検索(抽出)実行コマンドボタン3つを配置して下記のような名前にします。
txtA, txtB, txtC, cmdA, cmdB, cmdC
さらに抽出解除用ボタンを配置して名前を cmd解除 とします。
コマンドボタンクリック時のイベントプロシージャを下記のように記述します。
ありがとうございました。ギブアップです
いろいろ書籍をみましても、一画面で複数項目の項目ごとの検索方法がありませんでしたので
SOSをしましたが、再度イチから出直してみます。ありがとうございました
そのコードでうまく行っているなら、それぞれのフィールド用の検索テキストボックス、コマンドボタンを配置して、
提示のVBAコードをそれぞれのコマンドボタンに設定すればいいだけだと思いますが、
どこまでできて、どのへんで躓いていますか。
とりあえずやってみて、躓いたらその時点でのコードを提示してください。
すると、エラー3343は未解決だけど、一部データが出力されていない状況は改善されたという事になりましたか?
>> 4
Excelのバックグラウンドプロセス終了も確認済でしょうか?要するに、Excel出力機能のコードも再確認するのはどうかな。オブジェクトの破棄を忘れていない事、いきなりプロパティを使っていない事。別のエラーのアレだから、無関係かもしれないけど念の為に。
やれそうな事を捻り出してみましたが、正直力不足でした。助けになれずすまない。
現在は【検索目的】ごとに、検索画面を作成しております
見よう見まねで作動いたしておりますが
【検索目的】を変更する場合に
現在の画面を閉じて、別な画面を立ち上げております
Private Sub メニューを閉じる_Click()
DoCmd.Quit acQuitPrompt
End Sub
Private Sub Form_Current()
End Sub
Private Sub 解除ボタン_Click()
Me.FilterOn = False
Me.検索.Value = ""
End Sub
Private Sub 検索ボタン_Click()
Me.Filter = "行先 like'" & 検索 & "'"
Me.FilterOn = True
End Sub
これはVBAで実装してますか。
もしそうなら、そのVBAを提示してください。
りんご様
ご指摘ありがとうございます。
>YES or NOで教えて頂けますか?
こちらYESで回答いたします。
修正しましたという回答では、本当に原因が取り除かれたのか取り除いたつもりになっているのかわかりません。もう一度聞きます。INSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)がINSERT INTO 一時テーブル名 SELECT 正しくは以下も続く;になった事を確認しましたか?修正前に戻すとINSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)に戻る事を確認出来ましたか?YES or NOで教えて頂けますか?
りんご様
コメントありがとうございます。
修正内容は、質問の【状況追記4】に記載の通り下記内容で修正致しました。
「→ 現在はSQL文を元に戻す処理を抜いたクエリ実行ファンクションを設けて
上書きが走らないように修正致しました。」
本機能と関係ない別機能で、上書きが必要な個所のみ上書きする処理の入ったファンクションを呼んでいます。
>If Not 別モジュール.IsNullOrEmpty(baseSQL) Then
こちらは別モジュールにある名前の通りの機能の自作メソッドです。
同じOffice365を使っているはずなのに、
人(環境)によりエラーを出してくれる場合と正常終了する場合があるというところで
原因追及に足をとられてしまっております。
ここが本当に分かりません…。
>> 10
あれこれ修正した結果、
INSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)
これがどう変化したのでしょう。SELECT以下も正しく続く事を確認出来たから、他の原因を探しているという事でしょうか。
AccessVBAには、IsNullOrEmpty()は無いと思ったのですが。他言語の機能も使えるようにあれこれされていたんでしょうかね。
全く同じプログラムを走らせて、ある時はパスワードを聞かれずインポートされ、ある時はパスワードを聞かれるので、戸惑っています。これは、未解明のまま、しばらく放ってあります。
ご確認どうもありがとうございました。
上記は確認できました。当方のテストでは「(2) パスワードを聞かれ、」ということはないです。
hatenaさん、返信ありがとうございます。
Workbooks.openで、パスワードを指定してブックを開いた状態で、
TransferSpreadsheetをすると、この時はエラーは発生せずに、
(1) そのままインポート出来たり、
(2) パスワードを聞かれ、パスワードを入力すると、インポート出来たり
します。どういう条件で(1)になるのか(2)になるのかは分かりませんでした。
今、確認してみたら、「外部テーブルのフォーマットが正しくありません。」というエラーになりますね。
回答した時に確認はしているはずだし、質問者さんも解決しているようなので、その後仕様変更でもあったのか、環境依存なのでしょうか。
ちなみに、回答時点では Office2019 32bit、現在は Office2019 64bitです。
横からすみません。パスワードがかかっているブックをTransferSpreadsheet acImportで取り込もうとすると、
「外部テーブルのフォーマットが正しくありません。」
というエラーになります。パスワードを外すと正常に取り込まれます。
コンボボックスで会社名を選択するときに、マスターテーブルにない会社のデータを追加したいということなら、下記が参考になるでしょう。
■T'sWare Access Tips #471 ~コンボボックスから値集合ソース編集画面を表示する方法~
このようなUIの設計は下記で紹介しています。これの応用でなんとかできませんか。
アクティブの時だけボタンが表示されるコンボボックス - hatena chips
具体的にどのような式が設定されているのでしょう。
DLookup関数を使った式でしょうか。
どこになんのデータを追加するのでしょうか。
会社のマスターテーブルに新規会社データを追加したいということでしょうか。
まずはその辺の詳細を提示してください。
運用が妥協出来ないなら、プロジェクト中止撤退を検討するかなぁ。責任持てないよね。
引き継ぎを繰り返すうちに、新規追加は別フォームを開いてに修正されるでしょう。
ほにゃららテーブルに、ほにゃららフィールド(YES/NO型)を作る。
ほにゃららテーブルからほにゃららクエリを作る。
ほにゃららクエリをコピペ、ほにゃらら追加クエリに変更。
ほにゃららフィールドの抽出条件:True、追加先のテーブル:ほにゃららテーブル。
ほにゃららクエリをコピペ、ほにゃらら更新クエリに変更。
ほにゃららフィールドの抽出条件:True、レコードの更新:False。
ほにゃららクエリからにほにゃららフォームを作る。
ほにゃららボタンを配置。
りんご様
ありがとうございます。
上記方法にて、想定通りの内容であることを確認致しました。
また、処理での上書きを完全に回避するために不必要な場合は
上書きしないようにも修正するように致しました。
ですがやはり、人を介すると
同じ現象になってしまうとのことでした…!
ありがとうございました。ページフッターに配置したテキストボックスで、グループヘッダーに配置したテキストボックスを参照するようにしました。お二方ともありがとうございました。
hatena様
お世話になります。
あっさりできました。
ありがとうございました。
下記が参考になるでしょう。
AC2007以降の帳票フォームで画像表示 - hatena chips
上記では、添付ファイル型フィールドに画像を格納する方法と、画像ファイルをコントロールソースで参照する方法を紹介しています。
ということなら、コントロールソースで参照すればいいでしょう。