Access総合相談所 28
レス数が1000を超えています。これ以上書き込みはできません。
ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境 】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
Access総合相談所 27
http://mevius.5ch.net/test/read.cgi/bsoft/1424828244/ >>922
>属性を1カラム
となると営業部毎に選択クエリ作って
それぞれの属性のフィールドを追加して
(フィールド名は“属性”とかで統一)
それらをSQL文にして
Unionクエリにまとめて
営業部と属性でグループ化して集計 >>922
統計情報で軸が違うのを一つにまとめるのは
やや心地悪い。レポートにするなら3つのサブフォームを張り付けるか
915の技を応用すれば良いのではないかと。
あるいはデータベースの基本ルールは1列に格納するものは同じ属性の情報、であるので
accessのテーブルからexcelにリンクしてピボットテーブルで軸を変えればいいのではないかと。
また、人属性情報は改変性低いのでマスターテーブル化してリレーションシップ作れるよね。
それはもうやってる? >>921
属性:Switch([営業部]=1,iif([性別]=0,”男”,”女”),[営業部]=2,iif([年齢]<30,”-29”,”30-“),[営業部]=3,[カテゴリ])
でもええか
ただ、もっと複数になると営業部毎に属性設定してunionクエリでまとめる方が楽かと思われ >>924
気持ち悪いといえば、年齢
年齢はテーブルに記録しない
生年月日を記録して演算で出す
まあ、そこら辺は説明で省略してるのだろうけどね >>922
>営業部ごとの特性をみたい
のなら様々な属性でグループ化して集計
更にグラフ化すべきかと
あと年齢は生年月日と販売日のDateDiffで求めてるよね? 【 システム環境 】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答 】 否
【 検索キーワード 】 access 一部だけ分岐・・・など
顧客のユニークIDの数を調べたいと思っています
グループ化してすぐにカウント、のような事は出来ますか?
クエリテーブルを二重にすれば出来ますが、なんか間違ってる気がします すいません、返答を送信していませんでした
>>923
了解です!uniion使っていきます
>>924
試してみましたが、サブフォームだと高さがに困ってしまいました
vbaを使えれば可変の高さ調整ができそうな感じはしているのですが、なかなかそっちまで勉強している時間が無いです・・・
>>925
恐らく複雑になると思います。昨今の流れで、性別とか増えそうで戦々恐々としています
>>926>>927
入っているのは生年月日です
販売した時の年齢ではなく、現時点での年齢になりますが、そこは問題ないとします。
>>927さんの指摘には僕も上司も気づいていませんが、気づかないフリをします。 >>928
少なくとも昔は、AccessのSQL規格が古くて、他のデータベースで
SELECT COUNT(DISTINCT customer_id) FROM order_table
と書けるものも、
SELECT COUNT(customer_id) FROM (SELECT DISTINCT custoemr_id FROM order_table)
とサブクエリみたいにして呼ぶ必要があった。
いまも変わってないなら、二重にするのは変じゃないです。現状は未確認ですが。 >>930
あれ、そうなんですね
ありがとうございます、素直に二重にしておきます 【 システム環境 】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答 】 否
【 検索キーワード 】 access プロンプト 初期値 など
プロンプトの初期値は設定できないでしょうか
Between [開始日を入力してください:] And [終了日を入力してください:]
としているのですが、
予め前月を入れたいのです
具体的には
#2019/8/1#
と
#2019/8/31#
が最初から入るようにしたいのですが、vbaじゃないと無理ですか?
他にも楽に入力できそうな方法があれば教えて下さい >>932
それはプロンプトじゃなくて既定値では?
既定値なら
テーブルのフィールドやフォームのテキストボックス等のコントロールで既定値を設定することができるので
そこに入れる。
なお、先月1日は
=DateSerial(year(Date),Month(Date)-1,1)
Dateとはシステムの日付を取得する関数で()付けても付けなくても同じ
DateAdd関数使わなくてもきちんと年またぎ出来るよ。
また先月末日は
=DateSerial(Year(Date), Month(Date), 1)-1
今月1日の前日ということ >>933
入力の時ではなく、selectクエリで抽出する時の範囲を自動で決めたいのです >>934
クエリでも>>933の式を入れるだけやろ
抽出条件に
>=DateSerial(year(Date),Month(Date)-1,1) AND <=DateSerial(Year(Date), Month(Date), 1)-1
とな
それにしても、既定値のことでないとすると、プロンプトとは何だろなと
通常、プロンプトってCUIで入力可の状態を示すサインやろ
それ以外に解釈できんのだが?
DBMS用語ではないし >>934
抽出条件は
Between DateSerial(year(Date),Month(Date)-1,1) And DateSerial(Year(Date), Month(Date), 1)-1
でも可
また
Like Format(DateAdd("m", -1, Date),"yyyy/mm") & "*"
でも可 >>936
>>通常、プロンプトってCUIで入力可の状態を示すサインやろ
CUI限定じゃなくて、GUIでウィンドウを開いて入力を促す文字もプロンプトでいいと思う
VBAのInputBox関数の引数名もPromptだし
ただ、この質問での話だと既定値の間違いだと思う DBサーバー立てたくない時、
mdbまたはsqliteかなと思うけど、
みなさんならどうしますか
さらにいえばVBA古臭いし冗長なのでC#で+mdbが最適解なのかなと 周りが使いやすい奴が良い
確実に自分だけしか使わない+ちょっとしたものでいいならmdbかな Access採用の理由は利用ユーザーのPCにインストール済みだからって事が多いと思うな >>941
ランタイム入れればインストールしてなくても
Accde動かせるけどね sqliteもdll拾ってくればドライバいらないけど、
どうも動きが怪しい気がする >>939
sqliteという選択肢を持ってくるのは、単にAndroidアプリの開発手法に似せたいから?
それであれば、環境設定も含めたインストールパッケージを作成する必要があるから
無理にAccessで作る必要はないとおもうけど。 >>944
VBAは要らない、Pythonで組むということではないかと
VBA抜いてもAccessはクエリの組み易さ,フォームやレポートの作り易さの利点があるから
それも活かしたいんだろうな
でもいっそDelphi上で全部設計した方が見通し良くなると思われ 【 システム環境 】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答 】 否
【 検索キーワード 】 access フォーム テキスト 取得 クエリ など
フォームに配置したテキストボックスの情報をクエリに含めたいのですが、どのように記述すれば良いでしょうか?
抽出条件に
[フォーム1].[テキスト4]
や
[フォーム1]![テキスト4]
としてみましたが、駄目でした
※パラメータの入力 [フォーム1]![テキスト4] と出ます
https://imgur.com/a/4KiWTxY >>936>>937
ありがとうございます!
accessではパラメータというのですね
単語間違ってしまい、すいません >>946ですが自己解決しました
[フォーム1].[テキスト4]
↓
[forms].[フォーム1].[テキスト4]
でした >>933
さんの
=DateSerial(year(Date),Month(Date)-1,1)
は
規定値に入れると
DateSerial(Year([Date]),Month([Date])-1,1)
抽出条件に入れると
DateSerial(Year("Date"),Month("Date")-1,1)
と変換されてしまい、うまく動きませんでした
date()にすると解決しました
ご報告まで 【 システム環境 】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答 】 否
【 検索キーワード 】 access 式が正しく入力されていないか、複雑すぎるために評価できません エラー
フォームを作っていてエラーが発生し、解決しました
サブフォームを作成し、クエリを表示させ、更新を行うとエラーになりました
https://i.imgur.com/Njzkz8f.png
その下にも別のクエリがあり、こちらはエラーになりません
https://i.imgur.com/9nxg60w.png
なんとなく位置を変えた所、エラーにならなくなりました
https://i.imgur.com/6tDDSb3.png
また、再度元の位置に戻してもエラーにならなくなりました
原因は何だったのでしょうか? >>949
参照設定に依るかもね
Date()は関数、Dateはシステム変数だったかな フォームってデザインビューの状態でも、フォーム内の情報を取り出せるの? >>950
そのエラーの原因は様々ある
AccessのJITコンパイラが解釈に失敗すると出る
大きな原因のひとつはリレーションシップをしていないこと
コントロールの位置をいじって直ったとしても
再発の可能性は高い
JITコンパイラが何処まで解釈出来るのかははっきりとしないが
経験上、メッセージにある通り
一つのクエリでアレもコレもとやらないで
クエリを元にクエリを作るなどしたり一つのクエリでの処理を単純化したり
テーブルや選択クエリ同士の関係をリレーションシップできちんと定義したりすれば発生は抑えられるようだ
なお、親の非連結単票フォームから子の帳票フォームへと値を受け渡してるように見えるけど
どんな設定なのか?
サブフォームコントロールで受け渡したり
親フォームのコントロールの値で子フォームのレコードソースをフィルターして絞り込んだり
親フォームのコントロールをクエリの選択条件にしたり
いろいろと方法がある >>953
DBから吐き出されたデータを元に、収支の集計を行っています
・元データは40000行、50カラムほどあります(小売の売買データです。様々なテーブルをjoinした後の一覧データが吐き出されています)
・もうひとつ、販売の種類を表すテーブルがあります。2フィールドで10行、「通常販売」「ネット販売」「社内販売」など。最後にjoinします
※リレーションで繋ぐフィールドは両方「数値型」になっていました
・クエリの流れ。一行が1クエリです
フォームの日付を元にフィルタ
キャンセルデータ(キャンセルフラグフィールドが1だと除外)、お試し商品を除外(あるフィールドが「2」だと除外)、
営業部でフィルタ(営業部ごとに3種類、>>919のように分類・集計します)
顧客IDでグループ化
顧客IDをカウント
販売の種類を表すテーブルとリレーションで繋いでjoinします
・もうひとつ、合計確認用に全体の合計を出すクエリも作成し、Excelに貼り付けています
何が原因でしょうか。再発は自分ならまだ良いのですが、他の方が使っている時に発症してしまうのは、困ります
また、主キーを設定していないのですが、これも原因になるのでしょうか 読めないくらいややこしいw
フィルターって、なんとなく重いから個人的には使わないこと多いかな。
パラメーター仕込んでおいて、vbaのquerydefのパラメーター代入してrequeryしたりする。
あとinner join inner joinを何個も繋げてると自分でもワケわからなくなるのでクエリー何個かにわけて
段階を踏む作り方する。 主キー無しって重くならない?
3万行ぐらいならそうでもないんかね >>955
>>957
主キーは設定すべきでしょう。
そうすれば1対多の関係が明確になります。
>もうひとつ、販売の種類を表すテーブルがあります。2フィールドで10行
>※リレーションで繋ぐフィールドは両方「数値型」になっていました
販売の種類を表すテーブルのそのフィールドを主キーに設定
>>956
段階を踏んだ方が、作るのも、機能の追加による修正も楽なんですよね。
大本のクエリから派生とかできますからね。 >>955
エラーの原因はおそらく主キーを設定していなかったことでしょう。
それ以外は段階を踏んでいるから問題無いです。 アクセスで高度なものを作っても単体アプリケーション化できないのが一番駄目なところだね
ランタイムもイマイチだし
アクセスからだとデータベースを直接書き換えられるリスクがあるしかっこ悪い >アクセスからだとデータベースを直接書き換えられるリスクがあるしかっこ悪い
それはDBをいじれるどんなアプリでも同じでは? >>960
それ、アクセス制御での完全性の問題ではないか?
どのアプリがという問題ではないのでは?
ランタイムがイマイチという意味も分からない。
どうイマイチなんだろう?
俺の場合、単体アプリを作るためにAccess使ってる訳じゃなくて
日常の事務作業を楽にするために使ってるだけ
無論だけど、俺には権限が無いから、会社の基幹システムのDBを直接干渉したりは出来ないが、
そこから取り出したデータを元に報告書を作ったりはしている。 >>962
そういう余計なことをする奴が出てくるのが管理上は問題になるんだよ 元データ触れないor分からないから、それを元に別データ作っといたで(以下ループ) >>963
余計な事とは?
それが仕事なんだが?
何が言いたいのか? >>964
それシステム管理として失敗してるやん
そんな愚痴をこのスレで言われてもな アクセスだとテーブル直接書き換えをするのが簡単だから、安全性を担保できない
酷い仕様だよ >>966
失敗例を横から書いただけで主とは関係ないのに愚痴とか言われてもな >>967
テーブルを完全に隠せよ
俺が5年くらい前に書いてやった手法を使え 知らんけど、そこまで嫌なら他DBへお引越しすればいいだけで
ここでぐだぐだ文句言って改善するものでも無し
早い・安い・うまい がうたい文句の外食産業も有りゃ、
高級食材を四ツ星シェフがお料理して、最高級グレードのお持て成しをしまっせも有る
ミソクソ一緒に比較したって何の意味も無い 時間の無駄
データベースファイル自体にパスワード付けられるんだし、セキュリティだの改竄だの
気が気で無いなら、それなりのセキュリティに注力するだけのこと
レコードの必要な部分にだけアクセスできるようにするとか、無闇に接続しようとする輩が
居るような環境なら、そこをブロックできるように改善するだけのこと Access の問題では無い 個人の感想やけど まあまあ二人ともそんなに熱くならないで。
accessはreadonly権限を与えるのが逆にマイナーな技になってしまうのは事実だし。
一方で、「私だけが欲しい集計軸」のためにシステム管理の手を煩わせないことも大切だとも思うし。
私は、一般的なスキルを信用してる社内ユーザーには、sqlserverのビューからexcelにreadonlyの接続詞つけて
一覧貼っておき、「更新は右クリックで「更新」押せ、あとは好きに集計しろ」といったことをやってるけど。 >>Read Only
だとExcelで使え、となる会社も有る
VBAでデータ抜いて編集ってしんどいだけ >>901-904
ちょうどこの件でセブンがまたやらかし(?)てしまったようだな
ttps://www3.nhk.or.jp/news/html/20190918/k10012086721000.html
やはり敵は税務署ではなかった >>974
ははは、ニュース見てこのスレに来てしまった
これってマーフィーの法則でトラブルの可能性のあるものは必ずトラブルを起こす、っていうやつ。
すべてのケースに対応できるようにしておかないとな。
経理のスタッフとかめちゃくちゃ機嫌悪くなるというかまともに話してもらえなくなる やらかしたというか、これは仕方ないことなんじゃないのかね 周知不足でネットで騒がれちゃって後手に回ってしまったやらかし
内税積み上げ方式のまま軽減税率に対応することができたのに外税に切り替えちゃったやらかし
7payとか時短営業の案件レベルではないけど、だからこそこれくらいきっちり詰めとくべきでは 少なくとも10月1日付での変更で、周知してれば何も問題なかったのでは 問題の次元としてはどうでもいいっちゃどうでもいいけどね
違法とかではないし
でも個人的にはせっかく10%という切りのいい税率のくせに1円単位の端数が出てしまうのは欠陥だと思ってる
スーパーみたいにどうあがいても1円単位の端数が出るような店なら分かるけど >>979
端数切捨てで税務署もええと言ってるんだから
それでええねん
世文はまた顧客に嫌われることをやったな >>979
こういうのってさ
いくつかの計算方法をやって
ゴールシークで最適なの求めれば
済むんけどね
そういう発想すらしなうのかよと
どんだけ無能なのか なぜ総合計を再計算するんだ。内税計算するなら総合計は単純合計で、そこから「うち消費税」を整えて表示、差し引きを本体価格にすれば良いものを。 違法でなければ良いという浅はかな考えで
計算方法を変えて
1円でも値上がりしたら、客離れを起こすという事態を想定出来ない無能経営者 ポイントのメリットをなくした上で消費税でポイント以上に客からお金取っちゃうなんて、すごい無能よね そもそもデジタルセキュリティの知識無い社長をみずほからヘッドハントするくらいだし >>986
みずほ
システム統合に失敗してるのが
経営陣の方針がコロコロ変わって
仕様が確定できんためだとか
結局 無能やったんやな
なんでそんな屑を引き抜いたんか
みずほから押し付けられたんちゃう? 経営者「ボクはITに詳しいんだ」
どこかで耳に入れてきた知識を社内でかき混ぜる無能がクソ憎い 掻き混ぜられようと、クズが上に居ようと、ムダな会議で時間が取られようともだ
実務は止まらない 待ってくれない 粛々と実績を積み上げるしか無い 個人の感想やけど みずほはシステム統合自体、それまでPL/Iで動いてた銀行有るからCOBOLで統一するしか無かった
勘定系は未だにメインフレームだよ
OpenCOBOL導入すら出来て無い >>952
お願いします
起動後は一回フォームを呼び出さないと駄目なんでしょうか?
微妙に挙動が良くわかりません なにをどうしたいのかを書かないと >>952 お願い ったって、何が何だか
フォーム内の情報を、「どこ」から読みたいんだか
そのフォーム自体はどういう構造なんだか コチラには何にも伝わらないよ
データベースの中身を他のアプリから読みたい ってんなら、フォームなんか要らないし
フォームのソースがクエリとかで整えられたデータだ ってんなら、デザイン状態じゃ読めないし
おまえの挙動が良く判らんわ フォームの情報はデザインビューでも取得できるよ
既定値に入れておけば良い >>992
そう
フォームビューかレイアウトビューで開いておけばバックグラウンドで起動する
閉じた状態では既定値だろうがなんだろうが取得できない このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 388日 22時間 53分 10秒 レス数が1000を超えています。これ以上書き込みはできません。