【I love Access】やっぱりアクセスが良いat DB
【I love Access】やっぱりアクセスが良い - 暇つぶし2ch447:NAME IS NULL
08/02/11 14:45:55
>>439=404
31日分の合計(和)を出す電卓を作りたいってことだろ?
入力途中の表示に違和感を覚えるかもしれないが
「変更時」に再計算するようにしておいたらどうよ?


448:NAME IS NULL
08/02/11 14:53:56
>>443
いや、その病院では一番Accessが得意な
若い看護婦さんかも知れないぞ
ここでお近付きになっておいて
その病院へ逝くのも悪くない

449:NAME IS NULL
08/02/12 00:57:22 aoyNE+PV
教えてください。

とある機器のレンタルをしている事業所で勤務しております。
そこで、レンタル代金請求の仕組みを作ることになったのですが、
請求パターンがややこしくACCESSでの実現手順を教えてください。

商品代金の他に、送料と消毒代金も請求しており、
又、通常のレンタルとお試しレンタルもあり、
お試しで借りて、通常レンタルに切替る事があります。
お試しで借りて、気に入らずに返却になる事もあります。

請求ですが、
      納品送料 引上送料   消毒
通常    開始月  終了月    終了月  
お試し   終了月に往復      終了月

情報には契約番号(切替の場合、契約番号は同じ番号です)、
レンタル開始日、終了日、があります。

例:お試し、通常レンタルともに終了
  →消毒費とる
  お試し終了し通常レンタル切替てレンタル中
  →消毒費とらない(レンタル中なので)

消毒費とる場合は、「1」 とらない場合、「0」になるような
式を教えてください。

同じく、送料についても、とる場合「1」、とらない場合「0」
になるような式を教えてください。



450:NAME IS NULL
08/02/12 01:03:43
商品マスタに消毒代とか送料とか登録しとけ

451:NAME IS NULL
08/02/12 01:57:07 aoyNE+PV
>>450
送料、消毒費登録ありますよ。
で、発生する条件を式にできないものかと、

あと補足ですが、
同じ契約番号の場合の見分け方ですが、「行番号」と「レンタル区分」で
通常レンタルかお試しか見分けます。

宜しくお願いします

452:NAME IS NULL
08/02/12 06:17:15
>>449
VBAで関数を記述しないと無理だな。
数式を一行で表わすっていうのはむずかしいんだよ。
VBAなら、どんなに複雑な判定文でも実現可能なはず。


453:NAME IS NULL
08/02/12 17:12:51
>>449
まず、自分の飯のタネの仕事を2ちゃんで他人に只でやってもらおうってむしが良すぎない?

それにこれそんなにややこしい請求パターン?
「通常レンタル」、「お試しレンタル」、「お試しから通常切り替え」の3パターンしか無いように思うけど?
プログラマーならそれほど苦労せずにできることだと思うけど・・・

もしかしてエクセルの延長線でできると思ってない?、
レンタル代金請求の仕組みって請求書発行までするってことでしょう?
プロでも結構苦労することを簡単に出来ると思っている?
繰越処理が割と難しいし、消費税の問題もある。
相手のあることだから意外と例外処理も発生するし、
後から修正することも必要だったりする。

ここで質問に答えてもそのシステム完成しないと思うけどなあ?



454:NAME IS NULL
08/02/12 19:07:49
(質問がよく理解できてない気がするオレだけど)
請求パターンをテーブルにすりゃいいんじゃないの?
パターンごとに1とか0を最初からいれといてクエリ
でつないだら?

455:NAME IS NULL
08/02/12 21:59:21
俺がやったことあるのは不動産の賃貸契約書管理とか
リース資産のリース契約書管理とかだけど、このケースでは・・・

 ・契約の開始/終了は年月日ではなく年月で管理(シンプルでいいね)
 ・契約開始年月はデータ入力の時点で確定。
 ・契約終了年月は契約期間中に変化する(先延ばし)可能性あり。
 ・契約区分に通常/試用があり、契約期間中に変化する(試用→通常)可能性あり。
 ・請求金額1(納品送料)の請求時期は契約区分が通常なら契約開始年月、試用なら契約終了年月。
 ・請求金額2(引上送料)の請求時期は必ず契約終了年月。
 ・請求金額3(消毒費用)の請求時期は必ず契約終了年月。
 ・どの請求金額も請求するのは契約期間中に必ず1回だけ。


このあたりを踏まえた上で設計するのがポイントになりそうだね。
かなり作りこみしちゃったからもうそんな変更できないよと言われても困るけどw

456:NAME IS NULL
08/02/13 08:20:02
>>429
ACCESSにデータ抱え込んでおいて、
EXCELからADOでも使って呼び出したらいい。

これなら好き勝手に出力形式作れる。

457:NAME IS NULL
08/02/14 09:45:10
>>441
>32bitのメモリ空間って言ったら4GB
理論的には、使い切れないほどの巨大なメモリ空間のはずなんだが、
実際にオブジェクトを増やしていくとすぐに限界にきてしまうのなぜだろう。

458:NAME IS NULL
08/02/14 14:17:31
>>457
そりゃあリソースの話じゃないのか?
いくらメモリがあってもリソースが足りなくなればそれ以上は出来ないよ。
もしかしたら、いまだにWin98系列を使ってない?


459:NAME IS NULL
08/02/14 22:40:04
それはない。


460:NAME IS NULL
08/02/14 23:15:39
Windowsのリソース管理テーブルサイズと
Accessのリソース管理テーブルサイズはべつもんでしょ。
ヘルプとかにリミット書いてなかったっけ?

461:NAME IS NULL
08/02/15 18:13:51
>>460
そうなのか?それは知らんかった。お恥ずかしい。

それはともかく、オブジェクトってフォームとかレポートのことだと思うのだけど、
Accessでオブジェクトを極限まで増やすっていったいどれくらいのこと言ってんだろう?
そんなに増やしたら管理するのが大変だと思うし、それってAccessの守備範囲なんだろうか?
大人数での開発に適してないAccessでそんな開発するほうが無理と違うのかなあ?


462:NAME IS NULL
08/02/15 19:00:25
TableCount=425
QueryCount=263
FormCount=144
ModuleCount=144
MacroCount=0
ReportCount=0

こんな感じだが、特にFormはMemoryを多く消費する。
オブジェクトの管理はうまく工夫すれば、どんなに数が増えようが負担は変わらない。


463:NAME IS NULL
08/02/16 00:39:02
テーブル一覧で毎日死ぬほどスクロールさせてんだろうな。

まあ本人が負担と思ってないんだから別にいいけどw

464:NAME IS NULL
08/02/16 03:26:33
テーブルが多くなるとスクロールで探すのに苦労するってのは初心者だな。
アクセスのレコードソースの入力欄はインクリメンタルサーチ機能があるんだから
それを最大限に活用できるような命名規則をつくるのが肝心なんだよ。


465:NAME IS NULL
08/02/16 08:40:03
>インクリメンタルサーチ機能

テーブル名に漢字を使ってるヤシにはピンとこないんだよね。

466:NAME IS NULL
08/02/16 08:53:56
>アクセスのレコードソースの入力欄

これないんだけど・・・
アホにもわかるように詳しく

467:NAME IS NULL
08/02/16 10:12:13
設計が最適化されてたらフォームにしろレポートにしろ
複数テーブルいくつも連結するだろうに。

インクリメンタルサーチが役立つって、おまえはいつも
単体テーブル一個しか使わないのかよw

468:NAME IS NULL
08/02/16 16:01:22
>>462
うわあ・・・糞の山だあ・・・

469:NAME IS NULL
08/02/16 17:02:42
>>462
> TableCount=425
425もテーブルがあるのか?
いったいどういうシステムなんだ?月ごとにテーブルを切り替えているとか?

> QueryCount=263
> FormCount=144
> ModuleCount=144
オブジェクトの話だよね?モジュールが144っていったいどんな分け方したらそんなことに?
プロシージャをモジュールごとに分ける意味が無いような気がするが?
それともフォームにはプロシージャーを書かないようにしているとか?

> MacroCount=0
> ReportCount=0
ほんでもってレポートが0?印刷しないのか?
それとも、他の方法でも使っているのか?

随分と謎のシステムだなあ?

470:NAME IS NULL
08/02/16 18:49:37
>>466
俺もなんのことかわからなかったのだけど、
もしかしたら、コード ウィンドウのことかな?

用語の使い方といい、オブジェクトの数といい、
随分独創的なシステムの構築をしているらしいなあ?
まあ、それもいいけど・・・・・・


471:NAME IS NULL
08/02/16 18:59:50
>>466
1.フォームオブジェクトを選択
2.右クリックでデザインビューを選択
3.フォームのプロパティを開く
4.すべてのタブを選択
5.レコードソース(1番上)


472:NAME IS NULL
08/02/16 19:34:23
>>471
それを省略して言うと「アクセスのレコードソースの入力欄」になるのか?独創的だなあ?
なんだか良くわからないが、とりあえずいいや。独創的過ぎて参考にならなさそうだし。
だいたいテーブルの管理は印刷でもしておけば問題ないし、特にどうってことはない。
とりあえず、メモリを食うフォームでも140まではいけるんだ。
俺はまだ60もいってないから、当分は大丈夫。これは参考になった。サンキュー!


473:NAME IS NULL
08/02/16 20:13:53
フォームと同様にレポートもメモリ使うみたいだから、それもカウントしなきゃダメだよ。

474:NAME IS NULL
08/02/16 20:57:05
>>473
ああ、それもそうだなあ。するってえとそろそろ限界が近いかもしれない。
基本的に1ファイルで管理するAccessではやはり大規模開発(ってほどでもないけど)は無理かも?
随分前から代替手段を検討しているけれど、とりあえず問題がないのでなかなか踏ん切りがつかない。
一応第一候補はJavaなんだけどなあ?



475:NAME IS NULL
08/02/17 01:26:08
Mac、Linux、Windowsとプラットフォームを問わないJAVAでの開発がこれからの主流。





そんなふうに考えていた時期がぼくにもありました・・・

476:NAME IS NULL
08/02/17 11:04:55
Accessの代替がJavaとかズレてねえ?

477:NAME IS NULL
08/02/17 12:07:16
>>469
アクセスのレポートを使わないのは、他の印刷ツールを使っているからだ。
そのほうがよりニーズに対応したものが作れるということもあるが、
MDBからできるだけ外に出したいという理由がある。(メモり対策、分散作業のため)
その代わり、ワークファイルやモジュールが増大するのは仕方ないと思っている。

478:NAME IS NULL
08/02/17 13:26:35
>>477
アクセスのレポートより良い印刷ツールなんてそうそう無いと思うのだが?
いったいなに使っているんだろう?


479:NAME IS NULL
08/02/17 15:30:36
>>476
じゃあ、他になんかある?


480:NAME IS NULL
08/02/17 15:36:56
VB

481:NAME IS NULL
08/02/17 16:27:22


482:NAME IS NULL
08/02/17 17:46:13
おいおい、Accessより大規模なシステムの開発の話だぞ。
VBや桐じゃ同程度の開発がいいところだと思うけどなあ?
ってまあここで聞くような話じゃないけどな。


483:NAME IS NULL
08/02/17 20:41:54
データベースエンジンの話が抜けてるのがズレてるっぽい

484:NAME IS NULL
08/02/17 21:47:03
エンジンはJetで

485:NAME IS NULL
08/02/17 22:20:57
>>484
なんでAccessの一番の弱点だと思われるJetエンジンをAccessの代替で使わなければいけないんだ。
MySQLあたりを使うのが普通だろう?


486:NAME IS NULL
08/02/17 22:25:51
俺の会社オラクル使ってるけど、レポートと入力は桐でやってる。
レポートは桐が群を抜いてるし、入力も桐の表形式が速くて誤入力がない。
他はオラクル。

487:NAME IS NULL
08/02/17 22:38:21
オラクルと桐しか使ってないやつがなんでこのスレ来てんの?w

488:NAME IS NULL
08/02/17 23:04:14
2ちゃんもDB関係は全部目を通してる。
一応、DBが本職なんで。

489:NAME IS NULL
08/02/18 02:14:37
>>478
アクセスのレポートは作成された帳票にユーザが手を加えられないのが難点。
エクセル形式で帳票作成できるツールであれば、作成されたものはユーザが自由に改造できる。
また、ユーザが作ったエクセルファイルをそのまま流用できるのもいい。

URLリンク(www.adv.co.jp)

ACCESS VBAからでも使用可

490:NAME IS NULL
08/02/18 05:45:35
>>486
桐とオラクル?
初めて聞く組み合わせだ。
確かにワープロを作っていた会社だけあって日本語のレポートは郡を抜いている。
ほとんどどんな印刷物でもできる。
でも、桐の外部データーベース接続は遅いって聞いたのだけど?
それとも、入力と印刷のたびにファイル変換しているのだろうか?
オラクル自体はなんで動かしているの?まさか桐の一括処理?
もし良ければ参考にしたいので教えて下され。


491:NAME IS NULL
08/02/18 08:33:50
入力と印刷のたびにファイル変換してる。

入力は一部だけど、キーパンチャーがバコバコボコボコ入力する部分だけ。
ほんと、入力も桐が効率良いわ。

492:NAME IS NULL
08/02/18 19:07:03
>>491
Accessのフォームも作りこんで複写とか出来るようにすればそれなりに効率は良くなるんだが、
あまり複雑になると遅くなったりするからなあ?
確かに桐を使うってのはひとつの手だとは思うし、
ファイル変換してというのはありだとは思うけど、あまりスマートなやり方ではないなあ?
マネしてやってみようという気には残念ながらならないなあ?


493:NAME IS NULL
08/02/18 20:15:43
お前はJavaでやればいいよ

494:NAME IS NULL
08/02/18 21:15:23
>>492
複写ってどうやんの?

495:NAME IS NULL
08/02/18 22:59:30
・オラクル→桐
・桐→オラクル

通常の運用でこの処理を何度も何度も何度も何度も繰り返してるってことだな。
人間のやることだからバコバコ打った後に桐→オラクルするつもりがオラクル→桐しちゃったとか
年に1回くらい普通にありそうだが・・・

496:NAME IS NULL
08/02/18 23:02:02
Accessの帳票は印刷にはいいんだけど、
データでくれって言われた時にちょっと困る。

前はPDFにして送ったけど。

497:NAME IS NULL
08/02/18 23:17:54
印刷物を画像データで要求されて困るのはAccessのレポートに限ったことじゃないと思うが

498:NAME IS NULL
08/02/19 05:05:58
>>495
普通はプログラム(一括処理?)組んで自動処理するだろう?
オラクルまで導入してそんなところを手作業でしてたらいい笑いものだ。


499:NAME IS NULL
08/02/19 05:07:07
>>497
たぶんエクセルと比較して言っているんだろう?


500:NAME IS NULL
08/02/19 09:45:59
印刷イメージをデータで送るってこと多いのか?レポートのレコードソースをCSVでというのはよくあるが。

501:NAME IS NULL
08/02/19 11:08:13
>>494
> 複写ってどうやんの?
元のデータを変数に格納してその変数を使ってレコードを追加すればいい。
そんなに難しいプログラムではないよ。
使いやすく作るのは難しいかもしれないけれど。


502:NAME IS NULL
08/02/19 12:31:52
>>497
エクスポートで.htmlやら.xlsやら選べるの知ってたから安請け合いしたら、
実際やってみてウボァということがあった。
まあ俺が間抜けなんだけど。

>>500
実際のレイアウトとか見たいんじゃないかな。

Accessだとレポート使うけど、
こないだHSQL+JavaでやったときはHTML出力にした。
Accessのレポートは印刷設定が時々リセットされるし。
そのたびに呼ばれるのはかなわん。

503:NAME IS NULL
08/02/19 13:17:48
社内で主にデータ閲覧用のデータベースとしてアクセス(ADP)使っているんだけど、
そろそろレポート出力の方もちゃんと勉強しなくちゃと思ってます。
レポートの作り方で参考になるようなサイトってあまりみかけないんだけど、
おすすめあったら教えてプリーズ。

504:NAME IS NULL
08/02/19 18:52:41
そういや、レポートってあんまりなにかを見て覚えたという記憶がない。
トライ&ゴーでいろいろやって、なんとなくわかった。
基本的にはフォームと良く似ているけれど、
ユーザーインタフェースを意識しなくていいので楽な気がする。
気をつけなくてはいけないのはヘッダーとフッターの使い方。
特にグループヘッダーフッターの使い方で改ページするところが変わってくる。
いろいろやってみればだんだんわかってくるとは思うけど最初は戸惑う。
それと、あまり複雑なレポートを作ると重く遅くなるので、
印刷用のデータをSQLで作ってレポートはシンプルになるように気をつけたほうがいいと思う。


505:NAME IS NULL
08/02/19 19:25:55 zoj3pqPw
ACCESSでこのようなデータを入力後下記の形にVBAでしたいのですが
どうすればいいですか?
納品先  |商品名  |規格   |数量   |
A    |やさい  |2L   |50   |
A    |やさい  |3L   |30   |
B    |衣料品  |L    | 5   |

変換したい形
納品先  |商品名  |内容1  |内容2  |内容3  |
A    |やさい  |2L   |3L   |     |
A    |やさい  |50   |30   |     |
B    |衣料品  |L    |     |     |
B    |衣料品  |5    |     |     |



506:NAME IS NULL
08/02/19 20:06:10
あほなことやってると思うけど
あえてやり方挙げるなら
UNIONかな

507:NAME IS NULL
08/02/19 20:09:08
>>505
テーブルでは、たとえ桐つかっても無理だな
レポートでやれ

508:NAME IS NULL
08/02/19 20:43:19
レポート作るとき

フィールドリストからドラッグ アンド ドロップして
ラベルとテキストのコントロールが連結した状態で出来上がるが

その一方だけをセクションを跨いで移動したいとき

例えばラベルだけをフッターセクション上に置き
テキストは詳細セクション上に置くには
どのようにすればいいのでしょう?

ドラッグしてもセクションをまたげなくないですか

509:NAME IS NULL
08/02/19 20:46:25
またげないお

510:NAME IS NULL
08/02/19 21:02:27
>>508
それほど悩むことかな?
ラベルをカット&ペーストで持っていけばいいんじゃない?
ラベルだけ作り直したってたいした手間ではないし。


511:NAME IS NULL
08/02/19 21:04:58
Access2007のはラベルのC&Pでも持っていけなかったorz


512:NAME IS NULL
08/02/19 21:12:41
>>510
慣れてる方はそう思われるんでしょうけど
出来うるなら簡素なやり方でやりたい

フィールドが沢山あるもので
オートレポートでもフィールドが多すぎて出来ないと
表示されますし

513:505
08/02/19 21:44:35 zoj3pqPw
>>507
レポートだとどうすればいいですか?

514:505
08/02/19 21:59:36 zoj3pqPw
まちがえました
再度書き込みしなおします

ACCESSでこのようなデータを入力後下記の形にVBAでしたいのですが
どうすればいいですか?
納品先  |商品名  |規格   |数量   |
A    |やさい  |2L   |50   |
A    |やさい  |3L   |30   |
B    |衣料品  |L    | 5   |

変換したい形

納品先  |商品名  |規格1  |数量1  |規格2  |数量2  |規格3  |数量3  |
A    |やさい  |2L   |50   |3L   |30   |     |     |
B    |衣料品  |L    |5    |     |     |     |     |

515:NAME IS NULL
08/02/19 22:03:12
>>512
オートレポートってアメリカならいざしらず罫線を使った複雑な帳票を要求される日本では使い物にならない。
ラベルとテキストの連結は便利なようで実際はじゃまにしかならない。

レポートって最初からレイアウトが一発で決まるということはまず無くて、
結局修正修正の繰り返しになることがほとんど。
経験上、簡素なやり方だと後で手直しする手間がかえってかかる。
複雑な帳票になるほど一つ一つコントロールを配置していくほうが結局近道になる。
複雑な帳票といっても良く見ると似たようなコントロールが多いので、
一つ作ってそれをコピーしてから修正すれば意外と手間はかからない。

まあ、意にそぐわない答えだと思うけど正直そう思う。

516:NAME IS NULL
08/02/19 22:07:04
似たようなものがいっぱいあるとき
全部のプロパティいじるの面倒で仕方ないんですが
コントロールの配列みたいなことは出来るんですか?


517:NAME IS NULL
08/02/19 22:37:59
>>516
> 似たようなものがいっぱいあるとき
> 全部のプロパティいじるの面倒で仕方ないんですが
いったいいくつあると言うのかな?
似たようなものならいじらなければならないプロパティはそんなにないと思うのだけどね。
例えば31個のフィールドがあるならば最初にData01を作ってコピーした先をData02とすれば1を2に変えるだけ。
最初からそういうことを念頭においてテーブル設計しておけば面倒なことはないと思う。
それからコピーしてペーストしたコントロールを移動してからさらにペーストすれば、
移動した方向にいくつでも並べられる。これを使うと配置も便利。
工夫次第でこれくらいのコントロールは簡単にできるよ。
そのくらいことで面倒なんて言っていたらVBAなんてとてもできないし、
VBAを使わないAccessなどクリープの入ってない・・・・・・(w

31個よりはるかに多いというのならそれは根本的に考え直したほうがいいと思う。
31個の例でもプレビューするのに何分もかかりました。
それよりはるかに多いのなら使い物にならないだろうし、
ハングして動かなくなる可能性も高い。

> コントロールの配列みたいなことは出来るんですか?
コントロールの配列ってまったくイメージがわかないんだが、出来ないだろうと思うよ。

518:NAME IS NULL
08/02/19 22:42:08
>>515
いや、参考になりやす
アメリカ文化の日本文化の罫線 
バカヤローです。

ただofficeの浸透力、シェアにあきらめて
やるしかないですね

519:NAME IS NULL
08/02/19 22:52:21
>>518
ここで出てきそうな言葉が「桐にしとけ」なんですが、
確かにこういう分野は桐が得意でいいんですが、
桐には桐の問題点があるんでね。
Accessでも工夫次第で大抵のことはできるんでがんばってください。


520:NAME IS NULL
08/02/19 23:05:07
>>517
コントロール配列はVBでは基本テクニックっすよ。

521:NAME IS NULL
08/02/19 23:24:24
 VB6 では、実行時に配列を振る必要はないのですが、デザイナで 1 つ、コピー元になるコントロールを配置しておく必要があります。
また、そのコピー元の Index プロパティを画面デザイナから 0 に設定しておいてください。(実行時の設定はできません)
新しいコントロールを追加するというよりは、コントロールを複製するという動きになります。
そのコピー元は Index プロパティが 0 のコントロールで、Load ステートメントを使用することで複製されます。
この時、Visible プロパティは False になっていますので、True にする必要があります。


522:NAME IS NULL
08/02/19 23:24:56
URLリンク(jeanne.wankuma.com)
' Load イベントで配列を動的に作成してフォームに加える
Private Sub Form_Load()
    Dim i As Integer
    For i = 1 To 9
        ' Load ステートメントを使用してコントロールを作成する
        Call Load(Me.Text1(i))
        ' ここで、プロパティなどを必要に応じて設定します
        Me.Text1(i).Text = "Text" & CStr(i + 1)
        Me.Text1(i).Top  = Me.Text1(0).Top + (240 * i)
        ' 初期値で False になっているので True にする
        Me.Text1(i).Visible = True
    Next i
End Sub

523:NAME IS NULL
08/02/19 23:28:14
VBAでは使えないサンプルソース乙

524:NAME IS NULL
08/02/19 23:34:43
>>516
桐には初めからファミリってのがあって、コントロールをグループ化して一括で設定できるど

525:NAME IS NULL
08/02/19 23:35:54
URLリンク(www.h3.dion.ne.jp)
URLリンク(www.moug.net)
URLリンク(okwave.jp)


526:NAME IS NULL
08/02/20 11:29:28
>>504
アドバイスありがとう

527:NAME IS NULL
08/02/20 12:09:20
>>525
アドバイスありがとう

528:NAME IS NULL
08/02/20 20:58:58
>>514
エクセルならいざしらず、まずデータをコード化しないとどうにもならないと思いますよ。
このままコード化しないまま処理しようと思っているのなら、エクセルでやったほうがいいでしょう。

それはともかく考えかたとしてはこういうことでいいと思います。
規格によって書き込む位置が変わるわけですからその規格がどの位置になるかの情報が必要です。
この場合2Lは1の位置、3Lは2の位置、Lは1の位置ということになります。
この位置情報をテーブルで保存しておきます。

そしてあらかじめ変換したい形の空白のデータベースを用意し、そこに商品マスターからデータを流し込みます。
そのテーブルに元の形式のテーブルと位置情報のテーブルをリレーションして更新をかけます。
これはSQLをつかうのが簡単で早いでしょう。

とはいうものの本当にこんなやり方でいいんでしょうか?やさいというのは単なる例なのでしょうが、
規格がある一定の範囲で収まるとは思えないのですが・・・・
印刷サイズを越えたらどうするのでしょう?
根本的に考え方を変えたほうがいいように思うのですが?


529:NAME IS NULL
08/02/20 23:10:49
衣料品の規格Lは常識的に推理できるけど野菜の2Lとか3Lとかが
どんなものかまるで想像つかないな。
もしかしたら4Lとか5Lとか99Lとかたくさん種類があってそれを50音順に、
あるいは入力順に左詰めで並べたいということだろうか?
順番は関係なく、とにかく3つが横並びになっていればいいのか?
同じ野菜で同じ規格が複数行入力されたら数量は合計するのか?
4つめの規格が入力されてしまった場合は捨てるのか?数量4を用意するのか?
それとも4つめの規格については絶対入力されない保証があるのか?

もうちょっと要件定義が必要だとオモタ

530:514
08/02/20 23:49:11 DCQNrO7Q
>>528
レスありがとうございます

詳しい説明文もかかずすいませんでした
全然説明不足でした

DATAというテーブルに下記の形で入力します
納品先 |商品名    |規格  |数量  |
-------------------------------------
A    |やさい    |2L   |50   |
A    |やさい    |3L   |30   |
A    |やさい    | L   |15   |
A    |やさい    | M   |20   |
A    |やさい    | S   |33   |
A    |やさい    |等外  |40   |
B    |衣料品   |L    | 5   |


変換後というテーブルを作成しておき以下のように
VBAなりの方法で以下のように追加したいと思います
納品先  |商品名  |規格1 |数量1 |規格2 |数量2 |規格3 |数量3 |規格4 |数量4 |
--------------------------------------------------------------------------------
A     |やさい   |2L   |50  |3L   |30  |L |15 |M |20 |
A     |やさい   |S    |33  |等外  |40  |    |     |     |     |
B     |衣料品 |L    |5   |     |    |   |   |     |     |

規格で位置が決まってるわけではありません
規格、数量とも1~4まで交互にあり
その商品ごとの規格、数量ははかならず1からはじまります
仮にやさいで規格が6つ存在したら
次のレコードの規格1の所に入る形でやりたいです

うまく伝わりましたでしょうか?

よろしくお願いいたします



531:514
08/02/21 00:04:34 Wq3um4ha
>>530
かなりずれてしまいました

>>529

>衣料品の規格Lは常識的に推理できるけど野菜の2Lとか3Lとかが
>どんなものかまるで想像つかないな。
>もしかしたら4Lとか5Lとか99Lとかたくさん種類があってそれを50音順に、
>あるいは入力順に左詰めで並べたいということだろうか?
>順番は関係なく、とにかく3つが横並びになっていればいいのか?

  やさいに限らず規格は無限と考えてもらえると助かります
  並ぶ順番などは特にないです
  上にあるものからでかまいません

>同じ野菜で同じ規格が複数行入力されたら数量は合計するのか?

  集計に使う予定で考えてますので
  クエリをつかって日付で抽出し、納品先ごとで合計します
  

>4つめの規格が入力されてしまった場合は捨てるのか?数量4を用意するのか?
>それとも4つめの規格については絶対入力されない保証があるのか?

  530を見てもらえると助かります

532:NAME IS NULL
08/02/21 00:32:42
レポートならこんな感じにサブレポートの列数を指定してやるといい。
URLリンク(nullpo.vip2ch.com)


533:NAME IS NULL
08/02/21 02:30:27
'ADO参照追加
Private Sub hoge()
Dim cn As New ADODB.Connection
Dim rstKey As New ADODB.Recordset
Dim rstData As New ADODB.Recordset
Dim rstTrans As New ADODB.Recordset
Dim count As Integer
Dim flg As Boolean

Set cn = Application.CurrentProject.Connection
cn.Execute "DELETE FROM 変換後"

rstKey.Open "SELECT 納品先,商品名 FROM DATA GROUP BY 納品先,商品名", cn, adOpenForwardOnly, adLockReadOnly
rstTrans.Open "SELECT * FROM 変換後", cn, adOpenForwardOnly, adLockOptimistic

Do While Not (rstKey.EOF)
w = 0
flg = False
rstData.Open "SELECT * FROM DATA WHERE 納品先='" + rstKey.Fields(0) _
+ "' AND 商品名='" + rstKey.Fields(1) + "'", cn, adOpenForwardOnly, adLockReadOnly
Do While Not (rstData.EOF)
If w = 0 Then
flg = True
rstTrans.AddNew
rstTrans.Fields(0) = rstData.Fields(0)
rstTrans.Fields(1) = rstData.Fields(1)
End If
rstTrans.Fields(w * 2 + 2) = rstData.Fields(2)
rstTrans.Fields(w * 2 + 3) = rstData.Fields(3)

If w < 3 Then
w = w + 1
Else
rstTrans.Update
flg = False
w = 0
End If

rstData.MoveNext
Loop
rstData.Close
If flg Then
rstTrans.Update
End If

rstKey.MoveNext
Loop
rstKey.Close
rstTrans.Close

Set rstKey = Nothing
Set rstData = Nothing
Set rstTrans = Nothing
Set cn = Nothing

End Sub


534:NAME IS NULL
08/02/21 10:56:56
規格、数量とも1~4までって限度が決まってるなら、桐でやれば簡単じゃん

535:NAME IS NULL
08/02/21 15:05:24
>>531
>  クエリをつかって日付で抽出し、納品先ごとで合計します

Pivot使えばテーブルの変換不要
元テーブルから直接集計汁

536:NAME IS NULL
08/02/21 15:10:18
>>534
だれもそんなこと聞いてないよ。空気読めないというか、読む気が無いアホは引っ込んでろ。
俺はVer1からの桐ファンなんだけど、桐の評判落とすようなことはするな!
桐を使うか?Accessを使うかはケースバイケース。
だいたいの場合、手軽にやるなら桐、アプリケーションを作るつもりならAccessを使う。
桐しか使えないアホがなんでも桐が一番なんていうのは良い恥さらしだ。



537:NAME IS NULL
08/02/21 15:14:43
変なの来たわ

538:NAME IS NULL
08/02/21 18:04:05
>>530
上のテーブルはいいけど、下のテーブルはもはやリレーショナルデータベースである意味がない。
もちろん、VBAを使って無理矢理やればどうとでもそういうデータを作成できるけど、
それはVBAを勉強しろとしか言えない。

VBAでやるきがあるなら「レコードセット」がわかればできると思うよ。

>>  集計に使う予定で考えてますので
>>  クエリをつかって日付で抽出し、納品先ごとで合計します

ならば、上のデータを直接クエリやVBAで集計することを考えた方がいいのでは?

539:514
08/02/21 19:28:23 Wq3um4ha
>>533
できました
ありがとうございました
使わせていただきますね
自分ももっと勉強しなければ...

>>535
基本は複数行入力しないように心がけてるので大丈夫です

>>538
人から頂いたコードをカスタマイズする程度ならできるんですけど
一からとなるとちょっと自信ないんです....


  

540:NAME IS NULL
08/02/21 20:31:59
>>539
そういう なまいきな発言をするから、周りの人に教えてもらなくなって、ここで聞いているんだね。

541:NAME IS NULL
08/02/22 00:47:15
つか、こんなレコード作ってなんに使う気なんだ?

542:NAME IS NULL
08/02/22 05:22:45
いっぱい釣れたのでもういいです

543:NAME IS NULL
08/02/22 09:47:34
>>541
上のほうで出てた印刷イメージのデータを作るってことじゃないか?

544:NAME IS NULL
08/02/22 20:40:56
>>543
まあ、そうなんだろうけど正直あまり良いやり方ではないと思う。
そのまま印刷したんじゃやたら縦に長い表になるからって、
わざわざこんな面倒なことをするんだろうけど、
それなら段組印刷でもすればいいと思う。
そっちのほうがずっと見やすいしシンプルだ。
これもそう簡単に実現はできなさそうだけど
同じ努力するならそのほうが良いと思う。


545:514
08/02/23 14:47:52 BrdEtbtD
>>540
気にさわったのであればすいません
そんなつもりはありませんでした

>>541
543さんの方が言われるとおりです
今までエクセルでこの形で印刷してたんですけど
アクセスに移行しても見慣れたこの形がいいといわれまして





546:NAME IS NULL
08/02/23 15:24:51
>>545
> アクセスに移行しても見慣れたこの形がいいといわれまして
見慣れてない俺からしてみると不自然なんだけどね。
まあしょうがないか?現実にはすべて合理的ってわけには行かないものなあ。



547:NAME IS NULL
08/02/24 22:20:07 +jC5teAM
>>514
印刷目的ならテーブル(or クエリ)レベルで変換するより複数列レポート使うのがお奨め。
たぶん今後も開発や修正が出てきそうな雰囲気だから、作るなら柔軟性や汎用性を持たせておいたほうがいいと思うよ。
「見慣れた形がいい」程度の理由で決めてる相手なら、今後も「列数変えろ」とか「伝票印刷もしたい」とか言い出す可能性があるからね。

548:NAME IS NULL
08/02/25 07:56:12
要するにこういうこと。
URLリンク(www.nurs.or.jp)
実際に作って見せればこっちのほうが見やすいっていうと思うよ。

そうしてきっとこう言うんだよ。
「俺が言っていたのはこういうことだよ。やっとわかったか?」
「嘘つけ!」
www


549:NAME IS NULL
08/02/28 17:48:38 Tzp8hxPl
アクセスのコンソールクライアントを探してたのですが、ベクター探しても無かったので
WSHの練習を兼ねて作ってみました。
うっぷします。
詳細は同梱のREAME.txtを読んでくだされ。
pass:ac
URLリンク(www-2ch.net:8080)

・ac.wsf
 MSアクセスのコマンドラインクライアント
 使い始めは"/c"スイッチで環境ファイルを作成してください。
 起動すると"AC>"とプロンプトを表示するのでSQL文を入力して下さい。
 画面の表示の整形はCSVです。
 ※標準入力を使用してるので、CScript経由で無いとエラーになります。

使い方:/h (ヘルプ) /b (bachモード) /c:MDBへのパス または /d:dsn名 (最初のみ)
    /u:ユーザ名 /p:パスワード 環境ファイル名(省略時はdefault設定)

※AC>プロンプト内のコマンド
AC>プロンプト内では次のコマンドが使えます。
    AC>help;
      help;       :この表示
      quit;       :コンソールの終了
      (SQL文);    :SQLの実行
      @(ファイル名);  :ファイルの実行
      !(コマンド名);  :コマンドの実行

      注)文末記号(;)の後にリダイレクト記号(>)とファイル名で
        出力先をカレントディレクトリのファイルにします。
      例)select * from TEST;>data.csv

※元々CSVを取得、投入するスクリプトを改造したので、CSVを投入する
 スクリプトも同梱します。
・acm.wsf
使い方:/h (ヘルプ) ( /i or /u:キー項目名 挿入 or
    /t:テーブル名 環境ファイル名(省略時はdefault設定)

550:NAME IS NULL
08/02/28 18:57:46
schemaとかdumpとか希望

551:NAME IS NULL
08/02/28 21:08:13
JetSQLConsoleが有名(Wikipediaにも載ってる)だけどね。
そっちは日本語化けるから、そういう点では価値あるかも。

552:NAME IS NULL
08/02/29 05:49:55
Error : 3661
[object Error] on Connection Open
アプリケーションを起動できません。システムデータベースが存在しないか、またはほかのユーザーが排他的にシステムデータベースを開いています。

553:NAME IS NULL
08/02/29 12:48:13 MrGipuX/
>>552
MDBまでのパスが正しいか確認してくれ。
途中に空白があるとダメかも知れん。
cスイッチを゛でくくってくり。
例 /c:"c:\My Document\test:mdb"

若しくは本当に裏でMDBが開いてるか。
アクセスアプリを開いてるとそんなのが出た。
その場合はアクセス側でマルチユーザーの設定をしないとダメかも。
メニューに共有ユーザーの設定があったと思う。



554:NAME IS NULL
08/03/03 18:17:09
ところでAccess2007のランタイムはどうなったのだろう?


555:NAME IS NULL
08/03/03 18:21:11
>>554
普通に使ってますが何か?

556:NAME IS NULL
08/03/03 18:25:33
>>555
あっそうなんだ。
URLリンク(www.microsoft.com)
ここにあるやつ?英語版で問題ないの?


557:NAME IS NULL
08/03/03 18:32:14
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)

558:NAME IS NULL
08/03/03 18:47:26
>>557
両方インストールせいってこと?
現在2000なんだけど、ランタイムがまともに動くなら2007にしてもいいかなと思ったりしている。
でも英語版でふりがな入力とかちゃんと動くのだろうか?


559:NAME IS NULL
08/03/03 18:51:39
>>558
URLリンク(office.microsoft.com)

560:NAME IS NULL
08/03/03 18:52:12
>>558
URLリンク(office.microsoft.com)

561:NAME IS NULL
08/03/03 19:35:47
別に無理に答えろとは言ってないよ。
使用した人間の実体験を聞きたいのであって、調べればわかるサイトの情報なんていらないよ。
つうことで後は無視するから悪く思わんでくれ。


562:NAME IS NULL
08/03/03 19:39:09
あんた誰?

563:NAME IS NULL
08/03/03 22:16:40
基地外きたー

564:NAME IS NULL
08/03/05 02:20:14
昨日Access2007を購入したばかりです。

>>557 のランタイム及びDeveloperExtensionsを早速インストールしました。
Officeボタン?に最初「Developer」と表示されていたのに、いつの間にか消えています。
その後ランタイムやDeveloperExtensions、はたまたAccess2007本体まで
アンインストール→再インストールしたのに、一向に「Developer」が表示されません。

何が原因なのだろう・・・?
ランタイム無償というコトバに飛びついて買ったのに・・・
どなたかおわかりの方いらっしゃいませんか?

あちこちネットで見てもこの現象は出てないみたいです。
ちょっと疲れたので仮眠します。

565:NAME IS NULL
08/03/05 08:29:59
ランタイムとOffice本体は同じPCにインストールしてはいけない
あくまでOfficeの入っていないPCに入れるためのものだから
ご愁傷さま


566:NAME IS NULL
08/03/05 08:40:05
DeveloperExtensionsで、ランタイム込みのパッケージと、ランタイム別途ダウロード指示のパッケージを作れる
別途ダウン指示パッケージの配布先がランタイムダウンする
自分でランタイム入れてどうすんのよ

567:NAME IS NULL
08/03/05 12:15:51
>>564です。
>>565 >>566
レスありがとうございます。確かに自分のPCにランタイム入れてました。
アンポンタンでごめんなさい。
やりたいことは「Access2007で作成されたもののランタイム版を作成する」ことですので、
自分のPCにはDeveloperExtensionsだけ入れれば良いのですね?

ランタイムそのものはアンインストールしましたが、それでも「Developer」が
オフィスボタンから表示されません。
今回導入したのはAccess2007のみで、その他のOffice製品はOfficeXPを
使っています。この中にはAccess2002も含まれています。
つまりAccess2002と2007が共存している状況なのですが、これが良くないのかなぁ?


568:NAME IS NULL
08/03/14 02:02:15 ppdTlgN9
ACCESSに詳しい方がいらっしゃるようなので、教えてください。ACCESS2003ユーザーですがテーブルのカーソル移動が突然遅くなり、画面の左下には計算中って表示されます。動きが遅くていらいらするんですがどなたかこの現象の解決方法ご存じですか?

569:NAME IS NULL
08/03/14 05:22:39
そういう難しい話は詳しい人に聞いた方が良いな

570:NAME IS NULL
08/03/14 09:49:51
>>568
On Current イベントは削除してください

571:NAME IS NULL
08/03/14 12:17:55
>>568
関係ないが・・・

>>ACCESSに詳しい方がいらっしゃるようなので、教えてください。

Accessに詳しい方がいらっしゃらないAccessスレっていうのも見てみたいなw

572:NAME IS NULL
08/03/14 13:34:46
Accessには詳しいが、お前の環境やファイルのことなぞ知らんわ。

573:NAME IS NULL
08/03/15 07:19:11
2007で数値型フィールドだけカーソル移動がやたら遅くなる現象があったけど
SP1当てたら直ってたな

574:NAME IS NULL
08/03/16 02:12:15
Access2007の購入考えているんですが、Vista対応ってしてますか?
公式HPのシステム要件ではよくわからんかった。

575:NAME IS NULL
08/03/16 12:59:54 GiAudtrQ
>>574
もちろんだよw
XPとVistaそれとServer2003に対応。

576:NAME IS NULL
08/03/16 22:42:30
サンクス。じゃ勉強用に買うわ。

577:NAME IS NULL
08/03/25 17:16:45 B6LLrA9G
>>562
ハナテン中古車センター

578:NAME IS NULL
08/03/30 19:12:33
>>568
>On Current イベントは削除してください

と同義かどうか分からないが、一旦mdb閉じて、ldb削除すると治ったことがあるよ

579:NAME IS NULL
08/03/30 22:14:46 bRsz35Vf
既出だったらすいません

コンボボックスで数字を打ち込むようにしたのですが(1テキスト1文字)
ボックスの大きさのせいもありますが、矢印のせいで選択した数字が
見えなくなってしまいます。
アクティブにしたときまたはカーソルがあったときだけ矢印が現れ
そうでないときは非表示なるような技はないでしょうか?

よろしくお願いします。

580:NAME IS NULL
08/04/01 23:40:26
テキストorラベルと
コンボボックスを
同じ場所に重ねる
ラベルがクリックされたら
コンボボックスを手前に出す
コンボボックスが確定したら
ラベルを手前に出す


581:NAME IS NULL
08/04/05 14:45:47 LoFR07Xc
アクセスのフォームに住所・氏名を入力しているのですが、
これを一太郎の宛名ラベルに出力するにはどうすればいいのでしょうか?
フォーム1,2,3,4、、、、、とあり、連続して出力したいので、
マクロをつかえば半自動化できそうなのですが。
マクロじゃあムリでしょうか?VBA必須でしょうか?

582:NAME IS NULL
08/04/05 19:16:20
>>581

なぜフォームから?
いったんテーブルに落としてから印刷させればいいじゃん?
そうすればフォームはひとつで済む。
一太郎は持っていないので知らんが、
Wordだと落としたテーブルのデータをデータソースにすればいい。
つうか、Accessのレポートだとできないようなことなのか?


583:NAME IS NULL
08/04/06 00:44:21
ジャストシステムに電話してください

584:NAME IS NULL
08/04/06 11:28:24 tzUTMXnW
>>582
ワード(一太郎)から差し込むのではなく、アクセスのフォーム上の
コマンドボタンを押すと、ワードに出力されるようにしたいのです。
というのは、
アクセスの現在のフォームに対応したものをワードに作りたいという
のと、主にアクセスをつかって入力しているからです。

レポートだと宛名書きはいいんだけど、その他の文章はアクセスから
一太郎に出力しているので、2度で間になります。
つまり、フォームからの出力とレポートへの変換とう2作業を
1つにしたいのです。


585:NAME IS NULL
08/04/06 11:32:01
質問があります。
前のレコードに移動するボタンがあります。
先頭のレコードからは前のレコードに戻れない為、エラーゴーツーなるコマンドでエラーを拾っています。
この度、レコードを移動した際に更新前処理で更新するかを確認するようなメッセージを設定しました。
更新しませんと選ぶとキャンセルをTRUEに、ME.UNDOとして処理前の状態に戻しました。
ここで先のレコードが移動出来ない時のエラーが出てしまいます。
アドバイス下さい。

586:NAME IS NULL
08/04/06 11:58:52
アドバイス

587:NAME IS NULL
08/04/06 12:25:55
On Error Resume Next

を先頭に書いとけ

588:NAME IS NULL
08/04/06 15:08:03
>>584

①フォームの入力はアクセス
②文章の入力はアクセス


どう見ても一太郎を使うこと自体が二度手間です。

589:NAME IS NULL
08/04/06 22:17:10
「ワード(一太郎)」って時点で意味不明すぎる

590:NAME IS NULL
08/04/07 01:05:38
Wordに「一太郎」っていう名前を付けて可愛がってる。
「ウチの嫁」みたいなもの。

591:NAME IS NULL
08/04/08 09:37:18
ワードからでも一太郎のファイルが開けるから
一緒になってんじゃね?

592:NAME IS NULL
08/04/08 09:43:22
そういうもんじゃないだろ。

593:NAME IS NULL
08/04/09 19:30:00 R5oZK5Ol
accessでDB作ってるんですが質問に答えていただけると幸いです。

まず、テキストボックスに入力した値をもとに検索をかけて表示
する画面を作りました。
検索の処理はVBAで作成し、form.openとかいうコマンドで表示するクエリにフィルターかけて
検索結果を表示するフォームへ投げてます。
このクエリと検索処理に問題はないと思うのですが、結果を確認すると、
検索にひっかかったデータ以外に
新規レコード(主キーのID(数値型)0が入ってる)が表示されてしまいます。
この新規のレコードが何故表示されるのかわかりません。
このフォーム自体は、追加・削除・更新全て禁止にしております。
お助けください。

594:NAME IS NULL
08/04/09 21:03:57
[追加・削除・更新全て禁止]

ほんと?


595:NAME IS NULL
08/04/09 21:12:10
たぶんホント。
「追加・削除・更新全て禁止」と書いたラベルを貼ってあるから。

596:593
08/04/09 22:46:22 R5oZK5Ol
>>594
フォームの設定で禁止にしてます。
データ更新のフォームも同じような画面なんですが
そちらは追加禁止にすることで新規レコードは表示
されません。
ソース比べても全然わからないので一応Accessの仕様ということで諦めぎみです。
ちなみにやぶれかぶれでID=0及び、IDがNULLは持ってくるなっていう条件を指定
してみましたが駄目でした。
これについては新規のレコードなんでIDに条件加えたところで意味が無いのかも知れませんが一応。

597:NAME IS NULL
08/04/09 23:20:02
まず、日本語の勉強からだな

598:NAME IS NULL
08/04/10 00:09:23
「データ更新のフォーム」とやらをパクってきてVBA部分だけ移植すればいいじゃない

599:596
08/04/10 00:58:37 CzUi+X9O
>>598
やっても駄目なんです。

600:NAME IS NULL
08/04/10 01:28:59
駄目なやつってホントに何をやらせても駄目なんだな・・・

601:NAME IS NULL
08/04/10 02:57:06
>ソース比べても全然わからないので一応Accessの仕様ということで諦めぎみです。

そんな仕様はない。

つくりの問題としか思えないが、こちらはソースを見れないので、話だけではどうにも。

ローカルテーブルなら、MDBのコピーとって、全レコード削除したらどうよ。
本当にそれが新規レコードなら、それでも出てくると思うけど、もし出てこなかったら
それ新規レコードじゃないと思われ。

602:NAME IS NULL
08/04/10 18:42:18 wWHoh7J7
こんにちは。
アクセスの初心者の質問はここで良いですか?スレ検索しましたが、見つからなかったので…

603:NAME IS NULL
08/04/10 19:32:43
>>602

ビジネス板にもACCESSスレがあるが
正直こことの使い分け方がよう解らん。
とりあえず、質問をしてみるのが吉。

604:NAME IS NULL
08/04/10 19:55:31 wWHoh7J7
ありがとうございます。
かなりあほな質問かもしれませんが、ご容赦ください。

例えば、社員一覧テーブルがあるとします。それとは別に、部署一覧テーブルがあります。

部署一覧は、部と課の二つで構成されます。例えば
ーーーーーーーーーーーーーー
A部   人事課
A部   総務課
A部   経理課
B部   営業1課
B部   営業2課
C部   企画1課
C部   企画2課
C部   企画3課
ーーーーーーーーーーーーーー

ここで、社員一覧のテーブルで、社員の部と課を入力するときに、部署一覧テーブルのデータから入力したいのですが、

1.[部]列には、部署一覧の部のみ表示(ただし重複はさせない。この場合、A部、B部、C部と表示)させて選択できるようにする。

2.一方[課]列は、もし[部]にA部が入力されていたら、それに付随する人事課、総務課、経理課のみが選択できるようになる。

こういうことをしたいのです。

ルックアップとか、クエリとかいろいろやってみても分かりません。たぶん、かなり初心者な話だと思いますが…

よろしくお願いします。 

605:NAME IS NULL
08/04/10 21:32:18
俺だったら部だけのテーブルも作る。
で、フォームを使う。
この辺の仕様変更はできるの?


606:NAME IS NULL
08/04/10 22:46:19 r1j6EY9K
604です。

部だけのテーブルを作るとかいうのもありです。
基本的に、社員一覧テーブルに情報を打ち込むときに、打ち込みやすく間違えがないように
すればいいのであって、仕様はシンプルであればどのようでも良いです。

部は確かにそれだけのテーブルを持つか、値から選ぶようにすればいいのですが
2.についてはどうでしょうか。

似通った課名もあるので、できれば入力の際に
  B部|営業1課
  B部|営業2課

と2列を出して、選んだらセルには「営業1課」と2列目が入力される、とかできればいいのですが。
C部 → 営業1課 という部と課が一致しない入力を避けたいという気持ちです。

この辺だけできれば、あとは単なる社員情報一覧だけのテーブルで、プリントするものを
自動で作ったり(名前を差し込んだりして)したいだけで、特段難しいことはする予定ないです。


607:NAME IS NULL
08/04/10 23:45:52
部テーブル  →部ID、部名
課テーブル  →課ID、部名、課名(部名は部テーブルよりルックアップ)
社員テーブル →社員ID、部名、課名、社員名…etc(部名は部テーブルより、課名は課テーブルよりルックアップ)

なんて構造にして、ウィザードで社員テーブルを元にフォームを作ればいい。
そうすれば部名、課名はコンボボックスになっているはずだから
部の更新後処理で課を絞り込めばOK。


608:NAME IS NULL
08/04/11 00:15:07
例えば電算部がシステム部とかに名称変更された時、
部テーブルの1行だけ修正すればおkな設計にしといたほうがよくないか?

609:NAME IS NULL
08/04/11 00:20:52
ID使ってルックアップ列だから
多分大丈夫じゃないか。

610:NAME IS NULL
08/04/26 21:58:57
Video ActiveX 入れると、youtubeで国別視聴制限が掛ってるオランダの16歳金髪ポルノが見れる件
自動的に選択メニュー出るし

611:指定数分のレコードコピー
08/05/02 00:27:04
VBAにて指定した分だけのレコードコピーの仕方がわかりません
お知恵貸していただけませんか?

テーブル「DATA」は
発注日=日付型
納品日=日付型
得意先CD=テキスト型
得意先名称1=テキスト型
得意先名称2=テキスト型
商品=テキスト型
件数=テキスト型
以上のフィールドがあります。

発注日で抽出したものを「DATA」に新規追加してます
その後に件数に入力した数だけそのレコードをコピーしたいんですけどどうすればいいでしょうか?
よろしくお願いいたします



612:NAME IS NULL
08/05/02 06:42:18
いまいち何がしたいか分からんから的はずれかもしれないけど
データ追加クエリを使えばいいんじゃないの?


613:NAME IS NULL
08/05/02 09:30:38
何をどこからどこへコピーしたいのか、もう一回整理して書き込んだらいい
あの説明でわかる人間は皆無だ

614:NAME IS NULL
08/05/02 12:49:58
同じテーブルないでコピーしたいと思っています

615:NAME IS NULL
08/05/02 13:24:15
for i=1 to rs("件数")
sql="insert ....... "
cn.Execute sql,,adExecuteNoRecords
next

616:NAME IS NULL
08/05/05 06:48:03
特定の条件に合致したテーブルのデータを修正するvbaを作って動かしてたんですが、凄い時間が掛かることが分かって悩んでます

do until rs.EOF
if ○ and ○ then
end if
rs.movenext
loop

ってやってるんですが、もっと高速化するやり方ってありますか?

617:NAME IS NULL
08/05/05 07:14:42
一軒づつポインタをあてて処理していく方法はとても時間が掛かります。
インデックスを再検討することで速くなったりしますが大抵は焼け石に水という感じでしょう。
クエリによりwhere節でデータを絞り込んで該当件数に対して一括処理していく方法が
取れないものか、考え直してみましょう~

いやこれはどうしようもないんですよ、、、って思われるかもしれませんが
本処理の前に前処理や後処理を加えても良いのですから、考え方を変えるつもりで。
ガンガレ

618:NAME IS NULL
08/05/05 15:18:06
where節というのは知りませんでした
なんか速くなりそうですね!ありがとうございます

619:NAME IS NULL
08/05/05 18:33:20
やりたい事によっては使えないかもだけど
UPDATE ステートメント、更新クエリもチェックしてみたら?

それと、どれくらい遅いか客観的に分かるデータ=
レコード数、処理時間、おおまかなマシンスペックは
有った方が回答を得やすいんじゃないかな
>>617 さんの回答で解決したならいいんだけど


620:NAME IS NULL
08/05/05 19:16:21
すいません。まだwhereも試してないのですが
スペックはpentiumD 2.80GHtz メモリ512MB
レコード数はおよそ2000万くらいで、条件式が6000あってそれを順に代入していく感じです
試しに条件式を一つだけにしてみたら10分くらいかかったので、たぶん40日くらい掛かる計算でした

621:NAME IS NULL
08/05/05 21:21:14
質問の内容から察するに当の本人の力量はレコード数2000くらいのDBを扱うのが
一杯一杯ぽいけど・・・ なんという無茶な

622:NAME IS NULL
08/05/05 21:47:03 vthO5f4T
>>620
2000万件 条件6000!
学生さんで、実験データか何かかしらね
Access でやる範囲を超えてると思いますよ

2000万件もあると、Access で入力や変更してないでしょ?
データを出力するプログラムがあるなら、これを変更してしまうとか
データがファイルで有るなら、Access に入れずに
直接読み書きするプログラムを書いた方がいいですよ キット


623:NAME IS NULL
08/05/05 22:34:39
まずテーブルに[不一致]フィールドをYes/No型で追加して
インデックスを作成しておいて…

次のクエリを6000回繰り返す。
UPDATE テーブル名 SET [不一致]=True
WHERE ([不一致]=False) AND (条件nに該当しないもの)

※繰り返す際、条件nがなるべく厳しいものから実行する。
極端な話、1回目のクエリで2000万件が1件に絞られる可能性もある。


最後に[不一致]=Falseのレコードに対して必要な修正を行う。

※この方法なら40日はかからないはず…1~2日ジャマイカ?
と条件の内容も知らないオレが無責任に言ってみるw

624:616
08/05/06 04:39:22
>>621
ここまで時間が掛かるものだと思わなかったもので…

>>622
そうです。アクセスで入出力はしてません。フリーのデータ取得ソフトを使って、そのソフトがMDBで出力してます。
プログラミングはよく分からないので…

>>623
やや違う形ですが、参考にさせてもらって速度が上がりました。ありがとうございます。

まだ結構日にちが掛かりそうですけど、これでやってみます。皆さんありがとうございました。

625:NAME IS NULL
08/05/06 06:39:34
>>623 さんをちょっと変形するともうちょい速くなるんじゃないかな

WHERE の条件に、自作関数を指定出来るから
そこで複数条件を一度にチェックすれば
繰り返し回数(6000)を少なく出来る

こんな感じ 気が向いたらお試しを
WHERE ([不一致]=False) AND ((check_val([フィールド1],[フィールド2],[フィールド3]))=True)

Function check_val(fld1 As Variant, fld2 As Variant, fld3 As Variant) As Boolean

(fld1 = 1 And fld2 = 2 And fld3 = "OK") Then
check_val = True
Else
check_val = False
End If

End Function


626:616
08/05/06 09:38:29
>>623さんのでやったら3時間ちょいで処理がおわっちゃいました。
あっけなさ過ぎて笑ってしまった。616のでやったときは4日動かしても1/3の位置にあるレコードさえ更新されなかったのに。
最初のコードがいかに効率が悪かったかってことですね。ありがとうございました。

627:623
08/05/06 16:05:44
良かった、良かった。
Accessに限ったことではないけれど

・WHERE句で絞り込めるならWHERE句を使う
(→処理対象となるレコードを絞り込む)

・WHERE句で絞り込む場合はインデックスを持たせる
(→絞り込み速度が向上する)

というのが今回みたいに総レコード数が多い場合には
効果が現れやすいってことで。

628:NAME IS NULL
08/05/06 22:05:24 sxz7Jblq
失礼します。あほなアクセス初心者ですが、質問させてください。

別に入力した数字と5ケタの数字を組み合わせた識別番号を表示させていきたいのですが、
5ケタの数字はオートナンバーのような形式で自動的に表示させることはできないでしょうか。
そしてできれば別入力の数字ごとに、それぞれ番号が順番に出てくるようにしたいのです。
例えば、1件目に『28413』と入力したら『2841300001』、
2件目に『59647』と入力したら『5964700001』
3件目に『28413』と入力したら『2841300002』という感じです。

うまく説明できなくてすみません。


629:NAME IS NULL
08/05/06 22:09:00
できますよ

630:NAME IS NULL
08/05/06 22:19:53 sxz7Jblq
そういうのもできるんですね!
かなり難しそうな気もしますが、やり方を教えていただけないでしょうか。

631:NAME IS NULL
08/05/06 22:22:45
入力値でselectして件数数えたら良いんジャマイカ

632:NAME IS NULL
08/05/06 22:43:27
>>631

それだと削除されたりすると番号が重複するかもしれないよ。
この程度ならDmaxあたりでいいんじゃないか?
削除等により番号抜けが生じ、それが許せないというのなら
もう一工夫必要だが。

633:NAME IS NULL
08/05/06 23:16:19
>>という感じです。

てくらいだからいいんじゃね?

634:NAME IS NULL
08/05/06 23:29:34 sxz7Jblq
>631
>632
アドバイスありがとうございます。
だんだんわけわからなくなってきて、へこんでたのですが
やる気出てきました^^

635:NAME IS NULL
08/05/07 10:54:31
サブフォームに表示するレコードが無い場合のイベントを拾いたいのですが
どのようにしたらよいのでしょうか?

はじめはCurrentRecord=0で判断しようとしたのですが、
レコードが無い場合でも1になるときがあるようで、
うまいこと動作してくれません。

636:NAME IS NULL
08/05/07 16:50:46
>>635

開く時イベント辺りでrecordcount拾った見ては?
Dcountでもいいかもしれない。

637:NAME IS NULL
08/05/08 09:45:53
>>636
レスありがとうございます。

結局要所要所で、サブフォームのRecordSourceに突っ込んだ
SQLと同じものをRecordsetで開いてRecordCountみることで解決してましたが
全部Dcountで置き換えられそうです。

638:NAME IS NULL
08/05/09 00:52:19
.RecordCountの値は.MoveLastしないと信用できない。
でも最初から.EOFだった場合に.MoveLastするとエラーになる。

.RecordCountを気軽に紹介している入門書の類は多いけど
上記の点まできちんと言及してるものは見たことないな・・・

639:NAME IS NULL
08/05/09 10:39:25
>>638
信用できないってどういうこと?
接続先のDBの種類によってRecordCountが取得できないこともあるけど、
取得できるなら間違った数は返さないんじゃない?

640:NAME IS NULL
08/05/09 11:49:32
.RecordCountはカーソルまたはキーセットの状態によって
返す値が変わってくるはず。信用ならないってわけじゃないと思う。

これがわからないで結構悩んだことがある。

-----以下MSDNからコピペ
レコード数を算定できるかどうかには、Recordset オブジェクトのカーソルの種類が
関係します。RecordCount プロパティは、前方スクロール タイプのカーソルの場合
は -1 を返し、静的カーソルまたはキーセット カーソルの場合は実際の数を返し、
動的カーソルの場合はデータ ソースに応じて -1 または実際の数を返します。
------


641:NAME IS NULL
08/05/09 13:07:50
638ではないけれど、
本来ADOはデータソースの種類を意識することなく
同じコードで動作することを目標としてたはず。
その意味でRecordCountプロパティを使うことは避けた方が
望ましいと思うのだけれど。
少なくとも自分は積極的には使う気がしない。

642:NAME IS NULL
08/05/09 13:23:30
>>641
では、レコード数をカウントしたいときに代わりに何を使っているのでしょうか?
1レコードずつループしてカウント?

643:641
08/05/09 14:08:28
SELECT Count(主キー) FROM テーブル WHERE ~ で
素直にクエリ句を投げてます。

Recordsetの操作は、静的カーソルやキーセットより
前方スクロールの方が圧倒的に処理速度が速いので
もっぱら前方スクロールで開いているのも理由の1つ。
>>640にあるように.Recordcountが使えません。

ましてや.MoveLastメソッドなんかはレコード数が
多くなればなるほど遅くて使い物になりませんし・・・
DCountを使う手もあるのですが、DLookupのバグで
痛い目を見てからは使っていません。

644:NAME IS NULL
08/05/09 15:58:37
DLookupのバグって何?

645:641
08/05/09 17:34:25
Access2000だったと記憶していますが、DLookupで文字列フィールドを取得する際に
取得した文字列が途中で途切れてしまう症状があったのです。(再現性あり)

意外とMSが提供する関数にはこの手の見えない制約?バグ?があったりするので
油断ならんなぁ・・・という感じですよw

646:NAME IS NULL
08/05/12 16:35:37
ここって初心者が質問してもおk?

647:NAME IS NULL
08/05/12 18:21:16
>>646
別に問題はない。
言っておくが、参考本すら読んだことのないやつは
初心者とは言わない。

648:NAME IS NULL
08/05/12 20:47:57
エロ本すら読んだことのないやつは
童貞とは言わない。

649:NAME IS NULL
08/05/12 23:42:54
歴戦の勇士が昔の自分に答えてやっている感じがする

650:NAME IS NULL
08/05/13 00:40:50
そんなに変なこと書いたかなぁ。
話しが通じるだけの最低限の知識は
必要だと言いたかったのだが。

651:NAME IS NULL
08/05/13 13:37:53
レベルは低いが多少のエスパー能力ならあるから心配するな

652:NAME IS NULL
08/05/28 20:28:01
>>645
そうだね
リストの要素が65535個までだったりw
少なくとも自分は積極的には使う気がしない


653:NAME IS NULL
08/06/01 01:16:09
使ってみないと挙動が分からないのばかり

654:NAME IS NULL
08/06/01 08:08:42
Accessってスキルとして認められますか?

655:NAME IS NULL
08/06/01 10:01:17
認めざるを得ないスキルを見せつけてる

656:NAME IS NULL
08/06/01 10:19:18
認められると思うよ

657:NAME IS NULL
08/06/01 15:53:13
>>654
マジレスすると
「お前がACCESSで何が出来るか」
に掛かってるだろ。

658:NAME IS NULL
08/06/01 15:57:46
現場によるけどな。

659:NAME IS NULL
08/06/01 19:43:19
職場になにかとaccess使うやつ(上司)がいるが
わりと出来るやつということになってる
だが、嫌い俺は

勉強して抜いてやる


660:NAME IS NULL
08/06/01 22:20:39
部下が使えるようになり上司も喜ぶ事だろう
がんばりたまえ

661:NAME IS NULL
08/06/02 23:53:28
Access使える香具師よりもExcel使える香具師の方が価値が高いと思うこのごろ

662:NAME IS NULL
08/06/03 02:24:29
Excel使える香具師よりも日本語使える香具師の方が価値が高いと思うこのごろ

663:NAME IS NULL
08/06/03 20:19:37
Accessだけ使えるのも珍しいだろ

664:NAME IS NULL
08/06/03 20:25:57
Accessだけ使えるやつなんて信用しない。なぜならば本当に
Accessがどのようなものかを知っている人間はAccessを
使わないからだ!

665:NAME IS NULL
08/06/03 20:26:52
>>664
ワロタ

666:NAME IS NULL
08/06/03 22:33:06
なこと言っても、Excelとの親和性を考えたらAccess以上の物ないし

667:NAME IS NULL
08/06/04 10:54:47
Excelとの親和性なら桐のほうが高いと思うけどなあ?


668:NAME IS NULL
08/06/04 11:21:01 dxyYnNU/
>>667

わしも、そーおもう

669:NAME IS NULL
08/06/04 20:45:33
初歩の初歩を聞いてスマンコだけど、100万レコードとかって耐えられる?(個人的な使用だけど)


670:NAME IS NULL
08/06/04 21:04:24
個人的な使用なら糞遅くてもいいだろ。だから耐えられる。

671:NAME IS NULL
08/06/04 21:59:17
百万レコード単位になると、
一時テーブルを作った時とかに2ギガ制限に引っかかることがある。
あと大量データの時だけ発生するエラーが結構あった気がする。
でも気を遣えば大丈夫。

672:NAME IS NULL
08/06/04 22:10:51
全レコードに1メガの画像データ埋め込んだら100万どころか2000レコードでも限界だよ

673:NAME IS NULL
08/06/04 22:13:41
レコードに画像を埋め込むのってどういう用途なんだ?
想像できん…

674:NAME IS NULL
08/06/04 22:24:15
お手本中のお手本であるNorthWind.mdbからして
商品の写真をマスターテーブルに埋め込んでなかったっけ・・・?

675:669
08/06/04 23:04:51
レス、thxです。株価データを貯めこもうかと考えてる最中でして、そんなに増やそうとは思ってないんだけど、
年度単位とかに分けて作っておいた方が良いかな。


ま、ちょぼちょぼと作っていきますw

676:NAME IS NULL
08/06/04 23:07:14
年度単位じゃ株価データの意味ないと思うぞ
銘柄単位とかセクター単位とか

677:NAME IS NULL
08/06/04 23:17:41
株価データなら、MDBで600万件(700MBほど)管理してるけど、全然平気。
2GB超えるようなら、対策考えるけどね。





678:NAME IS NULL
08/06/04 23:48:17
対策って何よ

679:NAME IS NULL
08/06/05 05:48:29
MDBなら年度ごとにテーブル分けてても
リンクテーブルにしてUNIONかければ対応可能だろ

680:NAME IS NULL
08/06/06 09:57:39
UNIONかけたら2GB超えても大丈夫なん?

681:NAME IS NULL
08/06/06 10:12:16
>>680
ムリポ

682:NAME IS NULL
08/06/06 19:55:44
それぞれのmdbが2G超えなければ合計2G以上も行けるって事だべ

683:NAME IS NULL
08/06/06 19:59:34
2007でも2GB制限あるの?

684:NAME IS NULL
08/06/06 20:07:20
うん

685:NAME IS NULL
08/06/06 20:08:49
mdbじゃなくてtblだけどな

686:NAME IS NULL
08/06/06 20:11:05


687:NAME IS NULL
08/06/06 20:13:55
データベースの仕様
次の表は、Microsoft Office Access 2007 データベース特有の仕様の一覧です。

全般
属性 最大値
Access データベース (.accdb) ファイルのサイズ 2 GB からシステム オブジェクトに必要な領域のサイズを引いた値
データベースのオブジェクトの数 32,768
"HasModule/レコード保持" プロパティが [はい] に設定されたフォームおよびレポートを含むモジュールの数 1,000
オブジェクト名の文字数 64
パスワードの文字数 20
ユーザー名やグループ名の文字数 20
データベースを同時に使用できるユーザーの数 255

688:NAME IS NULL
08/06/09 16:45:27
public変数を使ったアプリの挙動がおかしかったので、調べてみたら

[VBA] Public 宣言された変数の有効期間
URLリンク(support.microsoft.com)

publicの意味ないじゃんw
これって使うなってことだよな

689:NAME IS NULL
08/06/09 17:32:47
消えてほしくないなら、ふつうSetProp使うのが常識だろ。
オブジェクト型とかは無理だけど。

690:NAME IS NULL
08/06/09 20:01:44
でもVBAじゃグローバル変数使わざるをえないケースが多々あるわけで

691:NAME IS NULL
08/06/09 20:27:01
解決方法にアクセスの場合の記載が無い w
どっかテーブルにでも保存すっか? ww

692:NAME IS NULL
08/06/09 20:58:44
本当に消えて困るのは、グローバル変数の代わりに標準モジュールにプロパティ作っとく。
プロパティの中で、退避しておいた値をGetPropやDLookupで復元する。
これVBAの基本テクニック(入門書に載ってるかどうかは知らない)。

ただ、KBに載ってるケース(エラートラップしないとか、動的にモジュール作成とか)に
該当してるなら、そういうことする必要性自体が自分にはピンと来ないな。
なんでそういう危ない橋を好んで渡るかね。

693:NAME IS NULL
08/06/09 21:39:04
2007でTempVarsが使える俺は勝ち組!

694:NAME IS NULL
08/06/09 21:42:58
漏れも漏れも、2007でTempVars使ってる勝ち組、変数スコープがマトモな桐も使ってる勝ち組

695:NAME IS NULL
08/06/10 00:53:30
人柱乙(-人-)

696:NAME IS NULL
08/06/10 08:44:13
>>691
おいらは不可視のテキストボックスつくって対応
配列とか対応できないけど、

697:NAME IS NULL
08/06/10 09:04:47
消えて困る変数はMDBにつっこんどけwww


698:NAME IS NULL
08/06/10 15:08:42 F+HVGTFM
ざっくりした質問ですいません

メインフォームの顧客IDとサブフォームの顧客IDでリレーション(1対1)してるのに
サブフォームが何枚も更新できるのってなぜでしょうか?
1IDに対し、サブフォームの情報は1枚しか必要ないのに、新しいフォームが
増えていくのが困ります。

699:NAME IS NULL
08/06/10 15:19:20
>>698
URLリンク(blogs.msdn.com)

700:NAME IS NULL
08/06/10 15:41:14 F+HVGTFM
>>699
すいません、読めません

701:NAME IS NULL
08/06/10 21:24:54
>>698
おまえの質問の意図が読めんわ

702:NAME IS NULL
08/06/11 10:43:46
>>692
ありがとう。
アクセスは使ってないけど勉強になりました。

703:NAME IS NULL
08/06/11 19:12:53
話題蒸し返しでごめん
Public変数の話

>モジュールの編集、プロジェクトの構造の変更、
>コンパイルエラーの発生、参照設定の変更、
>デザインモードへの切り替え、コントロールを削除して [元に戻す]
>を実行するなどのタイミングで変数が破棄される場合が

これはいいのよ
経験上なんとなくそうなんだろうなと思ってたことだから

たとえば編集不可のmdeで、ちゃんとエラートラップもされてて、見かけ問題なく
動いてても、実は持ってた変数放り出しちゃったりしてるの?

704:NAME IS NULL
08/06/11 20:45:43
そこは自分も知りたい気がする。
「なぜか消える」という話だけだと、どこまで追ったか分からないからなぁ。
ろくにデバッグすらせずに言ってるのか、技術情報のポイントは全部
つぶした上で、それでも未掲載の何かで再現するもんなのか。

705:NAME IS NULL
08/06/12 12:56:15
文法デバッグ済のmdeでも、実行時エラーでいくつかの変数スッ飛んだことがある
どっちにしろエラー起こして中の人からメッセージ出された場合は
変数巻き添えという頭があったんでさほど驚きもしなかったけど

そんな程度の話じゃないのかなあ、この変数が消える問題って

706:NAME IS NULL
08/06/13 07:42:05
仕様外の動作に依存したプログラムを作るのはまずいんじゃないの
動作がいつ変わっても文句言えないし

まあUpdateとかで仕様も変わっちゃう事あるけどさ

707:NAME IS NULL
08/06/13 18:41:10
アフォウ共、何言ってるんだ??

Static使わなければ、プロシージャの実行が終了すると値は破棄されるのは当たり前だ
Static ステートメント使えば良い話しだろ

708:NAME IS NULL
08/06/13 21:23:10
>>707
ネ申が現れたwww

709:NAME IS NULL
08/06/13 22:08:47
グローバル変数と静的変数って同じ物?
ちがうよね?
ネ申は死んだかな?


710:NAME IS NULL
08/06/13 22:10:37
>>709
おい、何をトンチンカン、おい、桐にしとけ

711:NAME IS NULL
08/06/13 23:16:51 DjzdsO75
>>709
バカ

712:NAME IS NULL
08/06/14 00:14:56
Staticw

713:NAME IS NULL
08/06/14 00:18:49
アッ、そうなんだ。桐はすでに使っているんでね。
グローバル変数を静的変数に変えればいいっていかにも乱暴な気がしたんだけど?
聞くは一時の恥。なにがバカなの?


714:NAME IS NULL
08/06/14 08:40:48
グローバル変数って何よ w
Public のこと?

715:NAME IS NULL
08/06/14 09:06:45
モジュールレベルのPublicをグローバルって言ってるんでないの

716:NAME IS NULL
08/06/14 09:36:32
失礼どうやらPublicとGlobalとを混同していたらしい。似て非なるものだった。
グローバル変数とは全プロシージャから参照できる変数のこと。
Global GB_System As String
ってな具合に使っているけどまずいのかな?使っているのはAcceess2000なんで廃止されたならゴメン。
あまり使わないほうが良いと言われる手法だけどこれを避けようとすると返って面倒なことになるので
必要最小限頭に"GB_"というのをつけて一目でグローバル変数だとわかるようにして使っている。
もっと複雑なプログラムなら問題があるのだろうけど、現在特に問題は感じてないんだけどなあ?


717:NAME IS NULL
08/06/14 10:02:37
VBAのPublicとGlobalは全く同じですが

718:NAME IS NULL
08/06/14 10:17:43
あっ、そうなんだ?
Globalはpublicの古い書き方なんだ。
なんせAccessは最初のバージョンから使っているから気がつかないでずっとGlobalを使っていた。
でもいままでGlobal変数が消えて困ったなんて経験は無いけどなあ?運がいいだけ?
まあ、勉強になった。ありがとう。


719:NAME IS NULL
08/06/14 10:18:21
>>715
モジュールレベルのPublicって何よ w

720:NAME IS NULL
08/06/14 10:20:34
Access2007開発者用ヘルプ "スコープ"

適用範囲 (スコープ)
プログラム内で、変数、プロシージャ、オブジェクトが有効である範囲。適用範囲は"変数、プロシージャ、オブジェクトが宣言された方法や場所によって決まります。
たとえば、変数が Public ステートメントで宣言されていて、モジュールに Option Private Module が記述されていないとき、すべてのモジュールのすべてのプロシージャがその変数の適用範囲となり、
その変数はそれらのプロシージャから参照できます。Option Private Module が有効な場合は、モジュール自体がプライベートとして宣言されているので、参照元のプロジェクトからは参照できません。
プロシージャの中で宣言された変数は、そのプロシージャの実行中だけ有効で、キーワード Static により静的変数として宣言されていない限り、プロシージャの実行が、終了すると値は破棄されます。


721:NAME IS NULL
08/06/14 10:23:37
>>719
言葉じり

722:NAME IS NULL
08/06/14 10:24:52
実際にPublicが破棄されるような状況でStaticが破棄されないってあるのか?

723:NAME IS NULL
08/06/14 10:35:40
Publicはメモリ確保が終了してるから、タマタマ残ってるって事、他が邪魔したら無くなる
Staticはメモリが確保されてる

724:NAME IS NULL
08/06/14 10:41:09
>他が邪魔したら無くなる
他とは?


725:NAME IS NULL
08/06/14 11:01:17
>>723
Publicが消えてStaticが残る状況を再現する手順を教えてください

726:NAME IS NULL
08/06/14 11:02:35
他のモジュールが偶然同じメモリ領域使っちゃったら無くなるんじゃね?

727:NAME IS NULL
08/06/14 11:06:09
>>726
いや、他のプロシージャでも偶然同じメモリ領域使っちゃったら無くなる

728:NAME IS NULL
08/06/14 11:06:52
するとPublic変数というのは運が良ければ使える変数ってこと?
さすがMS。すごい仕様だなあ?


729:NAME IS NULL
08/06/14 11:08:09
>>725
VBにはポインタの概念ないから偶然

730:NAME IS NULL
08/06/14 11:09:32
>>728
スコープの参照範囲から参照できるってこと
スコープの時間的範囲が終了すれば、確保されない

731:NAME IS NULL
08/06/14 11:09:41
モジュールがメモリからいなくなるときかな、削除したときとか?

732:NAME IS NULL
08/06/14 11:32:59
>>730
モジュールに Option Private Module が記述されていないときは
public変数は全プロシージャから使えるってことでいいんだよね?
ずっとそう思って使ってきたんだけどなんか不安になってきた。



733:NAME IS NULL
08/06/14 11:34:16
メモリ領域が使われたらどうのこうのって、
それなら値は初期化されずに不定になるって事にならないか?
そんな動作はしないだろ。

734:NAME IS NULL
08/06/14 11:42:18
>>733
Staticは定位置にメモリが確保されてる
Publicはメモリ確保が終了してるから、他が邪魔したら、動的に別位置に設定しなおして値が無くなるんでは?

735:NAME IS NULL
08/06/14 11:57:25
>>734
他の邪魔は許すが、他が邪魔したかどうかの監視(または判定)はしてるって事か?
えー

736:NAME IS NULL
08/06/14 12:52:52
まあ、監視つーか、アドレスが他で埋まっちゃってたら、別に確保するしかじゃね

737:NAME IS NULL
08/06/14 12:58:15
埋まったかどうかどうやって判断すんのさ

738:NAME IS NULL
08/06/14 13:02:53
そこらへんはVB内部ってことで
判断できなければ、他のモジュールが確保して実行中(確保され続ける)の変数も守れないだろ

739:NAME IS NULL
08/06/14 13:10:17
Static(静的)変数にくらべて、動的変数は一々解放しなくても、実行終わったら中身カラ(他でその領域使える)になるから便利ってことでないの?

740:NAME IS NULL
08/06/14 13:20:14
>>734 >>738
Public変数ですー
他から要求があったら今使ってる領域は譲るよー、
でも代わりに別の領域を確保して初期化するよー

ってことですか、わかりません><

741:NAME IS NULL
08/06/14 13:46:52 Sa3ZCVod
動的変数だからモジュールで使うたびにメモリ確保するんだろ
他で使ってたら別の場所にって事で

742:NAME IS NULL
08/06/14 14:10:32 Q6ctkHOb
富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ
富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ
富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ
富山DQN男の家族消えろ 富山DQN男の親消えろ 富山DQN男の子供消えろ 富山DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
死ぬとき このレスの事思い出してから地獄へ行けよ
ニヤ(・∀・)ニヤ(・∀・)


743:NAME IS NULL
08/06/14 14:48:26 hwIMB6Ac
うん、プロシージャで呼び出すたびにメモリ確保するのが正解っぽい。
だから =nothing とかしなくても良い。

744:NAME IS NULL
08/06/14 16:04:50
ソースはお前らの脳内

745:NAME IS NULL
08/06/14 16:32:02 hwIMB6Ac
呼ぶたびにメモリ確保するのはローカル変数

746:NAME IS NULL
08/06/14 16:42:40
もう面倒くさいの嫌だから桐にしとくよ。

747:NAME IS NULL
08/06/14 16:44:36
Publicが飛んだらStaticも飛ぶ。一緒。
トラップなしで実行時エラー起こしてみればすぐに
分かるようなことは、先に試せよ。
脳内妄想垂れ流してるのを見てると気の毒になるから。

748:NAME IS NULL
08/06/14 16:54:11
>>747
(田中 亨=テクニカルライター)
URLリンク(pc.nikkeibp.co.jp)
> しかし、モジュールレベル変数とパブリック変数は、静的変数のようにいつまでも値を保持するわけではありません。
> ユーザーの予期しないタイミングで値がクリアされることもあるのです。

749:NAME IS NULL
08/06/14 16:57:08 hwIMB6Ac
そりゃあ実行時エラーすれば何でも起こりうる罠 wwww

750:NAME IS NULL
08/06/14 17:10:59
結局MDBに変数を保存しておくのが無難か?
面倒だし若干スピードに影響しそうだけどしゃあない。



751:NAME IS NULL
08/06/14 17:18:18
初期化されてたら取得ってことにすればいいんじゃない

752:NAME IS NULL
08/06/14 17:42:07
いや、その初期化される前の値が欲しいんだが・・・

753:NAME IS NULL
08/06/14 17:49:37
変数に変更があるたびにmdbを更新すればいいことなんじゃないのか?


754:NAME IS NULL
08/06/14 19:13:44 hwIMB6Ac
staticで良いじゃん
他で使うときには、渡す先の引数で変数を渡す

755:NAME IS NULL
08/06/14 19:23:04
>>753
テーブルに、って意味ならそう言ってくれ
それとも別の方法か?

756:NAME IS NULL
08/06/14 19:33:22
>>748
ファンか本人?
自分で試せばすぐに分かるような記事を検証せずに鵜呑みにすると痛い目にあうよ。

>>749
ここまでのやりとり何も読んでないか理解できなかったんだなw
それでもstaticなら大丈夫と言い張るバカが居るからここにつながるんであって。

あれはスコープと寿命を用途に照らして使い分ける類のものであって、
エラープルーフでもなんでもない。
static信者が自爆するのは信教の自由なので止めないけれど、
初心者を巻き添えにしないように。

757:NAME IS NULL
08/06/14 19:45:42 JuOgoyv1
いきなりの質問ですいませんが、クエリを一度だけ更新する方法を教えて下さい。

758:NAME IS NULL
08/06/14 21:03:16
>>755
すまんそういう意味だ。


759:NAME IS NULL
08/06/14 21:22:29
>>757
意味が良くわからないが同じ更新を2回しないようにするってことか?
テーブルに更新したかどうかのフラグを立ててすでに更新済みのデータは更新からはずすとか?
見当違いならスマン。


760:NAME IS NULL
08/06/14 22:23:07 JuOgoyv1
>>759
ありがとうございます。やってみますね。

761:NAME IS NULL
08/06/14 22:45:45 e60rf0FN
>>756
なんかトンチンカンなこと書いてるよ
> エラープルーフでもなんでもない。
public変数が初期化されるのはエラーでも何でもないでしょ
正規の動作中だよ

762:NAME IS NULL
08/06/14 23:36:24 JuOgoyv1
>>759
何度もすいません。
フラグの立て方がわかりません。
時刻を10分更新するクエリです。

763:NAME IS NULL
08/06/15 00:50:46
死亡フラグでも立てとけ

764:NAME IS NULL
08/06/15 00:55:40
おれ、Accessの次のバージョンが出たら即買いの予定なんすよ

765:NAME IS NULL
08/06/15 05:47:33
時刻を10分更新するクエリ?
ますますなんのことかわからん。
とりあえず、時刻を10分進めるクエリーってことにしておこう。
フラグというのは文字通り旗のこと。つまりしるしをつけておくだけのこと。
ある条件のときにテーブルのあるカラムの値を10分進めるとする。
しかし、一度進めた値はもう二度と進めてもらっては困る。
ならばテーブルに更新したかどうかを記録するカラムを追加し、
初期値としてfalseを入れておく。
そして初期値がfalseならば更新するというケエリーを実行して
その時にそのカラムをtrueに更新しておけばOK?
そんなことをしてなんの意味があるのかわからないけど、
まあ、低級エスパーとしてはこれが限界だ(w


766:NAME IS NULL
08/06/15 19:14:18
で、なに
プロシージャの実行が終わったら変数はリセット?
フォームオープン時のイベントで
MyPbTax=テーブルに保存しておいた消費税率
とか読み込ませて
フォームが開き終えたらもう消費税はリセット?
めでてーな

767:NAME IS NULL
08/06/15 19:27:45
>>766
しょうがねえだろ、VBA の仕様に基づく制限だ。
文句あるなら、VBで開発して Shared変数使いな。

768:NAME IS NULL
08/06/15 21:59:08
仕様じゃしようがねえ。お後がよろしいようで・・・・・(お囃子)・・・・・(w


769:NAME IS NULL
08/06/15 23:08:05 iGx6pZh1
>>767
真に、おっしゃる通りです、素直に桐にします

770:NAME IS NULL
08/06/16 10:50:44
次期バージョンではVBAとVBSが統合されるヨッカーン。
まあ、スクリプトでも使ってろってこった。

771:NAME IS NULL
08/06/16 13:55:15
いつかはくるであろう、VBA切り捨てのX-dayに怯える日々がはじまるのでつね

772:NAME IS NULL
08/06/16 20:14:17
べつにVBSだろうがVBAだろうが同じだろうが。

773:NAME IS NULL
08/06/16 20:43:25
同じなのか??

774:NAME IS NULL
08/06/16 21:23:03
文法は同じ。
細かいこと言えば結構違う。

775:NAME IS NULL
08/06/16 21:42:39
そりゃあ、MSのBASICだから文法同じだろw

776:NAME IS NULL
08/06/16 22:36:13
VBは死にましぇん!

777:NAME IS NULL
08/06/17 10:18:38
VBSがForm使えりゃ無敵ng

778:NAME IS NULL
08/06/17 23:44:09 wipoekOe
詳しい人がいたら教えてください。
クライアントの環境で、ExcelのモジュールからAccessモジュール呼び、
Accessの結果(レコードセット)を受けて、その結果をExcelのシートに
貼るとこまでは出来ました。

アクセスのmdbファイルの場所を例えば(URLリンク(www.hoge.com)
として、Excelのモジュールからこのmdbにアクセスして、結果を受け取る
ということは出来ますか?

HTTP経由だからそれなりの実装をしないと無理ですか?

779:NAME IS NULL
08/06/18 02:22:58
まるごとダウンロードするしかあんめえ。

つうかサバ側でなんかしろよ

780:NAME IS NULL
08/06/20 22:08:39
出来ますよ

781:NAME IS NULL
08/06/21 07:13:06
>>778
> Excelのモジュールからこのmdbにアクセスして、結果を受け取る

もうちょっと具体的にやりたい事書けよ。
これじゃ、mdb中のテーブルに対してクエリ投げた結果を取得したいのか、
shellでaccess実行してmdb開きたいのか分からんだろう。
shell関数だって戻り値はあるし、「結果を受け取る」ってことも
出来るんだから。


782:NAME IS NULL
08/06/21 12:25:27
> クライアントの環境で、ExcelのモジュールからAccessモジュール呼び、
> Accessの結果(レコードセット)を受けて、その結果をExcelのシートに
> 貼るとこまでは出来ました。

Excel VBAからAccess VBAのFunctionを呼べるの?どうやるの?

783:782
08/06/21 12:50:32
試しにやってみたらGetObjectしてApplication.Runで簡単に出来たー。
そうかー、レコードセット返すFunctionとか呼べるんだー。勉強になった。

784:782
08/06/21 12:57:47
で、まあ、そうするとAccessで該当mdbを開かない事にはどうしようもない訳で、
やっぱり都度サーバからダウンロードして開くとかじゃないかな?

785:NAME IS NULL
08/06/23 17:57:32
先月ネット通販の仕事を辞めて、
次の仕事探す前に何かひとつスキルを身につけたいんだけど
Accessって武器になりますか?
前の仕事で、エクセルで数百件くらいのデータを関数を組み合わせて一気に編集するとか、
よくやってたから、Access使えたらもっと早く処理出来そうだなーと気になってました。
簡単なFLASHゲームとか考えるのは好きで、
SE系の専門学校出身だから普通の人よりは飲み込み早いと思うんだけど、
習得にどのくらい時間がかかるのかしら?

786:NAME IS NULL
08/06/23 18:13:39
>>785
慣れとかコツつかむには時間掛かるだろうけど、
一通りのことなら本見ながら1週間で余裕じゃね?


787:NAME IS NULL
08/06/23 18:15:19
1週間で余裕なことがスキルになるのかと小一時間

788:NAME IS NULL
08/06/23 19:38:01
Accessなんて前任者が残していったスパゲッティ状態のVBAと正規化もまともに
できてないような糞データベースをお守りできないと話しにならんぞ。

789:NAME IS NULL
08/06/23 20:38:17
そんなの作り直しちゃえよ

790:NAME IS NULL
08/06/23 22:52:54
前任者が辞めたとか異動したとかの理由であちこちの部署から
ウンコDBなんとかしてくれ系の依頼が後を絶たないお・・・

791:NAME IS NULL
08/06/24 01:45:08
ウンコエクセルはよく見るけど
ウンコDBってどんななんだ?DB化する時点で必然的に整理される気がするんだけど。

792:NAME IS NULL
08/06/24 05:45:44
>>791
たまにものすごいテーブル設計するやつもいるし、
クライアントから「このEXCELのシートの内容をそのまま使え」と
強制されて非正規化のままで作らされることはあるよ。


793:NAME IS NULL
08/06/24 08:29:21
桐にしたら良いお!
正規化してなくても不自由ないお!

794:NAME IS NULL
08/06/24 09:47:59
>>793
巣に帰れ!どあほ


795:NAME IS NULL
08/06/24 20:35:09
SELECT FROM.FROM FROM [FROM] とか
そんなSQLばっかり読まされる仕事はもういやだお・・・

796:NAME IS NULL
08/06/24 21:20:18
クエリビルダばっかり使ってinner joinとleft joinの違いがわからないで
必要な項目が欠落してるのに気がつかないとか、まじ視ねといいたい。
アクセスの仕事はこんなのばっか!

797:NAME IS NULL
08/06/25 14:44:52
とゆーかクエリビルダって使いにくいと思う

798:NAME IS NULL
08/06/25 15:25:12
>>797
でも、あれしか使えない輩も居る訳で。

個人的には「SQLで書けよ」と思う訳だが、
そのSQLも勝手に書き換えられたりして
気持ち悪い挙動を示すのがACCESS。



799:NAME IS NULL
08/06/26 22:23:07 IHeiKRfY
Access2007です。(XP)

Accessで、エクセルのVLOOKUPみたいなことはできますか?

商品名と商品コードの2列からなるテーブルを用意しておき、

別のテーブルで商品名を入力すると、隣のセルに商品コードが自動的に
出るようにしたいのですが、可能ですか?

エクセルなら、VLOOKUPで簡単にできるんですけどね。。。

800:NAME IS NULL
08/06/26 22:42:41
>>799
ACCESS総合相談所 その18 【桐にしとけ】
スレリンク(bsoft板)

801:NAME IS NULL
08/06/27 03:26:00
>>799
URLリンク(www.t3.rim.or.jp)
それと入門書くらい読んでから質問してくれ。


802:NAME IS NULL
08/06/27 18:25:50 zsJ8ZJes
工場内ラインの生産数管理をしたいと思っています。
サブフォームに「不良数」「処理方法」をもつ日報フォームを作成しましたが、
不良数0の日の日報フォームのサブフォームに「不良数」0のレコードを作らないと、
月度内で不良が無かった場合、月度管理用クエリでは
不良数合計のフィールドに表示するものがないため、その他の集計も表示できません。
よろしければ解決方法を教えてください。
意外と単純な事かと思いますが、私の頭では思いつきません…


803:NAME IS NULL
08/06/27 18:33:44
市販のソフトあたってみたら?

804:NAME IS NULL
08/06/27 20:30:51
>>802
リレーションを見直してみ。

ヒント: LEFT JOIN

805:NAME IS NULL
08/06/27 20:48:07
>>802
>>796

806:802
08/06/29 13:56:08 +zev6smp
返事遅くなりまして申し訳ありません。
LEFT JOINと言うものを検索した結果
悩んでいたものの通りのものがいくつかありました。
多分、SQLとかわかる人からすれば当たり前のことなんですね…。
もっと勉強します。ありがとうございました。

807:NAME IS NULL
08/06/30 20:11:07
SQL文の書き方なんて追々おぼえればいいからさ
まずはクエリでのテーブルどうしのくっつけかた考えろよ
結合線にマウスカーソルあてて右クリック、で、いろいろとさ

808:802
08/06/30 21:46:00 tW/mOprp
取りあえず、SQL表示にしてLEFT JOINに書き換え、
Nullには0を返すようにIIfIsNullで完成しました。
ただ>>807さんの言うテーブル同士のくっつけ方がよくわかりませんorz
フィールドとフィールドの間の線ですよね?カーソルあてて右クリックしても
フィールド内で右クリックしたときと同じものしかでてきません。


809:NAME IS NULL
08/07/01 08:51:39
>>808
>Nullには0を返すようにIIfIsNullで完成しました。

つ nz


810:NAME IS NULL
08/07/01 12:19:45
あてるのは先端
ぞくっと震えがくるぐらいギリギリ微妙な、先端

811:NAME IS NULL
08/07/01 23:29:26
DBMSによってNVLとかISNULLとかIFNULLとかNZとかコーアレス(スペル忘れた)とか
使い分けなきゃいけない仕事はもういやだお・・・

812:NAME IS NULL
08/07/02 05:54:44
>>811
Accessではどうしようもないだろwww


813:NAME IS NULL
08/07/02 19:53:35
>>811
NULL禁止にすればいい!

814:802
08/07/03 22:26:16 exZxl670
>>809
nzですか。知らなかったです。
IIfとIsNullを組み合わせて使おうと思いつくの一苦労だったのでなんか切ないです。
結合線の意味はやっと気付きました。リレーションシップの線のことですね。
たしかにあれを変えたらSQL上でLEFT JOINになりました。
なにやら恥をどんどん晒しているようで恥ずかしい限りですorz


815:NAME IS NULL
08/07/04 09:23:05
>>814
そうやってどんどん覚えていけばいいんじゃなーい?
なんか自分の数年前を見てるようだw
私も初めてnz知った時は同じようにうれしいような切ないような気持ちになったしw

816:NAME IS NULL
08/07/09 11:18:47
coalesceでいいような


817:NAME IS NULL
08/07/12 19:37:38 dbIMVOlA
>>806
SQLは時間見て勉強した方がいいと思うぞ。
#DB使いは誰でも通る道だからね

818:NAME IS NULL
08/07/12 20:32:17
>>814
Nzは返り値がVariant型だからね。
出した結果を再利用する時のことを考えて使うべき。




819:NAME IS NULL
08/07/13 01:10:27
というかNzの第2引数を省略するやつはうんこ

820:NAME IS NULL
08/07/13 09:10:08
なぜNzと呼ぶのでしょうか?

821:NAME IS NULL
08/07/13 09:15:55
>>820
Nurupo zettaidame


822:NAME IS NULL
08/07/19 21:44:08 PehLay74
>>814
お前に感心するよ。
俺だったら絶対関数あるはず、ってググッたり人に聞いたり(こっちが多かったりする)して
知識を分けてもらうことに努力しちゃうね。

お前はすばらしい努力家だよ。

でも会社は評価してくれないけどねww

823:NAME IS NULL
08/07/19 22:33:58
すごいカメだな
なんかイヤな事でもあったのか

824:NAME IS NULL
08/07/20 01:31:07
文脈からして、会社に評価してもらえなかったんだろう。
聞いてばかりじゃ、それも仕方がないな。

825:NAME IS NULL
08/07/20 06:45:34
なるほど
性格も悪そうだし、仕方がないね。


826:NAME IS NULL
08/07/20 14:58:58
自分で調べて得た知識とその取得方法は自分に帰ってくるからいいんじゃね?

827:NAME IS NULL
08/07/23 17:00:26 d9fcTHfR
Access2007+SQLサーバー2005 Express Edtionの評価を行っています。
(リンクテーブルではなく、プロジェクトを利用)
色々な壁にぶつかりつつ、少しずつ前進しているのですが、全般的に
情報が足りなくて困っております。
オススメのサイトか書籍をご存知でしたら、教えていただけませんか?

以下のサイトは、すごく参考になったのですが、これだけだと不十分
で色々探しております。

URLリンク(www.microsoft.com)
URLリンク(www.atmarkit.co.jp)

828:NAME IS NULL
08/07/25 14:41:42 5EfeWVVD
>>827への自己レスです。
以下のサイトがなかなか参考になりました。
他にもなんかよいものがありましたら、教えて下さい。
URLリンク(www.accessclub.net)
URLリンク(www.shoeisha.com)
URLリンク(www.microsoft.com)
URLリンク(support.microsoft.com)

MSのサイトって、結構充実しているのに、何ゆえ、外部の検索エンジンを
使わないと、必要な情報にたどり着けないんだろう。。。orz


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch