Access総合相談所 其の22

このエントリーをはてなブックマークに追加
1名無しさん@そうだ選挙にいこう
ACCESSに関する質問はこちらへ!

▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
  ・何がしたいのか
  ・どんな処理を試したか
  ・動作状況など駄目な理由
  テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
 範囲で詳しく書くと、早く回答が得られるかもしれません。
  図解があれば尚良し。
  聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
  大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
  ギブアンドテイクで情報を共有しましょう。
2名無しさん@そうだ選挙にいこう:2009/08/26(水) 23:59:53
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【 システム環境  . 】 Windows**, Access**
【 VBAが使えるか .】 はい・いいえ
【 VBAでの回答  】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード

前スレ
Access総合相談所 其の21 【桐にしとけ】
http://pc11.2ch.net/test/read.cgi/bsoft/1240392946/
3名無しさん@そうだ選挙にいこう:2009/08/27(木) 00:00:24
ACCESS2000総合相談所
http://pc.2ch.net/bsoft/kako/965/965614164.html
ACCESS総合相談所 その2
http://pc.2ch.net/bsoft/kako/1007/10079/1007987001.html
ACCESS総合相談所 その3
http://pc.2ch.net/bsoft/kako/1019/10190/1019087338.html
ACCESS総合相談所 その4
http://pc.2ch.net/bsoft/kako/1027/10274/1027491281.html
ACCESS総合相談所 その5
http://pc.2ch.net/bsoft/kako/1033/10331/1033182163.html
ACCESS総合相談所 その6
http://pc2.2ch.net/bsoft/kako/1037/10378/1037856185.html
ACCESS総合相談所 その7
http://pc2.2ch.net/bsoft/kako/1043/10439/1043996834.html
ACCESS総合相談所 その8(消息不明です)
http://pc2.2ch.net/bsoft/kako/1051/10516/1051630268.html
ACCESS総合相談所 その9(消息不明です)
http://pc2.2ch.net/test/read.cgi/bsoft/1061828549
ACCESS総合相談所 その10
http://pc5.2ch.net/test/read.cgi/bsoft/1075378966/
ACCESS総合相談所 その11
http://pc5.2ch.net/test/read.cgi/bsoft/1089812359/
ACCESS総合相談所 その12
http://pc8.2ch.net/test/read.cgi/bsoft/1106963038/
ACCESS総合相談所 その13 【桐にしとけ】
http://pc8.2ch.net/test/read.cgi/bsoft/1121055646/
ACCESS総合相談所 その14 【桐にしとけ】
http://pc8.2ch.net/test/read.cgi/bsoft/1128486351/
ACCESS総合相談所 その15
http://pc8.2ch.net/test/read.cgi/bsoft/1142586697/
ACCESS総合相談所 その16 【桐にしとけ】
http://pc11.2ch.net/test/read.cgi/bsoft/1157195290/
4名無しさん@そうだ選挙にいこう:2009/08/27(木) 00:01:17
ACCESS総合相談所 その17 【桐にしとけ】
http://pc11.2ch.net/test/read.cgi/bsoft/1175943813/
ACCESS総合相談所 その18 【桐にしとけ】
http://pc11.2ch.net/test/read.cgi/bsoft/1198885955/
Access総合相談所 其の19 【桐にしとけ】
http://pc11.2ch.net/test/read.cgi/bsoft/1216293538/

桐はこちら↓
管理工学研究所「桐」【4】
http://pc11.2ch.net/test/read.cgi/bsoft/1100708378/
5名無しさん@そうだ選挙にいこう:2009/08/27(木) 00:24:06
桐にしとけ
6名無しさん@そうだ選挙にいこう:2009/08/27(木) 00:24:48
桐について語るスレ 2 【サーバー未満 Excedl以上】
http://pc11.2ch.net/test/read.cgi/db/1250856196/
7名無しさん@そうだ選挙にいこう:2009/08/28(金) 22:43:14
FAQ
Q1) 桐って何ですか?
A1) このスレで質問されるような事が何でも簡単に出来ちゃう魔法のソフトです。開発期間も1/5で済みますが、アクセスより高価です。

エグゼクティブは桐でさっさと仕事済ませて、空いた時間はホテルのプールでリフレッシュします。
貧乏人はAccessで必死に頑張ります。
8名無しさん@そうだ選挙にいこう:2009/08/28(金) 22:49:23
>>7
Accessでさっさと仕事を済ませて、空いた時間はギターを引いてリフレッシュ
している俺は、じゃぁ、なんなんですか?

30歳で貯金は2千万円あります。今日の夕飯は、うまい輪一袋とミックスフルーツ100
です
9名無しさん@そうだ選挙にいこう:2009/08/28(金) 23:19:33
なかなか遣るなぁ
おれ30歳時点でその3倍、今じゃ毎晩レモンサワー飲んでる

スイスの銀行紹介してやろうか?
ジュリアスベアーとかピクテとか
10名無しさん@そうだ選挙にいこう:2009/08/28(金) 23:23:22
トンスル飲んで寝ろ。
11名無しさん@そうだ選挙にいこう:2009/08/29(土) 20:03:50
42歳で時給900円。
ヒロポンやって昼勤夜勤3連続中(ヒロポンは嘘)。
Access初心者、元桐講師(マジで)。
129:2009/08/29(土) 21:18:41
>>11
同い年
時給換算50万円
国(国税局)相手に行政訴訟(税金裁判)で本業そっちのけの此の頃
Accessも桐も趣味で弄ってる
そろそろアーリーリタイアメント、エーゲ―海にヨット浮かべて美女はべらせて過ごす予定(カリブ海行ったら黒人女ばっかりだった)
13名無しさん@そうだ選挙にいこう:2009/08/29(土) 21:38:39
>>12
ふーん。似たもの同士だね!
俺も現場じゃゴリマッチョばっかり。
14名無しさん@そうだ選挙にいこう:2009/08/29(土) 21:44:25
間違えた、時給換算5万だ
どうでも良いが、最近面白い事ない
15名無しさん@そうだ選挙にいこう:2009/08/30(日) 23:10:48
>>14
恥ずかしい間違いだな
16名無しさん@そうだ選挙にいこう:2009/08/31(月) 08:10:55
ひと月に1時間しか働いてないの?
17名無しさん@そうだ選挙にいこう:2009/08/31(月) 09:04:31
時給「換算」と書いてあるだろ。
30分だぉ。
18名無しさん@そうだ選挙にいこう:2009/08/31(月) 09:06:55
だいたい200時間/月 くらい働いてる、もう嫌だ
19名無しさん@そうだ選挙にいこう:2009/09/08(火) 10:03:47
pu
20名無しさん@そうだ選挙にいこう:2009/09/10(木) 00:10:18
クエリのデザインビューとかに出てくる[テーブルの表示]ダイアログボックスって、
幅変えられませんよね?
長い名前のクエリをたくさんつくっているのだが、表示される幅の文字が同じで
区別がつかん...orz
21名無しさん@そうだ選挙にいこう:2009/09/10(木) 00:51:40
>>20
つResizeEnable
2220:2009/09/10(木) 06:33:32
>>21
え、変更できるんですか?
ツール(T)→オプション(O)では、それらしい設定は見つかりませんが?
2320:2009/09/10(木) 21:05:54
>>21
フリーソフトだったんですね。ありがとうございますm(__)m
使えそうです。助かりました。
24名無しさん@そうだ選挙にいこう:2009/09/13(日) 05:59:09
今OpenOfficeBaseを使ってるんですがAccessもそのうち買おうと思ってます。
そこでBaseで作ったデータをAccessで引き継いで使う事が可能なのかどうか気になってるんですが、実際どうなんでしょう。
25名無しさん@そうだ選挙にいこう:2009/09/13(日) 12:15:53
>>24
OOOスレで聞いたほうが早いと思うが、俺なら過大な期待はしないよ。
テーブルをcsvにエクスポートして、Accessに文字化けなしでインポートできれば御の字。
26名無しさん@そうだ選挙にいこう:2009/09/13(日) 12:20:02
>>24
OpenOffice.org Baseなんて、データベースのまがい物は使わないほうがいい。
あんな出来損ない、フリーでも使いたくない代物だ。

最初から、Access, FileMaker, 桐にしておけ。

で、データベース格納場所は切り離しておき、できれば、MySQLかPostgreSQLを
使い、ODBC接続としておく。Access2007は最適化すると、データベースが消滅する
バグがあるから、注意が必要だ。

楽しい、データベースライフを!
2724:2009/09/13(日) 14:45:14
OOOスレで聞いてみました。

Baseはアクセスを完全に超えたらしいのでこれからもBaseを使い続けたいと思います
本当にありがとうございました。
28名無しさん@そうだ選挙にいこう:2009/09/13(日) 17:16:01
27は偽者です。

>>25-26
ありがとうございます。
うーん、出来るだけ早めに乗り換えた方がいいんですかね。
データベースソフトはBaseしか使った事がないので正直何がそんなに違うのかイマイチ理解してないんですが・・・。
29名無しさん@そうだ選挙にいこう:2009/09/13(日) 18:02:32
>>28
外部とのデータのやり取りにDAO,ADOが使えない(Base側から使うなら出来る)というのは聞いた事がある
(まぁあんまり使ったことないからわからんが)

一応ExcelからBaseに接続してる例はあったけど
ttp://user.services.openoffice.org/ja/forum/viewtopic.php?f=16&t=269
30名無しさん@そうだ選挙にいこう:2009/09/13(日) 18:05:34
あれっ、前スレ終わったん?
31名無しさん@そうだ選挙にいこう:2009/09/13(日) 20:17:40
【 システム環境  . 】 Windows?, Access2003
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否
会社のイントラネット内で使用するデータページを作っています。
データページはなんとか作成したのですが、使用する人たち(PCに詳しくない人たち)から
保存したときに何かわかるようにできないかと言われました。
普通のフォームではダイアログボックスを出すことができるようですが、
データページでも可能なのでしょうか?
データページについては書籍もネットもぜんぜん見つからず困っています。
できないとわかるだけでもありがたいです。
よろしくお願いします。
32名無しさん@そうだ選挙にいこう:2009/09/13(日) 20:42:38
宣伝提示版が新しくできましたーーー∈^0^∋ ご検討のほどよろしく御願いします
お役に立てる宣伝提示版に頑張りますので末永いご利用をお待ちしております
http://jbbs.livedoor.jp/movie/9151/
33名無しさん@そうだ選挙にいこう:2009/09/13(日) 21:14:50
開発はVisualStudio使えって
テーブル・クエリ・レポート・フォーム・モジュール
全部対応できるぜ
34名無しさん@そうだ選挙にいこう:2009/09/13(日) 21:23:01
>>33

あれ、AccessってVisualStudioによる開発できましたっけ?
VisualSourceSafeによるソール管理ならアドインで対応してますが・・・
よろしければ詳しいとこ教えてください!
35名無しさん@そうだ選挙にいこう:2009/09/13(日) 21:23:20
>>33
連結フォーム使えるの?
36名無しさん@そうだ選挙にいこう:2009/09/13(日) 22:36:52
>>33
http://msdn.microsoft.com/ja-jp/library/cc326064.aspx
参照して検討されてはどうでしょうか。それなりのスキルは必須と考えられます。
Web展開が必須ならば、Visual Web Developer 2008 Express Editionで開発もいいのでは?
3736:2009/09/13(日) 22:37:45
× >>33
>>31
38名無しさん@そうだ選挙にいこう:2009/09/14(月) 16:01:25
>>33
レポートについてはAccessを超えるツールはないと思う。
39名無しさん@そうだ選挙にいこう:2009/09/14(月) 16:08:02
桐にしとけ
401/2:2009/09/14(月) 19:36:54
よろしくお願いします。
access2000を使っています。

テーブルが二つあり、
T1にはフィールドが3つ、
[加算数]数字[仕事]テキスト[実行日]日付
[実行日]フィールドは空白です。

T2にはフィールドが2つ、
[仕事]テキスト[計画日]日付、とあります。

仕事をキーに、
[仕事][計画日][加算数][実行日]の選択クエリQ1を作成しました。

また、更新クエリQ2で、
[計画日]に入った日付に、[加算数]の数字を加算し、
実行日を入力させます。



412/2:2009/09/14(月) 19:38:09
T2には単数の[仕事]に対して複数の[計画日]の値があります。
例えば
[仕事][計画日]
掃除 9/12
掃除  9/13
掃除  9/20

この状態で更新クエリQ2を実行すると、
Q1には
[仕事][計画日][加算数][実行日]
掃除 9/12   1    9/27
掃除 9/13   2    9/27
掃除 9/20   7    9/27

となってしまいます。
原因はキー設定がうまく出来ていない点かと
自分では考えておりますが、
実行日をうまく表示させるにはどうすれば良いのでしょうか。
長文で失礼いたしますが、
どうかよろしくお願いします。。
42名無しさん@そうだ選挙にいこう:2009/09/14(月) 20:03:56
>>40
実行日って必要なのか? 計画日と加算数があれば加算で出てしまうじゃないか。
43名無しさん@そうだ選挙にいこう:2009/09/14(月) 20:14:57
>>42
実際は扱うデータが異なるもので、内容までは申し上げられませんが、
必要です。。


私も加算で出てしまうと思っていたのですが、
日付のみが異なる、このケースでいうと毎週行うような仕事があった際に、

UPDATE Q1 SET Q1.実行日 = Q1.加算数 + Q1.計画日;

これだと、最終日のみが認識されてしまい、
同じ仕事で日付が違う他のレコードの値まで最終日の値になってしまいます。



44名無しさん@そうだ選挙にいこう:2009/09/14(月) 20:28:46
>>43
仕事 計画日 加算数 実行日
掃除 09/12 1 2009/09/13
掃除 09/13 2 2009/09/15
掃除 09/20 7 2009/09/27

ってなればいいんだろ? とりあえず例でいうとテーブルは1つでいい。
T1(仕事、計画日、加算数)
主キーが必要なら、仕事と計画日の複合キーでいいじゃないか。
45名無しさん@そうだ選挙にいこう:2009/09/14(月) 20:39:01
select t1.仕事, t2,計画日, t1.加算数, t2,計画日 + t1.加算数 AS 実行日
from t1 iner join t2 on t1.仕事 = t2.仕事
じゃ駄目?
46名無しさん@そうだ選挙にいこう:2009/09/14(月) 20:42:01
ちょいと例を作ってきます。
しばしお時間を・・

あとテーブルは、諸事情でどうしても分けねばならんのです・・。申し訳ない
47名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:02:44
お待たせしました。まだいてくれてたらいいんですが・・
実行前
http://2sen.dip.jp/cgi-bin/upgun/up1/source/up32390.jpg
実行後
http://2sen.dip.jp/cgi-bin/upgun/up1/source/up32391.jpg

実行後の実行日が2009/09/15で3レコード共統一されてしまっているかと思うのですが、
これを
2009/09/23
2009/09/18
2009/09/16
となれば望む所です。

>>45
ちと試してきます
48名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:07:11
dbより隠れている壁紙が気になる件
49名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:13:04
>>45
出来ました・・・。選択クエリで作れるんですね・・・・
ありがとうございます。初歩的な質問を長々とすいません。。

後学のために別解ございましたら、是非お願いします。
スレ違いだと感じられたら放置でお願いします

みなさんほんとありがとうございました。
精進します。


あ、これhttp://2sen.dip.jp/cgi-bin/upgun/up1/source/up32399.jpg
50名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:16:04
>>47
テーブル構造が糞すぎ。
第三正規化あたりから勉強しなおしてきてくれ。
51名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:24:05
やりたいことはなんとなくわかった。

仕事 加算数
掃除 1
洗濯 2
料理 6

これって固定なの?
52名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:32:42
ん。不固定ですが・・
53名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:51:42
31です。36さんありがとうございます。
明日会社でじっくり読んでみます!
54名無しさん@そうだ選挙にいこう:2009/09/14(月) 21:53:45
>>49
T2で同一の仕事が複数ある場合(今回は掃除だけど)、どういう規則で1つを選ぶの?
計画日が最小でいいの? だとしたら、グループ化でQ1ひとつで行けそうなのだが。
5545:2009/09/14(月) 22:55:44
加算数と仕事はgroup byしたほうがいい気がするなぁ・・>>45
subクエリかけたら
t1 を(select 仕事,加算数 from t1 group by 仕事,加算数) tp に変更
#Access単体はあまり触ってないから、忘れちゃったよw
#それにしても、なんか違和感かんじるんだけどね

56名無しさん@そうだ選挙にいこう:2009/09/14(月) 23:06:03
>>55
たぶんみんな違和感があると思うよ。
逆にどういう目的でDBを構築しようとしているか、ずばり言ったほうが早いかもね。
部分的な目的じゃなくて、スケジュール管理とか人材管理とかの最終的目的。
じつはExcel向きの仕事ではと思っている。
57名無しさん@そうだ選挙にいこう:2009/09/15(火) 02:03:52
その壁紙は予想の斜め上行ってた。GJ
58名無しさん@そうだ選挙にいこう:2009/09/15(火) 03:31:57
すみません、すごい基本的な話で申し訳ないんですが
追加クエリと削除クエリって どうやって作るんですか?
59名無しさん@そうだ選挙にいこう:2009/09/15(火) 09:14:19
>>58
クエリの画面開いて クエリ(Q)のメニューに無い?
60名無しさん@そうだ選挙にいこう:2009/09/15(火) 10:55:36
>>58
まずその条件で選択クエリを作る。それを追加クエリまたは削除クエリに変更できるよ。
61名無しさん@そうだ選挙にいこう:2009/09/15(火) 16:43:34
Access2007のAccessのオプションをVBAからいじれませんか?
具体的に言うと、「ウィンドウを重ねて表示」と「タブ付きドキュメント」を切り換えたいと思います。
62名無しさん@そうだ選挙にいこう:2009/09/15(火) 23:19:58
>>29
遅くなりましたがありがとうございます。
まぁやっぱりBaseじゃAccessに比べれば出来る事が限られてるんでしょうね・・・。
63名無しさん@そうだ選挙にいこう:2009/09/16(水) 01:16:45
58です

基本的なことを聞いてどうも済みませんでした
64名無しさん@そうだ選挙にいこう:2009/09/16(水) 09:09:46
>>62
SQL Server 2008 Express でもいいんじゃね?
#資料も多いと思うし、立ち上げすぎればそう変わらん気がする
#AccessのSQLの癖は、ちょっと変だし(2000までしか使ったことがないけど)
65名無しさん@そうだ選挙にいこう:2009/09/16(水) 09:12:44
あDBとしてはってとこね。
単体でアプリ作れるとか、レポート等はもちろん評価してます
#自分の場合はExcel出力で、後は好きに出力して が多いから
66名無しさん@そうだ選挙にいこう:2009/09/16(水) 21:20:37
お願いします。
access2000を使っています。

既存のエクセルファイルがあり、
シートの最上部数行に文章、
同じシートの最下部数行にも文章があり、
真ん中に数列で数行のデータ群があります。
発注書や納品書をエクセルで送付するイメージです。

このエクセルシートに、
テーブルまたはクエリで編集してきたデータをエクスポートすることは出来ますでしょうか。

67名無しさん@そうだ選挙にいこう:2009/09/16(水) 21:25:08
>>66
できるけど、Excel使うんだったらExcelのほうで
ADOなり使ってクエリを呼び出したほうが早くないか?
68名無しさん@そうだ選挙にいこう:2009/09/16(水) 21:36:20
上司のご依頼です・・・・
検索ボタン1個で送り先まとめて、
その下にある出力ボタンで送付できるようちょいちょいっとまとめて!
だそうです。

エクセルからのアプローチのが早いんですね・・
とりあえずは出来るのであればアクセスでやってみます
69名無しさん@そうだ選挙にいこう:2009/09/17(木) 07:29:21
>>68
俺の場合、同じようなレポート形式で、データをまとめて、送り先フラグのついた
ものをベースにクエリって、個別PDF出力、連続メール送信をボタン一つでちょい
ちょいってやってます。

パスワードは乱数をつかって自動生成しています。
70名無しさん@そうだ選挙にいこう:2009/09/17(木) 10:26:46
AccessからVBAでExcelたたいてもいいんじゃね?
#普通にやる処理だと思うよ
71名無しさん@そうだ選挙にいこう:2009/09/17(木) 20:51:28
1回こっきりならともかく、長期運用を考えるとOLEオートメーションは鬼門
72名無しさん@そうだ選挙にいこう:2009/09/17(木) 22:01:36
>>71
なるったけ、内部だけで完結したいと思う俺であった。

BASP21みたいなDLLはOKって考えだけれど
73名無しさん@そうだ選挙にいこう:2009/09/17(木) 22:28:20
>>72
できるだけAccessで完結させたいね。どうしてもExcelを使う必要があるなら、
俺もExcel側にプログラムを実装しちゃうな。
LAN環境で違うPCからも接続できるし、フォルダー移動も自由自在、
ほかの人が気に入って自分も使いたいとか言われても
Excelのコピーを渡すだけで、Access側のプログラムをいじる必要がないもの。
74禿げあたま:2009/09/21(月) 17:19:43
【 システム環境  . 】 Windows XP SP3, Access 2007
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否

田舎のちっぽけなレンタカー屋で働いています。事務処理は今でも手書き伝票切ったりしているので、いい加減社長が切れてわたしがAccessを使ってシステムを作ることになりました。

ここで質問させて頂きたいことは、車輌の貸出期間の算出方法です。

VBAが全くわからないため、DateDiffという関数を使うのであろうというところまでは検索でたどり着けたのですが、それをどのように使うのかがよくわからなくて困っています。


75禿げあたま:2009/09/21(月) 17:20:33
長すぎて一気に書き込めませんでした、上の続きです

入力フォームに「貸出日」「貸出時間」「返却日」「返却時間」の4つを設けてそこから貸し出しに要した日時を出したいと思っています。例えば、「2009/9/15 16:10」 から「 2009/9/20 12:00」まで貸し出したとします。

経過時間は「4日と19時間50分」ですが、レンタカーの貸出料金は1日単位ですので、余った時間が10時間経過していたら1日とみなして繰り上げるようにしたいのです。

つまりこの例での余った時間「19時間50分」は1日とみなされ、経過時間は「5日」ということで5日分のレンタル料金を算出という流れになります。

入力フォームにつきましては別に「貸出日」と「貸出時間」を分けることに特にこだわっていません。「貸し出し日時」として一つに出来るのであればその方がいいと思っています。初心者で2chに書き込むことすら初めてというものですが宜しくお願い致します。
76名無しさん@そうだ選挙にいこう:2009/09/21(月) 17:53:07
>>74
int((datediff("h",#2009/9/15 16:10#,#2009/9/20 12:00#)+14)/24)

これでどうだゲーハー
77名無しさん@そうだ選挙にいこう:2009/09/21(月) 17:59:43
>>74
int((datediff("n",#2009/9/15 16:10#,#2009/9/20 12:00#)+60*14)/(60*24))

こっちかも知れんゲーハー
78禿へ:2009/09/21(月) 19:01:13
>>74
テーブル:貸出管理
ID:オートナンバー型
貸出ID:数値型
貸出日:日付/時刻型
貸出時間:日付/時刻型
返却日:日付/時刻型
返却時間:日付/時刻型
とすると...

SELECT t1.貸出日, t1.貸出時間, t1.返却日, t1.返却時間, IIf([返却時間]>([貸出時間]+#10:00:00#),[返却日]+1,[返却日]) AS 精算返却日,datediff("d",貸出日,精算返却日)+1 AS 貸出日数
FROM 貸出管理 AS t1;
79名無しさん@そうだ選挙にいこう:2009/09/21(月) 20:30:24
>>74
値を丸める方法の1つして四捨五入がありますが、例えば小数点以下四捨五入の場合…
[元の値]に[0.5]を加えた後、小数点以下を切り捨てれば実現できます。
つまり、今回の場合は[返却日時]に[14時間]を加えた後で処理をすればOKですね。(>>77

なお、日付と時刻を別々のフィールドにするのは何かとトラブルの元になりますので
貸出日時,返却日時のようにまとめるのが良いでしょう。
80名無しさん@そうだ選挙にいこう:2009/09/21(月) 21:07:24
>>79
>何かとトラブルの元に
どういうことですか?詳しく教えてください。
81名無しさん@そうだ選挙にいこう:2009/09/21(月) 22:34:27
Access 2003 でフォームに
日付と時間をコピペで貼り付けているのですが、

元の日付の表示が MM/DD/YY HH:MM:SS という形式で
毎回/YYを削除して MM/DD HH:MM:SSの前にYY/を付けています。

MM/DD/YY HH:MM:SS を貼り付けた瞬間自動で
YY/MM/DD HH:MM:SS に変換できるような方法はないでしょうか。
82禿げあたま:2009/09/21(月) 22:39:03
どうも、ゲーハーです。
みなさんレスありがとうございます!
難しいので禿あたまをなでくり回しながら考えているのですがよくわかりません。

>>77
どこに入力するのかわからなかったけど、規定値の所に入れてみたら動いたようです
とりあえずスクリーンショット撮ってみました
ttp://imagepot.net/view/125353979273.gif

>>78
試してみたのですが、エラーになりました。
テーブルのスクリーンショットです。
ttp://imagepot.net/view/125353979460.gif

もしかしてですが、わたしは時間を入力するのにルックアップウィザードを使って、10分刻みにリストボックスから選択できるようにしています。
日付・時刻型になっていないとか言う理由で、エラーになるのかな?

ちなみにクエリで漬かったSQL文は以下のものです。

SELECT 受注管理.[貸渡日], 受注管理.[貸渡時間], 受注管理.[返却日], 受注管理.[返却時間], IIf([返却時間]>([貸渡時間]+#12/30/1899 10:0:0#),[返却日]+1,[返却日]) AS 精算返却日, datediff("d",貸渡日,精算返却日)+1 AS 貸出日数
FROM 受注管理;

その他のレスも読ませて頂きました、よくわからなかったけどみなさんありがとうございます!
83名無しさん@そうだ選挙にいこう:2009/09/21(月) 22:52:47
>>82
情報後出しのいい例か
84名無しさん@そうだ選挙にいこう:2009/09/21(月) 23:25:01
すいません。
今、テーブルにあるAというテーブルとBというテーブルのなかの
会社名の抽出をしたいのですけど、例えば、Aの○○会社とBの○○会社 ほにゃらら支店みたく
なってるものがデザインビューで抜けません。
Aの列は抜き出したいキーワードが1000種類あり、Bの列は抜かれたい列があります。
完全一致でなくていいのですが、抽出条件になんといれればよいのでしょうか?
詳しい方、どうか教えて下さい。
85名無しさん@そうだ選挙にいこう:2009/09/21(月) 23:31:44
>>81
前提がわからんので手順のみ
・コピペする時点では、テキストボックスの書式は
mm/dd/yy hh:nn:ss
コピペ後、つまりテキストボックス更新後にでも、
書式をyy/mm/dd hh:nn:ssに変更すればよかろうぞ
86名無しさん@そうだ選挙にいこう:2009/09/21(月) 23:38:04
>>81
更新後処理でもよければ

Dim Y_Buf As String
Dim M_Buf As String
Dim D_Buf As String
Dim T_Buf As String

If Not IsNull(Me!テキスト0) Then
Y_Buf = Mid(Me!テキスト0, 7, 2)
M_Buf = Left(Me!テキスト0, 2)
D_Buf = Mid(Me!テキスト0, 4, 2)
T_Buf = Right(Me!テキスト0, 8)

Me!テキスト0 = Y_Buf & "/" & M_Buf & "/" & D_Buf & " " & T_Buf
End If

とでもすれば。まったく応用が利かないけど。
8786:2009/09/21(月) 23:39:50
訂正
×応用が利かないけど
○融通が利かないけど
88禿げあたま:2009/09/21(月) 23:59:46
>>83
後出し部分があったみたいで、すいませんでした。

「貸渡時間」「返却時間」のフィールドを日付・時刻型に変えると78のやり方で出来ました!ありがとうござました。

ルックアップ形式でリストボックスから選択した時間を、計算式の中で使うのは無理なのでしょうか?
時間の入力が楽なので出来ればこの形式で使ってみたいと思っているのですが。
89名無しさん@そうだ選挙にいこう:2009/09/22(火) 00:02:34
>>85
> 前提がわからんので手順のみ
サーバーから取得したログのファイルを
DBに登録しています。
そのログの時間表記が先程の形式です。
で、おっしゃった書式の変更は以前試しましたが、
うまくいきませんでした。
というのは年と月の判断をアクセスはできないからでは
と思うのですが。

>>86
何かできそうな気がします。
文字列に置き換えて、位置を指定している
というイメージで宜しいでしょうか。

ひとまず、お二方有り難うございました。
90>>78:2009/09/22(火) 00:30:42
>>88
ルックアップ形式ってのがいまいちわからんけど
そのリストボックスの値集合ソースをテーブルか
クエリにするってことならたぶんできそうな。
91名無しさん@そうだ選挙にいこう:2009/09/22(火) 00:41:47
>>88
83じゃないけど
日付時刻型は日付のみ入力しても時間部分に
AM12:00が勝手に入力されたような(時間だけ入力だと日付部分には0が入るから大丈夫かと)

上のクエリだと問題なさそうだが貸渡日、返却日とNow関数なんかの
比較が必要なったときに予想外の結果が返るかも
92名無しさん@そうだ選挙にいこう:2009/09/22(火) 00:51:26
>>84
外部結合とLike使えばできそうだが、たぶんクエリのデザインビューでは表現できない。
どっかで勉強してきて。

>>89
ログがyyyyなら書式変更でよいが、yyだとあかんね
93禿げあたま:2009/09/22(火) 00:57:31
>>90

> そのリストボックスの値集合ソースをテーブルか
> クエリにするってことならたぶんできそうな。

時間を選択するリストを別テーブルにしてみたら出来ました!

>>91
日付は特に問題ないようです。
クリックするとカレンダーが出て日付を選ぶだけですので。

今日は普段使わない頭を使いすぎて眠くなってきたのでもう寝ます。
いろいろ皆さんありがとうございました!
94名無しさん@そうだ選挙にいこう:2009/09/22(火) 01:05:38
>>85
何のかわからんけどそもそもlogの形式を変えれば済むんじゃないの?win鯖は解らんけど、LinuxやFreeBSDなら簡単だよね。
9581:2009/09/22(火) 01:26:11
>>92
そうなんですよ。

一つのシステムは年/月/日と吐き出されるんですが、
一方は月/日/年で・・・。
仕様変更は別会社へ頼まないといけないらしくお金も掛かるので
Accessをいじって対応できれば良いなと思ったわけです。

今月は月も年も09なんでそのままでもできるのですが、
今月以外や日が12を超えるとおかしくなるので。
96名無しさん@そうだ選挙にいこう:2009/09/22(火) 01:57:10
>>80
>>91
91さん、補足ありがとう。
97名無しさん@そうだ選挙にいこう:2009/09/22(火) 06:09:20
>>81
こんなんでよかったら

テーブル:log保存
id:オートナンバー型
log:テキスト型

と、仮定して

クエリ:log加工
SELECT t1.log AS 加工前log, Mid(t1.log,7,2) & "/" & Mid(t1.log,1,5) & Mid(t1.log,9,10) AS 加工後log
FROM log保存 AS t1;

コピーしたlogをクエリの[加工前log]フィールドに貼り付ければ
[加工後log]に出力されると思うんだが...

フォームとの関連部分は詳細が判らんから省いた。ごめん。
98禿げあたま:2009/09/23(水) 00:18:52
お世話になっております
先日のやり方>>88ではエラー無く表示はできるようになったのですが
結果が違ったものが表示されるので
>>77で教えて頂いたやり方でやってみようと思うのですが、#〜#の間に貸渡日などの値を入れるとエラーになります。
どのように記述すればよいのでしょうか?

実際には以下のように使用したいです

int((datediff("n",#2009/9/15 16:10#,#2009/9/20 12:00#)+60*14)/(60*24))
     ↓
int((datediff("n",#貸渡日 貸渡時間#,#返却日 返却時間#)+60*14)/(60*24))
99名無しさん@そうだ選挙にいこう:2009/09/23(水) 01:23:47
>>98
試してないけど
int((datediff("n",(DateValue(貸渡日)+TimeValue(貸渡時間)),(DateValue(返却日)+TimeValue(返却時間)))+60*14)/(60*24))
でどう?
100名無しさん@そうだ選挙にいこう:2009/09/23(水) 01:55:07
>>98
貸渡時間と返却時間の書式を 時刻(S) 入力チェックを はい
貸出合計期間のコントロールソースには、
=int((datediff("n",[貸渡日]+[貸渡時間],[返却日]+[返却時間])+60*14)/(60*24))
#や[]で括ってる件については、Accessヘルプの「式」の項目でも読んでくれ

貸渡日と返却日の定型入力をウイザードから日付っぽいのを設定しておけば問題なかろう
受託管理テーブルについても日付時刻に関するフィールドのデータ型は、日付/時刻型に
合わせる。
テーブル側を先にすべて設定しとけばフォーム作成時自動的にやってくれるけどな。

夜更かしは抜け毛の原因だぜゲーハー
101名無しさん@そうだ選挙にいこう:2009/09/23(水) 02:38:41
>>82のSS見ながらの前レスであったが、

車両マスタテーブルと車両稼働を表すテーブルがあれば業務管理っぽいことができそう
な気がするぜ。まぁがんばれゲーハー。

飲みすぎた、寝る
102禿げあたま:2009/09/23(水) 08:35:47
お世話になっております。
ありがとうございます。朝起きて早速みなさんのレスを試させて頂きました。

>>99
エラーが出てしまいました

>>100
出来ました!時間もリストボックスから選ぶのではなく手入力に変えました。
抜け毛が気になるのは最初のうちだけですよ(^^)/

>>101
車輌マスタと車輌稼働テーブルで業務管理とかいいですねー。
実際にはお客様にレンタカーの予約を受けて、日付と車輌タイプを入力したら空いている車の一覧とそれぞれの料金(借りる日付によって個々に変動)の表示とか、できるようにしたいです。

最初は嫌々やらされている感じだったのですが、触っているうちに段々面白くなってきました。なんとか業務管理システムを作れるようになるまで頑張りたいと思います!
103>>78:2009/09/23(水) 09:43:04
>>102
うまくいっている様だが...
長文失礼

テーブル:[車両管理]
車ID:数値型(主キー)
車名:テキスト型
ナンバー:テキスト型
車種ID:数値型

車ID 車名 ナンバー 車種ID
1 ワゴンR あ0005677 1
2 ムーブ い0001234 1
3 ビッツ う0001111 2

テーブル:[車種管理]
車種ID:数値型(主キー)
車種名:テキスト型
料金:数値型

車種ID 車種名 料金
1 軽自動車 5000
2 小型車 8000
104>>78:2009/09/23(水) 09:44:02
>>103のつづき
>>102
テーブル:[貸出管理]
ID:オートナンバー型
車ID:数値型
貸渡日:日付/時刻型
貸渡時間:日付/時刻型
返却日:日付/時刻型
返却時刻:日付/時刻型

ID 車ID 貸渡日 貸渡時間 返却日 返却時間
1 1 2009/09/15 16:10:00 2009/09/20 12:00:00
2 2 2009/09/21 9:00:00 2009/09/21 12:00:00
3 1 2009/09/21 8:00:00 2009/09/23 19:00:00
4 3 2009/09/21 8:00:00 2009/09/22 18:00:00
5 3 2009/09/22 8:00:00 2009/09/23 8:00:00
105>>78:2009/09/23(水) 09:45:59
>>104のつづき
>>102
クエリ:[貸出料金]
SELECT t1.ID, t1.車ID, t2.車名, t3.車種名,
t1.貸渡日, t1.貸渡時間, t1.返却日, t1.返却時間,
IIf([返却時間]<([貸渡時間]+#12/30/1899 10:0:0#),[返却日],[返却日]+1) AS 精算返却日,
int((datediff("n",[貸渡日]+[貸渡時間],[返却日]+[返却時間])+60*14)/(60*24)) AS 貸出合計期間1,
[貸出合計期間1]*[料金] AS 請求金額1,
IIf(DateDiff("d",[貸渡日],[精算返却日])=0,1,DateDiff("d",[貸渡日],[精算返却日])) AS 貸出合計期間2,
[貸出合計期間2]*[料金] AS 請求金額2
FROM (車両管理 AS t2 INNER JOIN 貸出管理 AS t1 ON t2.車ID=t1.車ID)
INNER JOIN 車種管理 AS t3 ON t2.車種ID=t3.車種ID;

貸出合計期間1の方は、当日で10時間以内だと貸出合計期間が0になってしまっているが...
貸出合計期間2の方は、以前>>78で掲示したやつの改良版(すまん)
106禿げあたま:2009/09/23(水) 13:01:26
>>103,104,105

ありがとうございます!
すぐにお返事できなくて申し訳ないです。時間取れたらすぐにでも試してみたいのですが、今日はちょっとばたばたしてまして......

>貸出合計期間1の方は、当日で10時間以内だと貸出合計期間が0になってしまっているが...

当初、ACCESSでどこまで出来るかも知らずに、とりあえず困った箇所だけを投稿させて頂きましたので、一日以下の料金のことは考えていませんでした。申し訳ありません。

時間が出来たら試してまた結果報告させて頂きたいと思います。
107名無しさん@そうだ選挙にいこう:2009/09/23(水) 13:59:28
困った個所だけって認識あるから、別にいいのだけれども、
4時間/半日/7日間/1ヶ月/時間延長料金が出てきてみんなで軽くズッコケもありだと思う
108>>78:2009/09/23(水) 22:39:26
とりあえず
4時間/半日/7日間/1ヶ月/時間延長料金が出てきても対応できるんだが
結局、設定する側のフォーマットが決まらなければなんともできね。
109名無しさん@そうだ選挙にいこう:2009/09/23(水) 23:01:03
レポートを印刷するときにバーチャル印刷ソフト、例えばdocuworksとかアクロバットにフォーカスがわたるんだけど、その後に手動でAccessにフォーカスを戻すのが面倒です。
レポートの印刷の後にAccessにフォーカスを戻すコードってどう書くのでしょうか?
110名無しさん@そうだ選挙にいこう:2009/09/23(水) 23:01:50
お願いします。
access2000を使っております。

あるマスタクエリがあり、そのマスタクエリの中のフィールドの一つである送信先フィールドに
国名が記載されています。
そして、この国名に沿って振り分けた国別クエリが10国分ほどあります。

この国別クエリは、国ごとにフィールド名もデータの表示形式も随分別の形に加工してあります。
現在はそれぞれの国別クエリのフィールド名やデータ表示形式を、
全て各国の指定した形式で加工する所まで終わっています。

あとはこれを、エクセルに出力し、とりあえずは完了という所です。


お尋ねしたいのは、この作成したクエリを、
既に用意してあるエクセルの内部にエクスポートする方法です。
VBAで何度か試しましたが、どうしても指定した位置にエクスポートすることが出来ず、
用意していたエクセルの内部データを全て上書きしてしまいます。

コード全てでなく、利用できそうな関数やメソッド、プロパティだけで十分有難いので、
是非ひとつアドバイスをいただきたく。

長文になりましたが、どうかよろしくお願いします。


111名無しさん@そうだ選挙にいこう:2009/09/23(水) 23:20:49
>>110
ほぼわかんね。っていうかこういうパターンって
情報小出しで回答側が頭にくるパターン。
112名無しさん@そうだ選挙にいこう:2009/09/23(水) 23:25:35
.CopyFromRecordset
113名無しさん@そうだ選挙にいこう:2009/09/24(木) 00:01:40
>>110
CellsとかRangeで出力先を指定すればいいじゃない。
おおむねExcel VBAの話である
114名無しさん@そうだ選挙にいこう:2009/09/24(木) 00:02:57
>>110
Excel オートメーションで調べればいい。

というか、俺はそれで同じように、給与計算のツール作っているし。

ボタンぽちっと押すと、Excelの対象のシートが立ち上がって勝手に
書き込みが始まる。

見ていて壮観だ。
115名無しさん@そうだ選挙にいこう:2009/09/24(木) 00:19:47
>>109
Windowの制御か
APIにSetActiveWindowってのがあるが
ワンアクションが面倒とは、どんだけって気がする。
116名無しさん@そうだ選挙にいこう:2009/09/24(木) 00:35:58
>>115
100人の顧客毎にレポートを印刷すると100アクションなんですよ。
顧客毎に数種類のレポートがあるから数百アクションです。
手動が好きな人ならパソコンを使わないで手書きにすればいいんでしょうが、私は自動の方が好きなもので…
117名無しさん@そうだ選挙にいこう:2009/09/24(木) 01:23:47
連続印刷するのになぜフォーカスが必要なのでしょうか?
118名無しさん@そうだ選挙にいこう:2009/09/24(木) 01:31:28
>>116
自動が好きでも自分で解決できないんなら手動でやることだな。
悪いことい言わんから、出力はXPS/PDFに限定して2007使っとけ。
1.あきらめる
2.ActiveWindowを管理する
3.2007にする
4.Shellつかってコマンドオプション指定してバックグランド可なプリンタを探す
5.お金かけて作ってもらう
119名無しさん@そうだ選挙にいこう:2009/09/24(木) 01:55:38
>>117
顧客毎にフォームがあって、必要事項を記載してからレポートを印刷する仕様になっていますので、1枚ずつしか処理できないんですよ。
100人分のデータを入力してから全顧客の最新レコードを抽出してレポートに渡せば一括処理できますね。
うーむ。また改造か。mdbだから改造できるけど、本業がすすまない…

>>118
APIいじることにします。
120名無しさん@そうだ選挙にいこう:2009/09/24(木) 02:25:37
>>110
白紙シート作ってそこにそのままエキスポートしてみるとか。
本当に書き込みたいシートのセルには参照だけ書き込んで置けばいいし
121名無しさん@そうだ選挙にいこう:2009/09/24(木) 07:13:12
>>116
自動好きの俺からすると、随分と舐めた奴だなあんた。

その程度で自動が好きだとかさ。

何がいいたいのかわかるか?印刷ダイアログがどうとかほざいている
時点で既にな・・・

で、実際に>>119をみていると やっぱりって感じで。
1枚ずつしか処理できない?それは 君の力では ってだけの話だろうが。
その程度で自動化好きだとか、手動が好きならとか貶めてるような馬鹿に
教えてやる必要は感じない罠。
122名無しさん@そうだ選挙にいこう:2009/09/24(木) 07:42:51
と、>>121というお方が御指導下さっているんだぞ皆さん!
123名無しさん@そうだ選挙にいこう:2009/09/24(木) 08:10:22
☆☆☆★最大級の注意を★☆☆☆☆☆

☆☆☆★とくに千葉県、静岡県、東京都や関東で大震災の恐れが★☆☆☆☆☆
☆☆☆★とくに千葉県、静岡県、東京都や関東で大震災の恐れが★☆☆☆☆☆
☆☆☆★とくに千葉県、静岡県、東京都や関東で大震災の恐れが★☆☆☆☆☆

☆☆☆★世界の支配者ユダヤが地震兵器を使うのか★☆☆☆☆☆

友人、知人、親類縁者、あらゆるつながりを駆使して巨大地震がくることを教えて下さい。

四川地震より大きいのが来る可能性があります。
http://goldenta★★matama.bl★★og★8★★4.f★★c2.c★★om/
警告!21-23日の地震は外れた次は27日やヴぁいかも5
http://live24.2ch.net/test/read.cgi/eq/1253716942/
ワタスの予言では今月中に関東大地震だす3
http://live24.2ch.net/test/read.cgi/eq/1253594903/
e-PISCO Part11
http://live24.2ch.net/test/read.cgi/eq/1252991726/

ほんとに大震災だったら犯人は特権階級全員だってことにwwwwwwww

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

カナダの世界的科学者ロザリー・バーテルはハープが地震兵器や脳を損傷させる兵器の疑い
があるので情報を公開するように要請している
http://www.youtube.com/watch?v=8AMlqRsHUXI&feature=player_embedded#t=511
124名無しさん@そうだ選挙にいこう:2009/09/24(木) 08:31:44
>>121
いろいろとありがとうございます。
ただ、印刷ダイアログの話はした覚えがありませんので、初老期の認知症に気をつけてください。
これです。↓
> 何がいいたいのかわかるか?印刷ダイアログがどうとかほざいている
> 時点で既にな・・・
125名無しさん@そうだ選挙にいこう:2009/09/24(木) 11:31:19
>>119
>100人分のデータを入力してから全顧客の最新レコードを抽出してレポートに渡せば一括処理できますね。
普通は、そう考えると思うが?
再印刷が発生した場合、どうするかを考慮する必要があると思うけどね
後は顧客単位の振り分け処理だね
DWは普通に印刷すると本体に吐くけど、それをどうやって区別するのか・・・
#フォルダ・ファイル名指定で出せるのかな?
126名無しさん@そうだ選挙にいこう:2009/09/24(木) 11:46:21
>>125
再印刷はそもそものの仕様が顧客毎のフォームから1件ずつ印刷する仕様ですので、それを利用します。
DWでの管理はレポートのCaptionを変更することで対応しています。
CaptionがDWでのファイルネームになりますので。(少し小細工が必要ですけど)
振り分けは振り分けソフトで対応しています。1万条件まで対応するソフトがありますので。
いま使っているmdbは高価な業務用ソフトですけど、痒いところに手が届かない設計でうんざりしています。
業務用ソフトは現場を知っているプログラマが必要でしょうが、なかなか難しいんでしょうね。
コードを眺めると笑ってしまうことがあります。
127名無しさん@そうだ選挙にいこう:2009/09/24(木) 13:39:51
レポートのCaptionを変更することでユニークなファイル名を生成できることに気づいているのもったいない
128名無しさん@そうだ選挙にいこう:2009/09/24(木) 14:32:49
>>127
ん?全てにユニークな名前を付けていますよ。連番が必要ないようにしていますが…。
そしてファイル名に含まれる複数のキーワードで自動振分していますよ。
129名無しさん@そうだ選挙にいこう:2009/09/24(木) 14:38:48
ちなみに振分はゼロックスの業務用ソフトは使っていません。フリーソフトとAccessだけで1万条件までは扱えますから。
振分ソフトのiniファイルを複数用意すればいくらでも条件は増やせますし。
130名無しさん@そうだ選挙にいこう:2009/09/24(木) 15:04:47
業務ソフトだのフリーソフトだのAccessと関係ない話ばっかりで
母さん全然わかんないわよ!
131名無しさん@そうだ選挙にいこう:2009/09/24(木) 15:22:35
>>127
そうなんだ?
#Excel出力であとはお任せが多いから、気にとめたこと無かったtks
132名無しさん@そうだ選挙にいこう:2009/09/24(木) 18:49:28
>>127
何を言いたかったのか、詳しくよろしく!
133名無しさん@そうだ選挙にいこう:2009/09/24(木) 19:13:15
もったいないっつたらエコにきまってる。
ユニークが生成されるのをAccess2000比で25%削減目標目指しますイニシアチブな快感でした。
134名無しさん@そうだ選挙にいこう:2009/09/24(木) 21:51:44
ロハスなVBAを教えてください
135名無しさん@そうだ選挙にいこう:2009/09/24(木) 23:28:49
結合
136禿げあたま:2009/09/25(金) 03:00:40
すいません、時間が取れず返事が遅くなってしまいました。
>>103-105を試してみたら動きました!すごい、クエリってこうやって作るんですね。

料金はとりあえず1日料金さえクリアすればなんとかなると思っていました。
本当にど素人ですいません。
料金形態は「3時間まで」「6時間まで」「12時間まで」「24時間まで」「1日料金」「1ヶ月料金」となっています。
貸出期間が1ヶ月を超えた場合は1ヶ月 +1日あたりの料金となります。

>4時間/半日/7日間/1ヶ月/時間延長料金が出てきても対応できるんだが
>結局、設定する側のフォーマットが決まらなければなんともできね。
設定する側のフォーマットとはどのようなとこでしょうか?私としては大体このようなことが出来ればいいなと考えています。


■お客さんから注文が入ったらフォームに借りる日付と借りたい車種を入力、空いてる車や、料金などが自動で出てくる。顧客情報もこのとき新規なら登録、既存顧客の場合はリストから選択できるようにする。
■貸渡票・受注伝票・請求書・領収書などの印刷
■どの車輌が月にどれくらい稼働しているかなど表示したい

もう少し細かいことでやりたいこともありますが、とりあえずこれくらい出来れば業務で使えると思っています。
137名無しさん@そうだ選挙にいこう:2009/09/25(金) 05:14:01
>>136
なんとなくでも、ゴールできそうと思えれば一歩前進したってことだぁ
やりたいことを明確にするのがベストだと思うのだ。
テクニックもいいが、基礎を固めるんだゲーハー
完全無毛になるまでがんばれゲーハー
138名無しさん@そうだ選挙にいこう:2009/09/25(金) 08:32:44
ACCESS 2007 RUNTIME+XP
ADOで作ったレコードセットを表形式のフォームのレコードソースにしています。
実行させるマシンによってレコードが0件のときに「カレントレコードがありません」と
出る場合と出ない場合があります。
この差はどこからくるのかご存知の方いらっしゃいますか。
メッセージが出るマシンも以前は出ませんでした。
その間、何かをしたという記憶はないのですが
メッセージを抑制する方法でもいいのでよろしくお願いします。
開発はAccess2007とVISTAで行っています。
139名無しさん@そうだ選挙にいこう:2009/09/25(金) 09:04:48
>>138
びす太を使う以上、解決策は無い。
140138:2009/09/25(金) 10:11:54
>>139
レスありがとうございます。
XP2台での挙動が違うのでOSは関係ないと思います。
VISTA+RUNTIME(Access2007は入ってない)でもダイアログは出てきません。
141名無しさん@そうだ選挙にいこう:2009/09/25(金) 10:26:20
142名無しさん@そうだ選挙にいこう:2009/09/25(金) 14:13:53
>>138
カレントレコードがありません(3021?)がどの時点で吐き出されてるのかわからんが、
エラートラップしちゃうか、recordset.count>0であるときフォームのレコードソースに
するってのはどうだろうか。

>出る場合と出ない場合があります
と言われてもなんともだなぁ。RuntimeにもSPあるから確認してみては?

まったく同じような環境なんだけど、トラブル発生したのは
・ADOのバージョン
・Xpマシンのメモリエラー
ってのがあった。
143名無しさん@そうだ選挙にいこう:2009/09/25(金) 16:39:38
>>128
振分ソフトを使わなければ処理ができないなんてもったいなよねと思っただけだよ
まして上限1万の振分条件とかiniファイルを自分で管理しなくちゃいけないなんて聞くとかわいそうになってくる
だってユニークな名前があるならアクセスで全部できるじゃん・・・・どころか・・・ユニークな名前付けもアクセスでできるじゃん
よほどチープなマシンでなければ1万件を超える条件を格納できるテーブル、オンデマンドで条件を設定できるクエリ、各種条件を管理運用できるフォーム、ファイルシステムを操作できるVBAがあるアクセスがあるならあんたのやろうとしてる作業など容易だよ
144名無しさん@そうだ選挙にいこう:2009/09/25(金) 16:50:27
>>126
現場を知っているプログラマが必要・・・じゃなくて現場のプアな説明を整理整頓して適切なロジックを考え的確な仕様書を書けるSEが必要なんだよ
できれば自分のやっている現場業務を冷静に判断し他者へ説明できる語学力を備えた現場業務担当がいればありがたいという話
145名無しさん@そうだ選挙にいこう:2009/09/25(金) 17:05:08
>>143
あっ、振分もAccessで出来るのか!
それは考えてもいなかった。調べてみますね!
でも、同名ファイルがあるときのリネームとか面倒かな?VBSでも面倒だったし…
ちょっくら検索してみます!
>>142
同意です。
146名無しさん@そうだ選挙にいこう:2009/09/25(金) 17:53:12
>>145
>>振分もAccessで出来るのか

抽出した振分条件をVBAでファイルシステムにぶつければ幸せになれる
リネームは次のメソッド  
Name oldfile As newfile


File System OBJ は良いぞ
存在確認、サイズ取得、テキスト作成
おおよそ必要なものはそろっていると思ふ
147名無しさん@そうだ選挙にいこう:2009/09/25(金) 17:55:35
>>146
ありがとうございます!
いやー、楽しみだ。
148138:2009/09/25(金) 19:01:25
>>141 >>142
ありがとうございます。

>>141のブログを参考にして「追加の許可」を「はい」に設定してみました。
エラーは出なくなりましたが、当然ながら追加用の行が表示されました。
これで妥協するかと思っていたところ次の書き込みが

結果的にはバージョンが違っていたので最新版にしたところ0件のときでもエラーはでなくなりました。
根本的な解決ではないような気がして不安ですがこれでいこうと思います。
環境は全部そろえていたつもりだったのに勘違いしていたようです。
お騒がせしました。

それだけではなんなので提案していただいた方法も試してみました。
レコードがある時だけレコードソースを設定するというのは試していたのですが
0件のときに何もしなかったので前に設定したレコードソースが残ってしまい
この方法はダメだと思っていたのです。
しかし改めて書き込みをしてもらって0件のときはNothingにすればいいのではと気づきました。
で、やってみたところエラーダイアログはでないのですが
各フィールドが#Name?となった1行が表示されました。
1件でもレコードがあれば#Name?の行は表示されません。

ちなみにエラーは「カレントレコードがありません」だけでエラーコードはありませんでした。
なぜ挙動が突然変わったのかが疑問ですがとりあえず解決です。
みなさん、ありがとうございました。
149名無しさん@そうだ選挙にいこう:2009/09/25(金) 20:06:11
>>148
コントロールソースもVBAで制御すれば#Nameエラー出さないようにできるぜ
150138:2009/09/25(金) 21:15:57
>>149
なるほど!
非連結にすればエラーは出ないですね。
試したところバッチリでした。
エラーの出るバージョンがなくなってしまったのでわかりませんが、
この方法でしたらレコードセットの制御をしなくても大丈夫かもしれませんね。
151>>78:2009/09/25(金) 21:46:36
>>136
だからさ
> 料金形態は「3時間まで」「6時間まで」「12時間まで」「24時間まで」「1日料金」「1ヶ月料金」となっています。
どの車は「3時間まで」はいくらで「6時間まで」はいくらでってのが決まらないといけないし、
さらにトヨタでいえばビッツとプリウスはたまたアリストとかそれぞれ違ったりするわけだよね。
152禿げあたま:2009/09/26(土) 00:56:34
長文失礼致します。お世話になっております。
今日社内会議であたらしい料金形態をきっちり決めようということになりまして。
会議といっても、ほぼ社長の独断ですが年始から新しい料金形態でやることになりました。
まず、個人と法人を分ける。という頭がとても痛いことになりました。来年まで猶予はあるので少しずつデータベースの勉強しながらやっていこうと思っています。

個人の貸渡料金
・3時間まで
・6時間まで
・12時間まで
・24時間まで
・それ以降は1日料金
・22日を超えると一ヶ月料金+1日料金に切り替え

法人の貸渡料金(1日以下は無し)
・1日料金
・22日を超えると一ヶ月料金+1日料金に切り替え

44日を超えると2ヶ月料金(1ヶ月x2)になるはずですが、2ヶ月を超える貸出は過去10年一度もないので考える必要はないと思っています。
153禿げあたま:2009/09/26(土) 01:00:00

>>151
車の排気量やタイプ別にで料金は設定されています。一ヶ月料金は法人・個人共に1日料金 x 22となります。

軽四 = 3時間まで 6時間まで 12時間まで 24時間まで 一日ごとに 1ヶ月料金
    3000円  3500円  4000円   4500円   4000円  88000円

1300cc = 3時間まで 6時間まで 12時間まで 24時間まで 一日ごとに 1ヶ月料金
      3500円  4000円  4500円   5500円   5000円  110000円

例えば、ワゴンRやタントは軽四に属するので軽四の料金が適用されます。
パッソやヴィッツは1300ccに属するので1300ccの料金が適用されます。

これは>>103で作成したテーブル車種管理の車種名に入れて使おうと思っています。
で、>>152で書いた料金設定をこのテーブルに以下のように組み込もうと思っています。
154禿げあたま:2009/09/26(土) 01:00:22
続きです

テーブル:[車種管理]
車種ID:数値型(主キー)
車種名:テキスト型
3時間まで:数値型
6時間まで:数値型
12時間まで:数値型
24時間まで:数値型
1日料金:数値型
1ヶ月料金:数値型
法人1日料金:数値型
法人1ヶ月料金:数値型

車種ID 車種名 3時間まで 6時間まで 12時間まで 24時間まで 1日料金 1ヶ月料金 法人1日料金 法人1ヶ月料金
1  軽四  3000円  3500円  4000円  4500円  4000円  88000円  3500円  77000円 
2  1300cc 3500円  4000円  4500円  5500円  5000円  110000円  4500円  99000円

そしてこれらの料金をフォームにて法人・個人のラジオボタンで表示切り替えできるようにしようと思っています。

155149とか142とかゲーハー:2009/09/26(土) 01:46:04
このスレIDなしだったな
>>150
まぁそーなんだが、
別のアプローチとしては、FormのOpenイベントで、
if recordsetがない then
Cancel=True
MsgBox "No Record!!",vbOkOnly
exit sub
end if
てな感じでフォームオープンを中止させるのもいいかもしれん。

>>152
とりあえず作ってみれよ
コツコツとがんばれゲーハー
156155:2009/09/26(土) 01:49:36
recordsetがないっていう表現は変だな。察してくれ
157名無しさん@そうだ選挙にいこう:2009/09/26(土) 07:49:28
そういやおれも大昔のDBはテーブル名に顧客管理とか社員管理とか部署管理とか管理だらけだったわw
158138:2009/09/26(土) 08:32:13
>>155
ありがとうございます。
そういうやり方もあるんですね!
今回のはフォーム開きっぱなしで中身を動的に変えていくものなので
使えないのですが覚えておきます。

たまにフォームを呼び出す前にレコードセットのチェックをして
開くか開かないかを決めるというのも作っていたのですが、
教えていただいた方法なら新しいフォーム側の1つのプライベート変数のみで済みますね。
勉強になります。
159名無しさん@そうだ選挙にいこう:2009/09/26(土) 08:51:16
>>157
俺のテーブルは、太郎と花子って名前が多かった。
顧客太郎だとか

社員花子だとか。太郎が外向き、花子が内向き用にテーブル名を分けてた。
退職する際には、あまりに酷い会社だったので、テーブルの名前を全部、
車の名前に変えた。年度更新のプログラムは前のテーブル名での設定だから
多分、停止したと思う。
160名無しさん@そうだ選挙にいこう:2009/09/26(土) 09:09:38
ワロタw
161>>78 離島のサンデーPG:2009/09/26(土) 12:39:46
>>152
1日を超えたら

例えば軽四で1日と2時間だったら
=1日まで4000円+3時間まで3000円=7000円?
それとも
=1日まで4000円*2=8000円?

例えば2日と7時間だったら
どういう料金設定?
162禿げあたま:2009/09/26(土) 15:46:56
>>161

>例えば軽四で1日と2時間だったら
>=1日まで4000円+3時間まで3000円=7000円?

そうです、個人に関してはそのまま1日+3時間以内で+3時間料金となります。
実際にはこの場合は以降1日料金を追加してこういうケースで借りるお客さんは少ないです。

>例えば2日と7時間だったら
軽四の場合、初日の4500円 + 2日目以降の4000 + 12時間までの4000円
  ↓
4500 + 4000 + 4000 = 12500円


法人は以前と同じで10時間超えたらもう1日プラスとなっています。(法人は1日以下の料金設定無し)
163離島のサンデーPG:2009/09/26(土) 18:58:29
>>162
疑問なんで聞いちゃうけど

> >例えば軽四で1日と2時間だったら
> >=1日まで4000円+3時間まで3000円=7000円?

> そうです、個人に関してはそのまま1日+3時間以内で+3時間料金となります。

> 軽四の場合、初日の4500円 + 2日目以降の4000 + 12時間までの4000円
  ↓
> 4500 + 4000 + 4000 = 12500円

1日と2時間なら
初日1日=4000円
2日と7時間なら
初日1日=4500円
この違いはどう考えればいいんでしょうか?
164禿げあたま:2009/09/26(土) 19:42:40
>>163

混乱させてすいません。
間違えてました。初日料金(24時間まで)は別なので

1日まで4000円+3時間まで3000円=7000円
 ↓ こうなります
24時間まで4500円+3時間まで3000円=7000円

個人の方は結構ややこしくて、24時間=初日料金ということでそれ以降の1日料金より少し高いです。

さっきAccessVBAプログラミング開発工房 入門・基礎編を買ってきました。
2300円もするとは、高い〜。この土日はVBAの勉強がんばります。
165名無しさん@そうだ選挙にいこう:2009/09/26(土) 22:21:25
>>164
まずなんだが、今の貴男には無理でしょう。

俺だったら、関数作って対処する。ソレで済む。複雑っていっても、それは
貴男にとて複雑だと思っているだけで、その程度は、処理レベルとしては、
むしろ、複雑でもなんでもない。

貴男は、まず、Accessの知識より、情報を扱う記述ってのを身につけた方が
いい。あなたのその整理の仕方じゃ、プログラムは作れない。
166名無しさん@そうだ選挙にいこう:2009/09/26(土) 22:40:08
>>165
まあまあ、そうなのは重々承知での話しなワケヨ。

> 混乱させてすいません。
> 間違えてました。初日料金(24時間まで)は別なので

> 1日まで4000円+3時間まで3000円=7000円
>  ↓ こうなります
> 24時間まで4500円+3時間まで3000円=7000円
この時点で計算が違ってるし...あんまし真剣じゃないんだなって...

ものを造るって大変なことなんすよーって言いたい。

まずはVBA云々なんかよりも先にSQLと第三正規化までをみっちり学習してから
質問してほしいってのは本音なんだが...。
167禿げあたま:2009/09/26(土) 22:46:22
>>165
ご意見ありがとうございます。

私自身プログラミングというものは全く理解できないのですが、
書籍やウェブで少しずつ勉強していければなと思っています。

165さんの仰るとおりプログラミングどころかAccessにふれてまだ3週間の
私には、まだ早すぎるシステム制作だろうと思っています。
ただ仕事の都合でどうしても私が制作しなければならないことになってしまい、ここで質問させて頂きました。

情報を扱う記述というのはどういったことを勉強すればよいのでしょうか?
私のようなレベルのものにも参考になる書籍などを教えて頂けると助かります。
幸いにもAccessを楽しいと思えるので、少しずつでも勉強して今後も使えるスキルに出来たらなと思っています。
168離島のサンデーPG:2009/09/26(土) 23:02:04
>>167
楽しいと思えることをやればいいんだよ。
ただし、聞くからにはその前に自分で調べてからってことを忘れずにね。
169禿げあたま:2009/09/26(土) 23:02:14
>>166
>> 24時間まで4500円+3時間まで3000円=7000円
>この時点で計算が違ってるし...あんまし真剣じゃないんだなって...
>
>ものを造るって大変なことなんすよーって言いたい。

m(_ _)m すいませんほんと、バカみたいな間違いですね。
真剣じゃないと思われても仕方ないです。
170名無しさん@そうだ選挙にいこう:2009/09/26(土) 23:34:10
「制作」と「製作」
171名無しさん@そうだ選挙にいこう:2009/09/26(土) 23:54:15
「Access」と「木同」
172名無しさん@そうだ選挙にいこう:2009/09/27(日) 00:22:33
>>167
例えば今回のケースで言えば、最小単位はなんなのか?

それをベースに一定のレベルで符号化するとかね。この符号ってのは、フラグ
なわけだ。

1だったら、2時間 2だったら4時間 そういうフラグデータをいかに作っていくか?
そしてそのフラグを元に、VBAあたりで、select caseで処理してみるとか。つまり、
重要なのは以下に情報を整理するか?データベース特有なら正規化も当然にし
て重要だ。

データベースはまず情報をいかに整理するか?
殆どの人が自分の情報は整理されているというが、データベースを扱う人間から
したら、それは整理される前のデータにしか見えないというのは山ほど在る。
173禿げあたま:2009/09/27(日) 01:55:06
>>172
ありがとうございます。勉強になります。

>例えば今回のケースで言えば、最小単位はなんなのか?
>
>それをベースに一定のレベルで符号化するとかね。この符号ってのは、フラグなわけだ。

私にはその最小単位が何なのかもよくわかっておりません。
データベースを理解するということでまた書籍なども購入してみようと思っています。
とりあえず年末まで猶予があるので、今はVBAを少しずつ勉強できればと思っています。
174名無しさん@そうだ選挙にいこう:2009/09/27(日) 04:44:21
>>173
ほとんどの業務では最初は紙ベースの台帳があったはずです。

【貸出台帳】
[借りた人],[貸出車の自動車登録番号],[車両の大きさ],[貸した日時]
鈴木一郎さん,品川500わ12-34,小型,2009/09/27 16:30
これを毎回、面倒だけど手書きする。

そのうち賢い人が「自動車ごとに1号車,2号車って番号を振ったら楽じゃね?」と
思いつくわけです。そうだ車両台帳を作ろう!みたいに。
【車両台帳】
[号車],[自動車登録番号],[車両の大きさ],[基本単価]
こうすれば貸出台帳は、[借りた人],[号車],[貸した日時]の記入だけで済みます。

すると今度は車両台帳を記入する人が「車両クラス台帳を作ろう!」と思いつきます。
【車両クラス台帳】
[車両クラス],[車両の大きさ],[基本単価]
これで車両台帳の記入も楽になりました。

こんな風に、扱う項目を開発の早い段階で細切れにしておく。
そうすると業務が楽になるのは手書きでもAccessでも同じです。
175名無しさん@そうだ選挙にいこう:2009/09/27(日) 08:15:31
>>173
あんまり難しく考えんなよ。
あれもこれもってなるとやっぱりAccessじゃなくてもいいやってなるぞ。
まあオレのことなんだがw

最初は現行(手書き?)のシステムの補助的なものでもいいんじゃないかな。
176禿げあたま:2009/09/27(日) 16:27:39
>>174
わかりやすい説明ありがとうございます。
とても勉強になります。

>>175
>あんまり難しく考えんなよ。
>あれもこれもってなるとやっぱりAccessじゃなくてもいいやってなるぞ。
>まあオレのことなんだがw
>
>最初は現行(手書き?)のシステムの補助的なものでもいいんじゃないかな。

ありがとうございます。
私はあまり頭が良くないので、地道に勉強しかないと思っています。

今後のことも考えると、ここで誰かに答えを聞いてもいずれ困る日が来るのは間違いないので
焦らずにゆっくり基本から学んでいきたいと思っています。

皆さんいろいろご助言頂いて本当にありがとうございます。
177名無しさん@そうだ選挙にいこう:2009/09/28(月) 02:59:28
Access初心者です。
XP+Access2003でテーブル1とテーブル2を
1対多で関連付けして連鎖削除をチェックしています。
テーブル1のレコードを削除したときに異常終了でAccessが
落ちるのですが、原因は何でしょうか。
178名無しさん@そうだ選挙にいこう:2009/09/28(月) 07:09:44
>>177
M$サポートセンターへどうぞ
179名無しさん@そうだ選挙にいこう:2009/09/28(月) 08:25:11
>>177
最適化してみたら?
180名無しさん@そうだ選挙にいこう:2009/09/28(月) 09:47:04
WindowsXP上でACCESS2002RuntimeとACCESS2007Runtimeを共存させらレナ意でしょうか
それぞれのランタイムをインストールしてショートカットを作成し
起動時に使用するランタイムを指定しているのですが、
一度どちらかのRuntimeを使うと、もう一方のランタイムを使うときにインストーラーがいちいち起動してしまいます。
これを回避する方法はないでしょうか?
181名無しさん@そうだ選挙にいこう:2009/09/28(月) 09:50:44
レナ意です
182名無しさん@そうだ選挙にいこう:2009/09/28(月) 10:15:03
2007 Runtimeに統一できないの?
2002じゃないとダメっていうのはどういう場合?
後学のために教えてください。
183名無しさん@そうだ選挙にいこう:2009/09/28(月) 15:14:07
Access2007でサブレポート付のレポートを作成しているのですが、
メインレポートでサブレポートの各項目を集計させるにはどのように設定すればよいのでしょうか。

具体的には、得意先ごとの請求書を作成していて、
メインレポート→得意先ごとの単票形式
サブレポート→パラメータで日付を指定して売上明細
と表示させています。

売上明細の数量、金額、消費税のそれぞれの項目を集計したものをメインレポートに表示したいのですが、
プロパティから式ビルドで
= SUM([数量])としてもうまく計算してくれません。

初心者の質問で申し訳ありませんが、ご教示よろしくお願いします。
184名無しさん@そうだ選挙にいこう:2009/09/28(月) 17:31:44
>>182
2003形式のファイルを2007RTで動かすと落ちることがあるんです
その原因がはっきりしていないのと、そのファイルは他の人が作ったので、
できれば直すのは最終手段にしたい。

それとは別に、2007で作成したファイルも使うので、
ファイル毎にランタイムを使い分けられれば一番楽かなと。
185182:2009/09/28(月) 18:26:59
>>184
参考になります。
私も2000で作られたmdbファイルを2007のRuntimeで動かしていますが
ちょっと怖いですね。
今のところ認識できる実害はないのでそのまま使っています。

始めは同じように共存しようとしたのですが、
やはり切り替えでインストーラーが立ち上がってしまいます。
「情報を集めています」とか出て長いんですよね。
解決につながるような情報がなくてすいません。
186名無しさん@そうだ選挙にいこう:2009/09/28(月) 18:34:11
>>183
=Sum(Reports!メインレポート名!サブレポート名.Report![数量])
でどう?
187名無しさん@そうだ選挙にいこう:2009/09/28(月) 19:31:54
Access2007です。
テキストボックスに入力されている値の小数第3位以下を切り捨てたいのですが
Int(Ccur(TextBox) * 100) / 100 で大丈夫でしょうか。
整数の100も通貨型に変換しないとダメですか。
試した範囲ではTextBoxのみ型変換すれば大丈夫そうなんですが
すべての数をチェックできるわけではないのでよろしくお願いします。
188名無しさん@そうだ選挙にいこう:2009/09/28(月) 20:39:25
おれもすべての数はチェックできんよ
1891/2:2009/09/28(月) 21:38:15
お願いします。
自宅ではaccess2003 仕事場では2000を使っています。

下記コードを実行したところ、自宅ではOK、会社ではユーザ定義型が定義されていないと怒られます。
参照設定はDAOは両方共3.6で、EXCELライブラリは会社が6.0、自宅はEXCEL11.0です。


どこに原因があるのかが見当つかなくて参ってます。
すいませんがお願いします


190名無しさん@そうだ選挙にいこう:2009/09/28(月) 21:39:13

Private Sub btn1_Click()
Dim Db As DAO.Database Dim myRS As DAO.Recordset Dim i As Integer
Dim myXLS As Excel.Application  Dim myWKB As Excel.Workbook Dim myWKS As Excel.Worksheet

On Error GoTo エラー処理
Set Db = CurrentDb
Set myRS = Db.OpenRecordset("Q1")

Set myXLS = New Excel.Application
myXLS.Visible = True
Set myWKB = myXLS.Workbooks.Add
Set myWKS = myWKB.Worksheets("sheet1")

With myWKS
For i = 0 To myRS.Fields.Count - 1
.Cells(1, i + 1).Value = myRS.Fields(i).Name
Next i

.Range("C8").CopyFromRecordset myRS
End With
myWKB.SaveAs ("C:\Documents and Settings\Owner\デスクトップ.test.xls")
Exit_EXCELCOPY:
myXLS.Quit
Set myXLS = Nothing Set myWKB = Nothing Set myWKS = Nothing

myRS.Close: Set myRS = Nothing
Db.Close: Set Db = Nothing
Exit Sub   エラー処理: Exit Sub End Sub
191名無しさん@そうだ選挙にいこう:2009/09/29(火) 02:57:17
>>189
access2003で使ったときの参照設定EXCEL11.0が残ってるだけでないの?←仕様じゃね?
2007の互換モードなら下位互換を保持してくれるけど。

酔っ払いタクシー帰宅途中なので、間違ってたらスマソ
192名無しさん@そうだ選挙にいこう:2009/09/29(火) 03:27:47
>>189
>EXCELライブラリは会社が6.0
6.0ってExcelのなにに当たるんだ?
CopyFromRecordsetあたりが上記ライブラリに無いのではなかろうか。
193192:2009/09/29(火) 03:45:54
一応補足
文脈からわかるだろうが、CopyFromRecordsetはExcelライブラリのメンバーだから。
オブジェクトブラウザーでCopyFromRecordsetを検索してみれば。
194名無しさん@そうだ選挙にいこう:2009/09/29(火) 04:36:13
>>190は、EXCEL VBAの話だと思うんだ
DAO3.6とCopyFromRecordsetのExcel2000の組み合わせで
なんかバグあった気がするなぁ
accessの問題ではないのではなかろうか。
195名無しさん@そうだ選挙にいこう:2009/09/29(火) 05:30:28
196183:2009/09/29(火) 12:00:05
>186
ご回答ありがとうございます。

早速ためしてみたところ、実行するとパラメータクエリのようにダイアログが出て
式がそのまま表示されます。
レポート名の指示などに何かルールがあるのでしょうか?
稚拙な質問ですみません。
197名無しさん@そうだ選挙にいこう:2009/09/29(火) 14:51:25
>>196
サブフォーム/サブレポートの集計値をメインフォーム/メインレポートに
引用するには、一旦サブ側で集計させたコントロールを参照するがよろし。

>何かルールがあるのでしょうか?
当たり前です。式ビルダ使って確認してみるがよろし
198名無しさん@そうだ選挙にいこう:2009/09/29(火) 16:21:33
【 システム環境  . 】 WindowsXP, Access2003
【 VBAが使えるか .】 はい
【 VBAでの回答  】 可
【 検索キーワード 】 レポート 枠外 テキストボックス 横展開

http://2sen.dip.jp/cgi-bin/upgun/up6/source/up1085.xxx
↑エクセルファイルです。


これと同じものをACCESSのレポートで作成をしたいのですが、
行き詰ってしまいました。
すべてのテキストボックスを縦書きにして、フォントを@がついているものを使用したりしたのですが、
枠外での氏名や住所等を挿入する方法がわかりませんでした。

ぜひ、よき方法をご教授願います。
199名無しさん@そうだ選挙にいこう:2009/09/29(火) 16:29:20
>>198
このExcelの表をレポートに貼り付けてしまえば?
200名無しさん@そうだ選挙にいこう:2009/09/29(火) 17:19:39
>>198
なんとなくだが、やろうとしてることは無理じゃないすか
出力用データを1ページ分単位で整形したほうがいいのでは?
12ヶ月分と項目数は固定と考えてもよさげだし
201名無しさん@そうだ選挙にいこう:2009/09/29(火) 17:21:46
あ、勘違いしてた。縦書きとかいう以前の問題なんじゃないの?
202名無しさん@そうだ選挙にいこう:2009/09/29(火) 18:19:00
>>198
集計クエリをユニオンすればサクッと行く気がしないでもない。
203190:2009/09/29(火) 19:26:53
遅くなりました。
あと会社のexcelは9.0でした。

うまくいかなかった原因は参照設定がうまく反映されてなかったみたいです。
DAOチェックはずす→チェックいれる→コードのDAOかかわってる部分も一回書き直す。

だけでいけました。

>>191-195
みなさんありがとうございました。
どうやらこっちの確認不足の粋でした。
204110 190:2009/09/29(火) 19:42:58
すいません、続けて失礼します。

Set Db = CurrentDb
Set myRS = Db.OpenRecordset("Q1")
Set myXLS = New Excel.Application
myXLS.Visible = True
Set myWKB = myXLS.Workbooks.Add
Set myWKS = myWKB.Worksheets("sheet1")

With myWKS
.Range("C8").CopyFromRecordset myRS
End With
myWKB.SaveAs ("C:\Documents and Settings\Owner\デスクトップ\出力テスト.xls")

このコードだと、新しくエクセルファイルを作って、その中にブックとシートを作った上で
そこにレコードセットをコピーしてくる流れだと思うのですが、
これだと当然ながら既存のエクセルファイル 「出力テスト」のsheet1の中身を
全て上書きする形でコピーされてしまいます。

既存のエクセルファイル「出力テスト」の中には、
数行分ぐらい案内用の文書が入っていて、
その案内文の下行のC8セルからコピーしたものを貼り付けたいのですが、
前半部分の変数の宣言に問題があるのでしょうか。

どうかよろしくお願いします。
すんません、お願いします
205名無しさん@そうだ選挙にいこう:2009/09/29(火) 20:18:11
GetObjectかな・・・・
でもExcelスレで聞くほうがいいと思うぜ・・・
206名無しさん@そうだ選挙にいこう:2009/09/29(火) 20:21:03
ちょっと前のログに似たような質問してるやつが何人もいて
それっぽい解答もいくつか出てる。
207名無しさん@そうだ選挙にいこう:2009/09/29(火) 20:22:28
Excel VBA側で操作したいのですが、
access一本で、というのが今回の課題ですorz

ちょいとgetobject調べてきます
208198:2009/09/29(火) 21:22:13
やっぱり無理なんですかね?
色々調べてもレポートの枠外に文字を貼り付けることなど
ネット上ではhitしませんでした。
209名無しさん@そうだ選挙にいこう:2009/09/29(火) 21:35:37
>>198
あなたは1973年4月2日生まれですね
210207:2009/09/29(火) 21:35:59

set wks = XLS.Workbooks.Addにしてたのがだめでした。


set wks = XLS.Workbooks.Open("dir")
と、range
でいけました。

とりあえずありがとうございました!

211名無しさん@そうだ選挙にいこう:2009/09/30(水) 00:31:36
>>198
レコードソースが解らないと、なんともいえない。
恐らく支払日ごとに全項目を手入力しているのだと思うが。
ヘッダをうまく使えば問題ないんじゃないか。

212196:2009/09/30(水) 11:01:44
>197
ご回答ありがとうございました。
なんとかうまくいきそうです。本当に助かりました。

あともう一つだけお願いします。
サブレポートの数値を参照する際、数量を集計したコントロールはどう指定すれば良いのでしょうか。
式ビルダで選択できるのは元々あった(集計前の)コントールだけで、集計したところが表示されないので困っています。
どうぞよろしくお願いします。
213198:2009/10/01(木) 19:57:19
>>209
1976年生まれです

>>211
ヘッダーに氏名、住所、生年月日などを入れると
A4用紙に収まらなくなったので困ってたのです。

もうちょっと工夫してみます。
214名無しさん@そうだ選挙にいこう:2009/10/01(木) 23:15:41
>>213
俺より2年先輩か

ちなみに、俺も勤怠とか給与担当やっているから、つくっているけれど、こんなインターフェース
じゃないんだよね。今手元にないから、スクショとか出せないけれど、かなりいろいろ作り込んで
いるから、これと同じ物 もしくは それ以上の物つくれっていわれたらすぐ作れる。

ただ、言語化して伝えるのがとても難しい。

土日だったら、明日そのプログラムのスクショとって見せようと思うけれど。
215名無しさん@そうだ選挙にいこう:2009/10/04(日) 21:53:48
おねがいします
2003使ってます。

アクセスからcopyfromrecordsetで、表が作成してある既存のエクセルシートに
あるクエリを出力しています。

出力先のエクセルに、クエリ内のレコードの総数に合わせて
表を閉じてくれるように組みたいのですが、
access側からのvbaでは操作できませんでしょうか?

よろしくお願いします
216名無しさん@そうだ選挙にいこう:2009/10/04(日) 22:15:35
またおまえか
217名無しさん@そうだ選挙にいこう:2009/10/04(日) 23:19:36
またかよって感じね
なぜにExcel VBA の話をここで質問するのだろうか
218名無しさん@そうだ選挙にいこう:2009/10/05(月) 06:58:17
accessでExcel VBAを参照設定すれば、グラフだって作れます。
219名無しさん@そうだ選挙にいこう:2009/10/05(月) 11:14:39
2007なら、マルチユーザ利用でも安定してる?
220名無しさん@そうだ選挙にいこう:2009/10/05(月) 14:09:17
申し訳ありませんが、質問させてください。

以下の3台のPCがあります。
1.VISTA Home Basic
2.VISTA Home Basic
3.XP Home Edition
※3台ともAccess 2003 ランタイムで動作してます

1にはmdbファイルを置いてあります。
2,3にはそのmdbをリンクテーブルとして参照しているmdeファイルがあります。
(これは同一のmdeファイルです)

3でフォームを開いた後に、2でフォームを開こうとすると、ひたすら読み込み中。
その後、3のフォームを閉じると、2のフォームが開きます。
(逆に2でフォームを開いた後なら、3でもフォームも開けました)

こんな現象なのですが、原因が分かる方いらっしゃいましたら、ご教授お願いします。
221名無しさん@そうだ選挙にいこう:2009/10/05(月) 19:26:19
【 システム環境  . 】 Windows2000, Access2000?
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否
【 検索キーワード 】 WHERE

WHEREを使ってある条件に一致するもののみ
抽出しているようなのですが、
(そのデータでは項目が1のもののみ
抽出している)
単純にWHERE記述の所だけ削除しても
だめなのでしょうか?
全ての情報を引き出したいのですが
222名無しさん@そうだ選挙にいこう:2009/10/05(月) 19:42:10
>>221
エスパー希望
223名無しさん@そうだ選挙にいこう:2009/10/05(月) 19:51:08
>>220
接続できているみたいなので、確認すべき点は2つあると思われる。
A.1のmdbの共有モードとかレコードロックを変えて確かめる。
B.1のmdbが置いてあるフォルダの権限に2と3から接続するユーザを追加してみる。あとから接続するユーザがldbにアクセスできないのかもしれない。

>>221
**項目1が1であるレコードselect**
select * from テーブルA where 項目1=1;
**テーブルAの全レコードselect**
select * from テーブルA;
224名無しさん@そうだ選挙にいこう:2009/10/05(月) 22:44:56
テーブル名や項目名に**使うな、超解り難いだろ
225サザエボン:2009/10/06(火) 15:02:26
>>215
Dim MyXL As Object
Set MyXL = GetObject(GetLinkedDBName("kintai"), "Excel.Sheet")
Dim db As DAO.Database
Dim intNo As Integer
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Set CN = CurrentProject.Connection
RS.Open "勤怠エクスポート", CN, adOpenKeyset, adLockOptimistic
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True '--- A
MyXL.worksheets("sheet1").Select

intNo = 1
Do Until RS.EOF
intNo = intNo + 1
'MyXL.Application.cells(intNo, 1).value = RS!支給年月
'MyXL.Application.cells(intNo, 2).value = RS!経理所場コード
'MyXL.Application.cells(intNo, 3).value = RS!氏名
'MyXL.Application.cells(intNo, 4).value = RS!職員コード

・・・以下中略・・・

RS.MoveNext
Loop
226名無しさん@そうだ選挙にいこう:2009/10/06(火) 21:14:47
表を閉じろよ
227サザエボン:2009/10/06(火) 22:43:13
>>226
いや、Loopの下もあるんだけれど、入りきらなかった。

ごめんちゃい
228名無しさん@そうだ選挙にいこう:2009/10/06(火) 23:01:06
Nothing
229名無しさん@そうだ選挙にいこう:2009/10/07(水) 09:32:57
221

* で検索
230198:2009/10/07(水) 16:14:09
>>214
レスありがd

http://hatenachips.blog34.fc2.com/blog-entry-32.html

こんなのを発見しました。
こいつを弄ってみます。
231名無しさん@そうだ選挙にいこう:2009/10/09(金) 03:04:51
【 システム環境  . 】 Windows XP, Access 2003
【 VBAが使えるか .】 はい
【参考にしたサイト】
http://allabout.co.jp/internet/database/closeup/CU20021003/
http://allabout.co.jp/internet/database/closeup/CU20070913A/

AccessでMySQLに接続し、データベースの内容を変更できませんか?
MySQLはLinuxに入っています。

具体的には、
MyODBCをインストールし、ODBCでMySQLに接続するのはできました。
ただ、accessで開くと、中身は見れるのですが、変更することはできません。
accessで変更し、MySQLに反映させることはできませんか?

accessで開くでは、ファイルの種類を「ODBCデータベース」にして、コンピュータデータソースから
選んでいます。(リンクテーブルです)
232名無しさん@そうだ選挙にいこう:2009/10/09(金) 09:24:51
>>231

> Microsoft Access が自動的にテーブルからユニーク レコード識別子を
> 決定しない場合、ソース テーブルの各横列をユニークに特定するため、
> 各カラム、もしくはカラムのコンビネーションの確認が要求されること
> がある。使用したいカラムを選び、OK を選択する。

も実行している?

NGの場合は
Dmyでもいいから各テーブルに数値型の uniq key 作ってる?
#pgsql <-> Access だとそんな制約があった気がする
#うそだったらすまん
233231:2009/10/09(金) 15:13:23
>232

> Microsoft Access が自動的にテーブルからユニーク レコード識別子を
> 決定しない場合、ソース テーブルの各横列をユニークに特定するため、
> 各カラム、もしくはカラムのコンビネーションの確認が要求されること
> がある。使用したいカラムを選び、OK を選択する。
で解決しました。
ありがとうございます。
234名無しさん@そうだ選挙にいこう:2009/10/09(金) 16:05:02
最近は頭がうまく働かないという人が多いな。

どうも空気中のオゾンの濃度が上昇してるようで、これが原因みたいなんだな。
オゾンの濃度が上昇すると、人間の呼吸機能が害される。人間の呼吸器の機能が
低下すると、体内に取り込まれる酸素の量が減少する。すると脳にまわる酸素が
不足するようになって、脳の機能が低下する。脳の機能が低下すると頭が疲れやすく
なり、文字とかをたくさん読んだり書いたりすることが難しくなってきたりするし、複雑な
思考をすることも難しくなるんだな。
ちなみに一酸化炭素の致死濃度は1500ppmに対し、オゾンの致死濃度は50ppmで、
単純計算でオゾンの毒性は一酸化炭素の30倍強い。
http://www.showaboss.co.jp/sub2-safety02.htm
http://ja.wikipedia.org/wiki/%E4%B8%80%E9%85%B8%E5%8C%96%E7%82%AD%E7%B4%A0

生活環境基準では0.05ppm(50ppb)が安全基準の上限なんだが、実際にはこの基準を
超える地域というのが最近は結構多い。
http://www.jamstec.go.jp/frcgc/gcwm/jp/japan.html

このオゾン濃度が上昇する原因なんだが、最近はバイオ燃料を自動車で使うことが
原因として指摘されたりしている。
http://tvert.livedoor.biz/archives/50893079.html
http://wiredvision.jp/blog/wiredscience/200706/20070606133755.html

通常のガソリン・軽油は炭素と水素原子だけで構成されるんだが、バイオ燃料(バイオエタノール)の
場合、酸素原子も燃料に含む。そしてその酸素原子がエンジンが吸入する空気中の酸素分子と
結合してオゾン(O3)になるのが原因ではないかと言われている。
235名無しさん@そうだ選挙にいこう:2009/10/09(金) 21:40:50
>>231
できるか、できないかときかれれば、できるよ。実際にやってたし。
でも、accessであるが故の限界がすぐに訪れる。ちょっと複雑なことすると
遅くて使い門にならなくなる。素直にPHP+MySQLとかにしたほうが良いよ。
欲を言えばPHP+PostgreSQLがいいかな。実務ではこれを使ってる。
236名無しさん@そうだ選挙にいこう:2009/10/09(金) 23:45:30
こんばんわ。
みなさんは、ACCESSで どのようなデータベースを作成していますか?

ちなみに俺は、名刺データベースを作っています。
名刺の情報を入力して、検索できるようにしています。

データベースを作るのが楽しくてたまりません。
でも、アイデアうかばないんです。
仕事に役立つデータベースを紹介して下さい。
237名無しさん@そうだ選挙にいこう:2009/10/10(土) 03:34:41
>>236
「必要は発明の母」って言葉を知っているか。
アイディアが浮かばないということは、現状では名刺(顧客)管理ぐらいしか
あなたの業務では必要が無いということだろう。
恐らくたいていの人はあなたと逆で、
「アイディアはあるんだけど、そのアイディアを実現するスキルが無い」
なんじゃないかな?
238サザエボン:2009/10/10(土) 07:11:54
>>231
ODBCリンクで、テーブル一覧がAccess側で見えているなら、普通そのまま
テーブル開いて、直接読み書きできるが?

できないのだとしたら、ODBC接続の設定をつくる場面で、ログインアカウント
を別途つくったユーザアカウントか何かにしていて、さらにそのユーザアカウント
が出来ることが、MySQL側でリードオンリーに設定されているからだと思うが?

俺の場合、身内で使うだけなので、rootアカウントで全部読み書きできるように
している。ただ、クエリの場合、作り方が変だと、読み書きができなくなる。これは
主キーの取り扱いに関する問題だから、Access単体でも起きるので、別問題。
239名無しさん@そうだ選挙にいこう:2009/10/10(土) 15:42:05
>>238
それ主キーの問題ということですでに解決済みじゃね?
240サザエボン:2009/10/10(土) 17:47:43
>>239
あ、本当だった 俺、馬鹿だな・・・・

だから、駄目野郎って言われるんだな。なんか凹んだよ
241236:2009/10/10(土) 23:30:44
>>237
たしかに必要は発明の母ですね。
でも、必要だと気づかないだけで、
他人に言われてみれば、あぁそのDBいいなぁって思えるじゃん。

他人がどんなDBを作っているか知りたいんです。
242名無しさん@そうだ選挙にいこう:2009/10/10(土) 23:54:21
殆どの人間は業務で発生する「大量データ」の入力・加工作業だ
言っちゃ悪いが名刺のデータ管理なんぞはエクセルで十分。

毎日100人との名刺交換が365日続くようならそこで初めてDBの出番だよ
243236:2009/10/11(日) 00:33:07
名刺DB以外にもDBはつくっていますが、
名刺の数が500をこえると、DB作った方がいいと思います。
36500枚になる前に、なにかまずいと気づくはず。

フィールドの数が多いし、備考欄もつけて、付加情報を入力したり、
名刺の画像も添付したりしたいので、アクセスで作りたいです。
URLやメルアドも入力するので、エクセルだと、横長すぎるとおもいます。

というか、エクセルだと、ミスドラッグで、
セルのデータが移動してしまうのが
こわいんです。
244名無しさん@そうだ選挙にいこう:2009/10/11(日) 00:41:45
↑なに?この人?
245名無しさん@そうだ選挙にいこう:2009/10/11(日) 01:03:33
>>236
えーと、マジレスすると、Accessアプリってエンタープライズ系ではなく
EUCに特化した使い方が多いので、「仕事に役立つデータベース」と
きかれると、本当に特定の部署内の特定の誰かにしか関係ない(理解
できない)ほど業務寄りだったりします。
なので、書いてもまったく誰の参考にもならないどころか、下手をすると
何を書いているのかすら分かってもらえないくらいニッチだったりするので、
「○○のためのツール」と書いたところで、はたしてあなたの参考になるかどうか。

それよりも、いますぐ必要ではなくても、関数レベルやクラスモジュール
レベルで使えそうな機能を収集しておきましょう。何か作りたいものが
ひらめいたとき、引き出しが多いほど実現が早いですから。
246236:2009/10/11(日) 01:13:09
>>245
マジレスありがとう。
必要としている人しか、
「これは使えるDBだ」と感じられないものなんですね。

247名無しさん@そうだ選挙にいこう:2009/10/11(日) 01:41:38
名刺500枚程度なら桐にしとけばいいだろw
248名無しさん@そうだ選挙にいこう:2009/10/11(日) 03:24:13
別に名刺の枚数でExcelや桐を勧める必要は無いじゃん。
確かに、少数の名刺管理をするためにAccessを購入するとかならともかく
すでに持っているのなら、Accessを使うべきだと思うのだが。
249名無しさん@そうだ選挙にいこう:2009/10/11(日) 07:44:56
目的と手段が完全に逆になってるアフォへの皮肉だろ
250名無しさん@そうだ選挙にいこう:2009/10/11(日) 13:47:42
>> 243
> URLやメルアドも入力するので、エクセルだと、横長すぎるとおもいます。

>> 243 は横方向にしか入力する発想しかできないんだろうな。
イタすぎる。

251名無しさん@そうだ選挙にいこう:2009/10/11(日) 14:54:41
すみません。初心者です。質問です。
500MB、120万件のデータに対し、あるフィールドを
テキスト型→数値型に型変更をしようとすると64万件に減ってしまいます。
どうなってんだと思い、通しNoをつけようとオートナンバー型でIDを作ろうとしたら、
「クエリを完了できません。クエリ結果のサイズがデータベースの最大サイズ(2GB)より大きいか、
クエリ結果を一時的に保存するディスクの空き容量が不足しています」となります。
空き容量は18GBあるんですが。。どうすればよいでしょうか??
252名無しさん@そうだ選挙にいこう:2009/10/11(日) 15:35:58
>>251
>テキスト型→数値型に型変更をしようとすると64万件に減ってしまいます。
数値に変換できないフィールドが削除されているんじゃないの。
253251:2009/10/11(日) 17:22:04
>>252
ありがとうございます。その通りでした。
しかし相変わらずオートナンバーはできません。。
254サザエボン:2009/10/11(日) 18:29:27
>>253
まずなんだけれど、二つある。

1つは、現状のまま、数値型に変換してどうこうなんだけれど、一時的にファイルが増加した際に、
Accessのファイルが2GBを越えているんだと思われる。もしくはメモリ不足?

もしそうなら、現段階でかなり来ている状態なので、二つ目として、MySQLへデータ部分をマイグ
レーションをお勧めする。MySQLにその為のツールがあるから、結構簡単に移植できる。
で、オートナンバーフィールドをどうするかなんだけれども、一度マイグレーションして、MySQL Administrator
上で、テーブルの設定に於いて、IDという数値型のフィールドを用意して、オートインクリメントにして
おく。さらにそれをPrimary keyにしておく。

これで大丈夫だったような。もしできなくても、一度移植した後データだけを消して、上の設定を施し、
Access側から、ODBCリンクで接続して、そこへ追加クエリで流し込むと上手くいくよ。

それだけの件数でそれだけのファイルサイズがあると、かなりAccessでの取り回しは面倒くさくなるか
ら、そういう手法を一度考慮した方がいい。MySQLをお勧めする理由は、マイグレーションが楽なのと
Administratorというツールが素敵だからだ。

大仕事にはなるけれど、一考していただけたらこれ幸いです。
255サザエボン:2009/10/11(日) 18:33:06
>>253
MySQLでお勧めなツールは

ビジュアルにデータベース設計できるこれ Accessじゃすでにお馴染み
http://www-jp.mysql.com/products/workbench/

そして、さっき話してた奴
http://dev.mysql.com/downloads/gui-tools/5.0.html

ODBCドライバ
http://dev.mysql.com/downloads/connector/odbc/5.1.html
256サザエボン:2009/10/11(日) 18:34:41
>>253
ただ、MySQL Migration Toolkitはちょっといい加減な部分もなくはない。

たとえば、テキスト型とメモ型をはき違えるケースもあったりするので、こちらでそれを
手修正するケースも実際あったりした。また、型の取り扱いがAccessとMySQLとでちょ
っと違うからここは勉強が必要。

ただ、概ね良好だから、お勧めできる。一度挑戦してみて欲しい。それくらいデータがあ
ると、かなりつかいでがありそうだ。
257サザエボン:2009/10/11(日) 18:36:07
>>253
あ、あと、もし、興味があって、一度挑戦してみたいというならば、手順はちょっと今まとめている。

よかったら、聞いてくれ。
258253:2009/10/11(日) 18:51:08
>>サザエボン
ありがとうございます。いきなりハードル上がった気がしますが、やるだけやってみます。
259サザエボン:2009/10/11(日) 19:04:08
>>258
いや、そんなに大変じゃないから。ちょっと時間は掛かるけれど。

ただ、同じ手法がAccess同士でも可能だ。

データが空で同じファイルを用意。空の方はオートナンバーのフィールドを用意
しておく。そのテーブルとリンクテーブルを貼って、データが入っている側のもの
を、追加クエリかなにかで、ごちゃっと渡してやる。

で、テキスト型を数値型に変換するほうは、解決できているなら尚結構。
260253:2009/10/11(日) 19:36:51
>>259
>で、テキスト型を数値型に変換するほうは、解決できているなら尚結構。
いや、テキスト型で7桁の番号を数値型に変換すると、例えば同じ番号100個くらい続くうち、
半分くらいが削除されてしまうんです。見た目には同じ番号が続くように
見えるのに。。ヘルプ見ても検索しても情報出てこないし。
56個同じ番号が続いて全部削除されてたり、60個のうち2個だけ削除されたり、
で結局120万件が64万件になるんですよね。長整数型→十進数にしても同じでお手上げです。
261名無しさん@そうだ選挙にいこう:2009/10/11(日) 20:01:04
>>260
事例
・全角・半角が入っていたり
・前後に空白があったり
・文字列のあとに枠外にスペースが
262サザエボン:2009/10/11(日) 20:42:15
>>260
重複有りにはなっているんだよね?あとは、そうだな・・・クエリで、Val関数をつかって
みて、そのクエリで移植をしてみるとかな。

Valに変換できなかったものの原因を探ればいい。>>261氏のいう問題点ってのがきっと
あるはず。
263253:2009/10/11(日) 21:01:37
>>261
>>262
いろいろとありがとうございます。重複はありです。空白や半角はチェックした
つもりですが、valやってみます。
264名無しさん@そうだ選挙にいこう:2009/10/12(月) 03:14:51
>>253
苦労されてるみたいですね。
Accessはファイルサイズが2GBまでしか扱えません。
500MBあるファイル内で今回のようなことを行うと上限にぶつかる可能性があります。

この問題を回避するために、こんな方法はいかがでしょうか?
1.新しい空のmdbファイルを作成する。
2.そのファイル内に変換元ファイルのテーブルへのリンクを作る。
3.作ったリンクを元に[テーブル作成クエリ]を作る。
4.クエリを実行する。
※クエリをデザインする際は、テキスト型から数値型に変換を行うフィールドについて
Val([フィールド名]) としておいてください。(詳細はVal関数でヘルプを参照)

これで新しいファイルに希望されるテーブルが作成されるはずです。
その他、元ファイルにある変換不要なテーブルは新しいファイルに直接インポートします。
すべての作業が終われば、500MB以下に最適化された状態のファイルができるはずです。
265253:2009/10/12(月) 04:32:30
>>264
できました、というかできそうです。
新しくきれいなデータベースを変換、インポートながら作っていく感じでやれば
いいんですね。ありがとうございました。
266サザエボン:2009/10/12(月) 08:09:59
>>265
ただ、いずれにせよ、もうかなり上限に近い状態なので、これ以上データを
蓄積するなら、移行したほうが望ましいというのはあるので、MySQLも一考
していただけたらと。

フリーだしね。

なにかのきっかけで、MDBが壊れたら目も当てられないので。
267名無しさん@そうだ選挙にいこう:2009/10/12(月) 09:34:44
一考するならSQLServerExpressEditionへのアップサイジングだろ
268名無しさん@そうだ選挙にいこう:2009/10/12(月) 10:10:18
正気かよ
269名無しさん@そうだ選挙にいこう:2009/10/13(火) 11:06:29
スレ違いかもだけど、知ってたら教えてください。
サーバ(Windows Server 2003)にACCESS2000が入っており、そこにMDBを置いています。
別PC(Windows XP Home Edition SP3)で前述のMDBを開いた場合、通常はXPマシンのタスクとして
実行されますが、サーバのタスクとして実行したい場合どのような方法がありますか?
(MDBで処理するデータ件数が多いので、ネットワークに負荷が掛かることを懸念しています)

思いついたのは以下の方法ですが、諸事情により実現できません。
 1.リモートデスクトップでサーバに接続して実行(ネットワークの規約でポートを閉じているので不可)
 2.サーバにMDBを実行するタスクを作成してネットワーク経由で実行(ユーザの権限の制約により不可)

サーバを直接操作してMDBを開くしかないのでしょうか。
270名無しさん@そうだ選挙にいこう:2009/10/13(火) 12:14:59
>>269
アクセスにはサーバー機能はありませんから、
1が駄目ならサーバー機を直接操作するしか方法はないです。
271269:2009/10/13(火) 14:21:25
>>270
ご回答ありがとうございました。
その後スクリプトなどについても調べてみましたが、やはりサーバを直接操作するしかなさそうですね。
しばらく直接操作で運用してみます。
272名無しさん@そうだ選挙にいこう:2009/10/13(火) 19:05:47
■OS:WinXP SP2
■Access:Access2007
質問させてください。

フォームに非連結コントロールを貼り、サブフォームにデータシートビューを表示させています。
メインフォームからサブフォームのカレントレコードを移動させたいのですが、どのようにしたら
よいでしょうか。

よろしくお願いいたします。
273名無しさん@そうだ選挙にいこう:2009/10/13(火) 19:20:31
質問です!
Access2003です。

コンボボックスを二つ作り
コンボ1のAを選ぶとコンボ2の表示が1に対応したものしか表示しないようなものを作ったのですが

有給申請書なので選ぶ順番は人それぞれで

上記の逆のパターンも設定できたらなと思うのですが

出来るのでしょうか?
274名無しさん@そうだ選挙にいこう:2009/10/13(火) 21:00:11
>>272
単純な移動だけなら、Docmd.GoToRecordで。
検索っぽくするなら、また別の話
>>273
出来る。たぶんVBA使うことになる。
275名無しさん@そうだ選挙にいこう:2009/10/13(火) 21:12:12
>>274
ありがとうございます

やり方としては、今作ってあるのをそのままにして
コンボ1にはコンボ2の記述
コンボ2にはコンボ1の記述って感じでよろしいでしょうか?

この二つのボックスでどちらを選んでも絞込みが出来るようにしたいと
思っています
276274:2009/10/13(火) 22:03:51
>>275
概ねそれでいいのだけど、ちょっと困ったこと起こるかも知れない。
それはそれで考えてみるがよろし。
277名無しさん@そうだ選挙にいこう:2009/10/13(火) 22:07:10
>>276
明日会社でやってみます。

困ったことが起こって行き詰ったらよろしくお願いします。
278名無しさん@そうだ選挙にいこう:2009/10/13(火) 23:35:47
>>277
お 断 り し ま す 。
279名無しさん@そうだ選挙にいこう:2009/10/14(水) 00:23:48
任意のフィールドでソートを実行すると、レコード件数が倍近くに
増えるんですけど、何が考えられますか?
280名無しさん@そうだ選挙にいこう:2009/10/14(水) 01:33:17
>>279
ソートの実行後にフィルターしてた条件が外れてるんじゃない?
281名無しさん@そうだ選挙にいこう:2009/10/14(水) 01:54:31
>>280
フィルターはもともとかかってないようです泣
282281:2009/10/14(水) 02:59:41
自己レスです フィルタ、ソートなしの状態でテーブルに表示されている
レコード以外のレコードが、ソートをかけたときにわらわらと
現れて結果としてレコード数が倍になっているようだ、
というところまで判明しました
283名無しさん@そうだ選挙にいこう:2009/10/14(水) 08:12:39
>>282
2007SP2だろ?
284281:2009/10/14(水) 09:27:12
そうです 不具合ですか?
285名無しさん@そうだ選挙にいこう:2009/10/14(水) 09:39:17
>>284
一度MoveLast しないとレコードカウントが得られないのは仕様だから不具合ではないが…
従来よりも想定外の挙動が表面化しやすくなった
286272:2009/10/14(水) 10:12:52
>>274
ありがとうございます。
検索して指定したいのですが、どのような方法があるのでしょうか。
287名無しさん@そうだ選挙にいこう:2009/10/14(水) 14:06:17
288274:2009/10/14(水) 14:35:43
>>286 BookMarkを使う
サブフォームのレコードセットをRecordsetCloneプロパティで取得
取得したレコードセットでFindメソッド使って検索、BookMark取得
NoMatchがFalseなら、
取得したBookmarkをサブフォームのBookMarkプロパティに代入

Findメソッドは4つあるから使い分けな
検索結果が複数行になるなら、Filterのほうがいいかもな
289名無しさん@そうだ選挙にいこう:2009/10/14(水) 15:43:33
環境 Windowsxp / Access2003

レポートに関して教えてください。

レコードソースにテーブルを指定し、フィルターして印刷をする。
1レコード1ページというレポートを作成しています。

その中で、フィールド1の値が"AAA"の場合は、テキストボックス1を表示、
フィールド1の値が"BBB"の場合は、テキストボックス1を非表示にしてテキストボックス2を
表示させるとか、各ページ(レコード)のデータに合わせてコントロールを操作させる方法が
ありましたら教えてください。
290名無しさん@そうだ選挙にいこう:2009/10/14(水) 16:28:00
すません、ファイルのデータ(最大 1,000件程度)をACCESSのテーブルにインポートするとき、
元ファイルはCSVとエクセルどちらのが便利ですか?
環境はWindowsXP + ACCESS2000です。

大差ないかも知れませんが、なんとなく気になりました。


>>289
VBAできるならそのレポートの詳細のFormatイベントなどで
フィールド1の値を判定してテキストボックス1&2の表示/非表示を切り替えたらいいです。
291名無しさん@そうだ選挙にいこう:2009/10/14(水) 16:36:17
>>290
便利の定義が分からんからなんとも言えん。俺的にはデータ次第。

Excelファイルは表示形式が有効でもあり厄介でもある。
有効なのはデータ型の設定がきちんとしていれば不要なこと。
厄介なのはデータ型の設定がきちんとしたExcelファイルでない場合、
例えば日付を文字列として読み込むことがあること。
292名無しさん@そうだ選挙にいこう:2009/10/14(水) 19:06:12
>>289
条件付き書式でいいじゃないか
293272:2009/10/14(水) 21:45:58
>>288
ありがとうございます。
下記のようにしてみましたが、移動してくれませんでした。
何か足らないでしょうか。

[レコード更新SQL発行]
Me.SubForm.Requery
Dim rsSub As DAO.Recordset
Set rsSub = Me.SubForm.Form.RecordsetClone
rsSub.FindFirst "ID = " & m_CurrentID
If Not rsSub.NoMatch Then
Dim bm As Variant
bm = rsSub.Bookmark
Me.SubForm.Form.Bookmark = bm
End If
Set rsSub = Nothing
※「SubForm」はサブフォームの名前です。
※NoMatchのif文内に入ることも確認しました。
よろしくお願いいたします。
294名無しさん@そうだ選挙にいこう:2009/10/14(水) 22:42:19
質問です。

環境 WinXP/access2007

テキストボックスが2つあるとします。

テキストボックス1にフォーカスがある時にキーを押した時、
キーダウンの処理の前に、テキストボックス2にフォーカスを
移動させたいのですがどうすればいいでしょうか?

よろしくお願いします。
295名無しさん@そうだ選挙にいこう:2009/10/14(水) 22:48:49
キーダウンの処理って、具体的には何?
296294:2009/10/14(水) 22:51:53
294の追記です。

もしテキストボックス1がフォーカスを持っていたら
テキストボックス2にフォーカスを移動
キーダウンの処理

というようにしたいです。
297名無しさん@そうだ選挙にいこう:2009/10/14(水) 22:59:35
テキストボックス1のキークリック時イベントに下記VBAかマクロを設定する

--------VBA--------
Private テキストボックス1_KeyDown(KeyCode As Integer, Shift As Integer)
 Me.テキストボックス2.SetFocus
 キーダウンの処理
End Sub

--------マクロ-----------
コントロールの移動
 テキストボックス2
キーダウンの処理
298294:2009/10/14(水) 23:01:45
>>297
ありがとうございます。
ただ、テキストボックスやリストボックスにフォーカスがあるかどうか
調べる方法はないでしょうか。
299名無しさん@そうだ選挙にいこう:2009/10/14(水) 23:03:40
Me.ActiveControl
300294:2009/10/14(水) 23:08:45
>>299
出来ました。
ありがとうございました。
301274:2009/10/15(木) 01:36:33
>>293
293のコードで作動確認できた
BookMark使えないレコードセットもあるらしいから、これが原因やろか
Bookmarkableで可否確認は可能。
BookMark使用は必須ではないから>>287のリンク先参考も試してみれよ

更新したレコードに移動ってのをしようとしてるんか?
ま、そうであっても動作してるけども。
302272:2009/10/15(木) 10:12:47
>>301
わざわざ試してもらってありがとうございます。

作動確認できたのですか...
287さんのリンク先は、サブフォームの移動ではなく検索方法に見えるのですが、間違って
いるのでしょうか。

確認できたファイルをいただけたら最高なのですが...
ご検討いただけないでしょうか。
303名無しさん@そうだ選挙にいこう:2009/10/15(木) 11:18:35
2バイト文字を使用して名前付けをされたユーザー定義関数をクエリで呼び出した時の未定義関数エラーについて
Utilitya.mda を自動参照しているために起こる公式バグらしいです
ところが参照設定をみても Reference を使って監視しても出てきません

恒常ループかなにかで自動参照したら適宜キルしようと考えたのですが、どうしたら検知できますでしょうか
あるいはエラー回避する方法ありますか
304名無しさん@そうだ選挙にいこう:2009/10/15(木) 13:05:34
オブジェクト名に日本語は積極的に使ってるほうだけど
さすがに落とし穴が掘ってあるとわかってる場所は歩かないよ
305名無しさん@そうだ選挙にいこう:2009/10/15(木) 13:42:11
>>304
業者に委託した部分で勝手に直せないとゆー罠に会社がはまったので

最終手段として、呼び出す際に別のプロシージャ噛ませようかとは考えてますが
306名無しさん@そうだ選挙にいこう:2009/10/15(木) 14:55:53
だったら業者に
307274:2009/10/15(木) 15:52:31
>>302
287のリンク先はフォーム上のカレントレコード移動であって、同じだよ。
これで出来なければ別の原因があると思う。
移動は出来てるけど、どっかでRequeryしちゃってるとか

>ご検討いただけないでしょうか。
割と基本的な内容と思うので検討に値しない。
理解を深めれば解決できるレベルにあると思う。まぁがんばれ
308名無しさん@そうだ選挙にいこう:2009/10/15(木) 16:58:21
>>306
出来るならそうするけどね、会社としてそもそも検討してないみたい


しかし使えとゆう
309名無しさん@そうだ選挙にいこう:2009/10/15(木) 20:08:23
WindowsXPSP2、Access2003、Excel2003です。

サブフォーム「SF_AAA」に表示したデータを
保存場所「C:\」、ファイル名「BBB.xls」でエクスポートするのに

  DoCmd.OutputTo acOutputForm,"SF_AAA","Microsoft Excel(*.xls)","C:\BBB.xls"

と書いてますが、これだとワークシート名がサブフォーム名「SF_AAA」になってしまいます。
ワークシート名を指定する方法はありませんでしょうか?
「docmd.outputto エクスポート シート名」などでググっても分かりませんでした。

よろしくお願いいたします。
310名無しさん@そうだ選挙にいこう:2009/10/15(木) 20:32:34
>>309
その先の処理は、EXCEL VBAを使ってください
http://pc11.2ch.net/test/read.cgi/bsoft/1254055959/
311名無しさん@そうだ選挙にいこう:2009/10/15(木) 21:00:16
サブフォーム名を目的のシート名にすればいいじゃ〜〜ん
312名無しさん@そうだ選挙にいこう:2009/10/15(木) 22:31:51
>>303
> ところが参照設定をみても Reference を使って監視しても出てきません

そらそやろ。
アドインだから、参照設定と関係ないし。

Dim vbp As Object 'VBProject
Dim msg As String
For Each vbp In VBE.VBProjects
msg = msg & vbp.Name & vbCr
Next
MsgBox msg

検知ならこれで。
解除は知らん。
日本語の関数名なんて危ない橋よう渡らんわ。
313名無しさん@そうだ選挙にいこう:2009/10/16(金) 01:02:49
>>309
アクセスでエクセル制御するならここでかまわんだろ
誘導するのはエクセルVBA制御に話が及んでからじゃね

エクセルのライブラリを参照で読み込んで、データ一つごとにセルなりに渡せばおっけ
簡単なのは、テーブルなりクエリなりのデータを二元配列に格納して直接渡す

例えば2x5のデータを配列myexRenge(1,4)に格納して
ワークシート.シート.Range(“A1,B5“)=myexRange

あるいはアクセスで表示してるデータだけ該当セルに書き込んだり

エクセル側の制御はエクセルVBAだから、向こうだけどな
314名無しさん@そうだ選挙にいこう:2009/10/16(金) 01:08:31
もう面倒だからワードVBAでエクセル操作しとけや
315272:2009/10/16(金) 10:23:24
>>307
そうですか...ありがとうございました。
サブフォームだけ移動できないのがとっても腑におちないのですが、
がんばってみます。
316名無しさん@そうだ選挙にいこう:2009/10/16(金) 14:54:40
サブフォームのRecordSourceをくエリにでも焼きなおしてそのOBJをエクセルへ吐き出せばいいんじゃね
317名無しさん@そうだ選挙にいこう:2009/10/17(土) 15:48:01
ACCESS 2003 から 2007 へ移行してるんだけど
2003の条件付書式で設定できた背景等の「薄黄色」が
2007には無くて困ってる(選択できる色のパレット?に無い)
条件付書式の背景を数値で設定できたりする?
BackColor=10092543 みたいに

318名無しさん@そうだ選挙にいこう:2009/10/17(土) 15:52:14
おれはUIからだと無理だったんでVBAでやってる。

あの黄色、薄すぎず濃すぎずでいい色だよなw
319サザエボン:2009/10/18(日) 21:30:26
>>318
俺も大好き。
320名無しさん@そうだ選挙にいこう:2009/10/19(月) 02:27:33
実は俺も好きだった
321309:2009/10/19(月) 10:46:23
実は私も好きでした。

>>310-313
休みに入ってしまいレス遅くなりました。ありがとうございます。
[エクスポート(E)]ってボタンをクリックすると
Excelにエクスポートされるようにしてるんですが、
AccessVBA側に「エクスポートされたExcelファイル」側の処理を書く
ってのがよう分らんので、とりあえず現状のままで行くことにします。
支障があればサブフォーム名を目的のシート名にすることも検討します。

ありがとうございました。
322名無しさん@そうだ選挙にいこう:2009/10/20(火) 00:48:41
表形式で入力する時に新規レコードを上に追加する事ってできませんか?
323名無しさん@そうだ選挙にいこう:2009/10/20(火) 02:07:01
できない。てか、質問内容がわかりにくい。
フォームヘッダに新規入力用のフィールド作ったらいいんじゃね
そんで、Insert後ソートするみたいな。こういうことか?
324名無しさん@そうだ選挙にいこう:2009/10/20(火) 10:26:31
>>312
トンくす

検知出来ました



解除出来ねえ……

VBライブラリだと再読み込みとかあるらしいんだがACCだけじゃむりぽいなあ
325名無しさん@そうだ選挙にいこう:2009/10/20(火) 19:35:31
>>323
データシートとか表形式のフォームで入力する時って、
新規に入力する時に下に空欄レコードが追加されるじゃないですか。
それを上へ上へ追加できれば、フォーム開いた時にわざわざ下にスクロールして入力する必要も無くなるかなと思って。
326名無しさん@そうだ選挙にいこう:2009/10/20(火) 21:46:33
モニタの前で逆立ちしてろや
327名無しさん@そうだ選挙にいこう:2009/10/20(火) 22:19:27
>>325
代替案が>>323に書いてあると思うのであった
328名無しさん@そうだ選挙にいこう:2009/10/21(水) 04:39:31
329名無しさん@そうだ選挙にいこう:2009/10/21(水) 07:41:05
どれかかな
1.追加 → ソート更新
2.追加 → 追加順でクエリソート
3.常にレコードが1のテーブルAに上書き → AとマスターデータテーブルBを合体した目的のデータテーブルCをゲット
→ CをBとして更新
4.全レコードずらす → レコードの頭に上書き追加

最後のはDAOだかなんだかでレコード制御すると楽
330名無しさん@そうだ選挙にいこう:2009/10/21(水) 08:10:29
よく読んだら違うな

データにオートナンバーでも付けといて、フォームのデータソースで並び替えるだけだな
331名無しさん@そうだ選挙にいこう:2009/10/21(水) 08:20:37
>>325
フォーム開くときに、新規レコードにジャンプ
332名無しさん@そうだ選挙にいこう:2009/10/21(水) 15:13:04
普通に入力専用フォームにする・・・では駄目なのか?
333名無しさん@そうだ選挙にいこう:2009/10/21(水) 19:33:32
色々ありがとうございます。
334名無しさん@そうだ選挙にいこう:2009/10/21(水) 21:28:55
質問です。

windowsXP/access2007
複数の値を許可してあるフィールドの値を
別のテーブルに取り出す処理をしているのですが
「rs!フィールド名」だと型が一致しませんと
言われます。

どうしたらいいですか?
335名無しさん@そうだ選挙にいこう:2009/10/21(水) 22:21:45
お願いします。
アクセス2003使用しています。

アクセスから、予め用意しておいたエクセルの任意のレンジに
レコードセットを出力しています。

(したいこと)
レコードセットの件数に応じて、
件数が多く複数ページにまたがるなら
用意しておいたエクセルの上数行(ヘッダやフィールド名)を
次のページにも表示させたい。

どうかよろしくおねがいします!
336名無しさん@そうだ選挙にいこう:2009/10/21(水) 22:27:07
ま た お ま え か
337名無しさん@そうだ選挙にいこう:2009/10/21(水) 22:45:40
えらそうに間違った回答して講釈たれてる人がいるので紹介します。

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1131973031
338名無しさん@そうだ選挙にいこう:2009/10/21(水) 22:48:55
型を一致させたら?
339名無しさん@そうだ選挙にいこう:2009/10/21(水) 23:04:52
>>335
とりあえずACCESSのことはほっといて、EXCEL側で

> 用意しておいたエクセルの上数行(ヘッダやフィールド名)を
> 次のページにも表示させたい。

これをできるやり方はわかりますかね?
「ウィンドウ」−「ウィンドウ枠の固定」でできるはずです。

そこから先はACCESS側からデータを流し込むだけでいいはずです。
340名無しさん@そうだ選挙にいこう:2009/10/21(水) 23:45:57
>>334
格納されている複数の値は該当フィールドのValueプロパティから一時的な
レコードセット作ってループさせて列挙
341名無しさん@そうだ選挙にいこう:2009/10/22(木) 01:03:05
>>335

どう考えてもAccessの質問じゃないだろ

2003までのExcelならメニューのファイルからページ設定、
2007ならページレイアウトの印刷タイトルからタイトル行を設定

次からは書き込むスレをよく考えろよ
342名無しさん@そうだ選挙にいこう:2009/10/22(木) 01:30:07
まあそうカリカリしないで・・・

あなたのレベルならどちらで質問すべきか判断できるでしょうけど
そうでなければこういう質問はどっちに書いていいかわからなくても
仕方ないと思いますけどね。
343名無しさん@そうだ選挙にいこう:2009/10/22(木) 04:07:01
選択クエリのフィールドのところで型変換するような式や関数を使い、
その下の抽出条件で型変換後の条件を指定すると型不一致のエラーが
出ると思いますが、対処方法はありますか?
344名無しさん@そうだ選挙にいこう:2009/10/22(木) 04:41:58
>>343
引数にキャストできない範囲が含まれてるんじゃね
345名無しさん@そうだ選挙にいこう:2009/10/22(木) 12:57:39
>>344
何度も確認しましたがたぶん大丈夫なんですよね・・
346名無しさん@そうだ選挙にいこう:2009/10/22(木) 14:08:50
>>343
変換前のデータを抽出してから変換してんじゃね
347344:2009/10/22(木) 14:34:44
>>343のやりたいクエリはできるので、変換できないフィールド値を
含むレコードがあるのではないだろうか。
変換結果を情報関数で確かめるのがよいかと。
348名無しさん@そうだ選挙にいこう:2009/10/22(木) 14:37:14
>>346
たぶんそうだと思います。抽出は返還後のデータ型に対して
行いたいのですが、抽出条件は返還前のデータ型に対して働くのでは
ないかと思います。変換してそのまま抽出するにはどうしたらよいですか?
349344:2009/10/22(木) 14:58:46
>>348 なんだってーって感じしたからシンプルなもので確認した
text型フィールドに 2009/10/22,2009/10/23 要は文字列
クエリフィールド:式1: CDate([txtdatestr])
抽出条件:#2009/10/22#
とした場合、2009/10/22(文字列)のレコードは抽出され、出力フィールド値はDate型

抽出条件を"2009/10/22"とした場合も同様、ただこれはAccessが勝手に解釈してると思う
350名無しさん@そうだ選挙にいこう:2009/10/22(木) 15:06:20
抽出条件も同じ関数組み込めばいいんじゃね
351名無しさん@そうだ選挙にいこう:2009/10/22(木) 15:20:32
抽出条件でデータ型が一致しませんっていうアラートだと思うので
抽出条件入れずにクエリ出力してみればいいんじゃね
#エラーってレコードあったら、Whereあたりでクエリ実行時にエラーになる。
352名無しさん@そうだ選挙にいこう:2009/10/22(木) 15:51:07
目的の元データと型、クエリのSQL貼ってくれると解りやすいかも
クエリ右クリックSQLビューで確認できる
353348:2009/10/22(木) 15:54:01
レスありがとうございます。
関数は文字列を引数にして一部Replaceで入れ替え
Valで数値にしてDoubleで戻す単純なものです。
抽出条件なしだとうまく変換できており、エラーはありません。
仕方がないので関数のみ抽出条件なしのクエリを作り、
そのクエリに対し抽出条件のみの
別のクエリを施行することで回避できました。
抽出条件に関数を組み込んでも同じでした。一気にできると便利なんですが。
354名無しさん@そうだ選挙にいこう:2009/10/22(木) 16:15:14
ちょっと複雑なことするとクエリがへそ曲げるって感じだねぇ
多段でクエリ組んだ回避策ってことか
355名無しさん@そうだ選挙にいこう:2009/10/22(木) 16:23:40
>>353記述の関数で試してみたけど、期待通りの動作してるけどなぁ
CDbl(Val(Replace([フィールド1],"#","0")))
環境に由来かなぁ:access2007-SP2
356名無しさん@そうだ選挙にいこう:2009/10/22(木) 17:17:58
Windows XP+ACCESS 2000なのだが、

テーブルA(EXCELからインポート)のレコードを全件テーブルBに新規追加するとき、SQL文は
 "insert into テーブルB select 項目A,項目B, ... from テーブルA"
を1回発行するだけでOKなのだが、
テーブルAには無い項目がテーブルBにありその項目(数値型でオートナンバー型は使えない)に
1からカウントアップした連番をセットしたい場合、SQL文の1回発行では無理?
やっぱりVBAでテーブルAのレコード分ループしなきゃいけない?

VBAでカウントアップ用グローバル変数を用意して、そいつをカウントアップして連番を返す関数を作って
SQL文に埋め込んでみたんだが、レコードごとにカウントアップできなかったヨ...orz

あと、試しにテーブルAにオートナンバー型の項目を追加してみたんだが、
EXCELからインポートしたときインポートできなかったレコードが発生してね...orz
(テーブルAに主キーを設定していないから謎)


>>291
ありがd、遅レスすまそ

>>343
男は黙ってクエリを分けれ。
357348:2009/10/22(木) 17:38:06
>>352一応載せます
SELECT DISTINCT tableA.fieldA, tableA.fieldB, tableB.fieldC,
Dokuji_Kansuu([tableA]![fieldD]) AS AAAA, tableC.fieldE,
tableC.fieldF, Replace([tableC]![fieldG],1,2) AS [BBBB],
tableD.fieldH, tableD.fieldI, DateAdd("yyyy",7,DateValue([tableC]
![fieldE] & "/" & [tableC]![fieldF] & "/" & [BBBB])) AS CCCC,
DateDiff("d",[CCCC],[tableA]![fieldB]) AS DDDD, Format([fieldB],
"yyyy/mm/dd") AS EEEE FROM (tableB INNER JOIN (tableA INNER
JOIN tableC ON tableA.[fieldA] = tableC.[fieldA]) ON tableB.
[fieldJ] = tableA.[fieldK]) INNER JOIN tableD ON tableA.[fieldA]
= tableD.[fieldL] WHERE (((tableA.fieldB) Is Not Null) AND
((tableB.fieldC)="FFFF") AND ((tableC.fieldE) Is Not Null));
これで先のDokuji_kansuuによりtableAのfieldD(文字列)が数値に変換されるのですが、
抽出がどうも(他のフィールドでも)・・リレーションのせいかな??
ac2007sp2です
358名無しさん@そうだ選挙にいこう:2009/10/22(木) 18:37:01
質問です。Accessで在庫管理ができると知りましたが(XP/Access2003)
ネットショップ(楽天・アマゾン)の在庫数を直接操作(データ送信)できるのでしょうか。取得のみですか?
お願いします。
359名無しさん@そうだ選挙にいこう:2009/10/22(木) 18:55:47
回答です。Accessで在庫管理アプリケーションを作成することはできますが、
ネットショップ上のデータを直接操作できるかどうかはここではわかりません。
ネットショップ運営者に問い合わせください。
お願いです。
360名無しさん@そうだ選挙にいこう:2009/10/22(木) 19:03:18
>>359
了解です。常識的に考えてローカル上の操作だけですよね。
ありがとうございました。
361360:2009/10/22(木) 19:05:02
あ、すみません。語弊があるかもしれません。
セキュリティの都合上という意味です。
362名無しさん@そうだ選挙にいこう:2009/10/22(木) 20:50:09
次は問題が再現する最小構成まで削る作業だな
363名無しさん@そうだ選挙にいこう:2009/10/22(木) 20:59:02
>>356
> VBAでカウントアップ用グローバル変数を用意して、そいつをカウントアップして連番を返す関数を作って
> SQL文に埋め込んでみたんだが、レコードごとにカウントアップできなかったヨ...orz

関数に引数渡し忘れてるだけじゃねえのか。
364名無しさん@そうだ選挙にいこう:2009/10/22(木) 21:20:05
お忙しいなか、申し訳ありません。


ひとつのテーブルの中にA〜Gの7つのフィールドが用意されています。それぞれに値
が入っており、それが1レコードだけ入っています。

このテーブルのレコードを指定回数だけ、演算させて、その結果を2レコード目、3レコード
目と指定回数に応じてインサートしたいと思っています。

どのようなコードを書けば、1レコード目にいれたものを演算して、指定回数分結果をレコード
に追加できるでしょうか?
365名無しさん@そうだ選挙にいこう:2009/10/22(木) 21:51:08
解るように具体的に書けよ
366名無しさん@そうだ選挙にいこう:2009/10/22(木) 22:04:18
発想がExcelだな。
367名無しさん@そうだ選挙にいこう:2009/10/22(木) 22:35:13
>>365
具体的には1レコード目には、現在の財政状態を入れてあります。

Aには現金 Bには営業費 といった具合にGまで様々な要素を入れてあります。これは
フォームから入力するようにしてあります。そして、10ヶ月なら10とテキストボックスに
入れてその値を指定回数として使いたいと思っています。

テーブルの名前はshikinとなっています。

この状態でボタンを押した場合に2レコード目以下に1ヶ月後の予想、2ヶ月目の予想を
次々と10ヶ月分予想値として1行目のレコードをベースに演算して入れたいと思ってます。
このあとそのテーブルを元にグラフを構築したいと考えております。

演算の式はつくってあるのであとはこれを指定回数だけ廻して入れるためにはどうしたら
良いのかよくわかりません。
368名無しさん@そうだ選挙にいこう:2009/10/22(木) 22:40:48
Accessではそのような演算結果はテーブルに格納させるべきではありません
Excelならすぐできます。
369名無しさん@そうだ選挙にいこう:2009/10/22(木) 22:42:01
ああほんとこりゃエクセルだな

アクセスは基本的にエクセルで言うところのオートフィルだと考えれ
セルに入れたデータは必要のある時だけ修正、それ以外は全部抽出するもんだ
目的に合うデータを計算したり加工したりする
370名無しさん@そうだ選挙にいこう:2009/10/22(木) 22:43:41
>>337
TWESTさんが別アカ取って反撃してますよ
371名無しさん@そうだ選挙にいこう:2009/10/22(木) 23:06:18
http://lotte-fits.jp/dance/play_dance.php?v=7m58J5-N0Dw
accessの新曲公開!?に、ちなんで最新情報♪
372名無しさん@そうだ選挙にいこう:2009/10/22(木) 23:18:44
>>367
桐にしとけ
373名無しさん@そうだ選挙にいこう:2009/10/23(金) 09:53:24
>>372
「桐にしとけ」か……久しぶりに聞いたぜ
俺達はそんな大切なことも忘れていたんだな……


桐にしとけ
374356:2009/10/23(金) 10:26:09
>>363
レスども。
カウントアップ関数は引数無しで、関数内でグローバル変数をカウントアップしてその値を
返すようにしているのだす。
で、SQL文をクエリに貼り付けて実行してみたんだが、関数の結果が出る項目の値は全項目同じで、
クエリを実行するごとにその項目がカウントアップされることを確認・・・関数ってレコードごとに
実行されると思ってたもんだから「?」なんだが・・・ちなみに以下がカウントアップ関数のコードです。

' グローバル変数
Private gNo As Integer ' カウントアップ用

'
' カウントアップ用変数をカウントアップ
'
Public Function getNo() As Long
gNo = gNo + 1
getNo = gNo
End Function
375名無しさん@そうだ選挙にいこう:2009/10/23(金) 10:35:23
>>374
SQL UPDATE に入れたのか?
大抵は正しい連番が返るんだが、もちろん保証されない

順番が保証されるレコードセット回す方法でSQLと大差ないスピードで出来るぞ
Me.Recordset.Cloneを使う
アクセスの中の人は同じことしてるから

桐にしとけば簡単
376374:2009/10/23(金) 11:27:52
>>375
レスども。
関数はINSERT文のSELECT句に入れてました。
 insert into テーブルA select getNo() as [NO],項目A,項目B,項目C FROM テーブルB
てな感じで。
これがまずいのかなぁ...orz

言われてみればACCESS内だからSQL文で実行してもレコードセットをくるくる回しても
処理速度は大差ないですよね
(DBサーバのORACLEとかSQL SERVERだとレコード件数次第で事情が変わると思うけど)、
おとなしくレコードセットをくるくる回します、ありがとうございました!

PS.桐、一度見てみたいかも。
377名無しさん@そうだ選挙にいこう:2009/10/23(金) 18:12:09
>>376
getNo関数の戻り値はLong型なんだけど、テーブルAのフィールド[NO]は
きちんと長整数型(Long型)になってます?
378名無しさん@そうだ選挙にいこう:2009/10/23(金) 19:54:10
if
379367:2009/10/23(金) 19:56:25
>>372
>>373
>>369
>>368
絶望しました

演算結果を部署毎にいくつか期間毎に保存し比較しようと思ったのですが、駄目なのですね。
380名無しさん@そうだ選挙にいこう:2009/10/23(金) 20:09:44
>>379
演算結果を部署毎にいくつか期間毎に比較することは簡単にできますけどねぇ・・・
その場合でも>>364の方法は取らないのが普通です。
[集計クエリ]あたりで検索して、データベースの基本的な部分を学びましょう。
381363:2009/10/23(金) 20:30:26
>>374
いやだから、引数渡し忘れてるだろそれ。
引数を渡さないといけないという基礎知識が抜けているのか?

JETはアホじゃないから、引数を取らない関数の戻り値は毎回
同じという前提で最適化して、1回だけ呼び出した関数の戻り値を
以後再利用する。T-SQLで言うところの決定的関数扱い。だから、
レコードごとに実行させたい関数の呼び出しには、必ず引数を
渡す必要がある。仮に関数内部ではそれを使用しないとしても。
慣例的には主キーを渡すのが一般的。

もし主キーを引数に渡してカウントアップされないのなら、
別の問題だから、再現方法を晒せ。
382375:2009/10/23(金) 21:55:56
>>374
じゃ、一応JETが進化する前のAccess97までは順番保証された方法
ドゾー

http://support.microsoft.com/kb/410756/ja
383名無しさん@そうだ選挙にいこう:2009/10/23(金) 22:34:40
>>381 これだと行けてそれだと行けない、と。
理詰めで当てるのは難しそうだ
384名無しさん@そうだ選挙にいこう:2009/10/24(土) 08:04:09
もうやめて、revreselqaesのライフはゼロよ!

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1131973031
385名無しさん@そうだ選挙にいこう:2009/10/24(土) 18:09:00
ご教授願います。

表の結合時に"left join"や"right join"を使用しますが、
joinの前に"outer"を付けて保存したいです。
しかし、"outer"を付けて保存し、再度開くと自動的に省略されます。
何か設定方法はご存知でしょうか?

使用Access:2003
OS:XP
386名無しさん@そうだ選挙にいこう:2009/10/24(土) 18:21:47
>>385
accessがSQLを解釈して書き換えてるんだろうから、無理じゃね
387名無しさん@そうだ選挙にいこう:2009/10/24(土) 18:29:19
>>385
クエリを使うのではなく、VBAのレコードセット作成におけるRunSQLなどで使う
しかないのでは?

SQL文を直接書き込んでも、Accessが自動的に書き直してしまうと思うので。
388名無しさん@そうだ選挙にいこう:2009/10/24(土) 20:22:54
>>386->>387
ご返答ありがとうございます。
Accessの仕様である旨、了解しました。
解決方法があると思ったのですが…orz

VBAはあまり知らないので勉強します。
389名無しさん@そうだ選挙にいこう:2009/10/25(日) 17:20:26
すいません、質問させてください。

【 システム環境  . 】 WindowsXP   Access2002
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否

08001:[ODBC SQL ServerDriver][SharedMemory]SQL Serverが存在しないか、アクセスが拒否されました。
ODBCWorkspace(17)
01000:[ODBC SQL ServerDriver][SharedMemory]ConneectonOpen(vonnectl)
ODBC呼び出しが失敗しました。
DAO,Workspace(3146)

(共通モジュール/SetConnect)

というエラーがでてしまい、開けなくなりました。このエラーはどういったエラーなんでしょうか。
390名無しさん@そうだ選挙にいこう:2009/10/25(日) 17:38:18
AccessからSQLサーバ上のデータを開こうとして、
SQLサーバーが開けない(起動していない?)か
アクセス権がない(ユーザー名やパスワードが違う)ので
開けないですよ。

という意味みたいですけど。
MDBじゃなくて外部のDBと接続する環境なんでしょうか?

だったら外部DBの問題の可能性も。
そうでないなら、MDBファイルを開くように設定しなおすとか。
391名無しさん@そうだ選挙にいこう:2009/10/25(日) 18:15:42
>>389
正常に動いていたものが動作しなくなったということですよね?
モジュールSetConnectを変更したのでなければSQL Server側の問題ですよ。
392398:2009/10/25(日) 19:56:35
回答ありがとうございます。

>>390
エラー内容の解説ありがとうございます。SQL Serverがなんなのかもわからなくてググったりしていました。
折角説明してもらったのですが、すいません。よくわかってないです。>MDBじゃなくて外部のDBと接続する環境

>>391
そうですね、数日前までは普通に使用していたので、特に変更などはしていないと思います。
SQL Server側で何か設定しなおせば使えるのでしょうか。

393メモリ君 ◆7mDj3mSGOQ :2009/10/25(日) 20:26:44
>>392
よく見えないのだが、SQL Server側というけれど、それって遠隔地に
あるんじゃないのかい?それと、管理は別の方がやっているとか。

アカウント消されたとか、サーバーメンテナンスで止まっていたとか、
そういうのがわからんと。とりあえず、こちらが何もしていない、手も
加えていないのなら、SQL Serverで接続する際に何かがあったとみ
て間違いない。
394メモリ君 ◆7mDj3mSGOQ :2009/10/25(日) 20:30:10
>>392
ちなみに、MySQLでtestserverというODBC接続の設定をシステムDSNに作っていた
際に、MySQL側でアカウントを消しただけなら、ログイン画面が出るだけ。

一方停止していた場合には、ODBC接続 --testserver-- への接続に失敗しました
というメッセージが出るよ。

そちらは多分、ADPか何か使っているか、VBAでコネクトするような仕組みにしてある
んだと思うけれどね。
395名無しさん@そうだ選挙にいこう:2009/10/25(日) 20:48:22
[SharedMemory]ってローカルじゃね?
396名無しさん@そうだ選挙にいこう:2009/10/26(月) 17:44:34

【 システム環境  . 】 WindowsXP SP2とwindows Vista SP1, それぞれAccess2003 Runtimeのみ
【 VBAが使えるか .】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 Access2003 Runtime エラー 2709.内部エラーが発生しました

Access2003で開発した経理ソフトをAccess2003 RuntimeのみインストールされてるPCで動かしています。
今週入って、今までwindows updateをかけてなかったのでupdateかけれるものを全てかけて
経理ソフトを立ち上げましたら「Access2003 Runtimeを設定しています・・・」という画面が表示された後に
 エラー 2709.内部エラーが発生しました。
 (Global_PIA_OWC11 )
とOKボタンのみのエラーメッセージが出てきました。

OKボタンを押せばその後は問題なく経理ソフトが動くのですが、このエラー画面が気になり
エラー内容を検索かけてみた所、windows updateのKB947319をかけたら上記エラーが出るような旨出ていました。
ですが現在経理ソフトがインストールされているPCにはKB947319がインストール済の為に削除する事ができません。
他の検索結果では「Windows Installer CleanUpユーティリティ」でRuntimeをアンインストールしてインストールしなおすという
解決案も出ていましたが、このPCではユーティリティを使ってRuntimeをアンインストールしようとしてもエラー 2709~と同じエラー画面が出て
アンインストールする事も出来ませんでした。

このエラー画面を消す方法はあるのでしょうか?



397名無しさん@そうだ選挙にいこう:2009/10/26(月) 18:32:24
>>396
単なる推測だが、Fixitでどうよ。
398名無しさん@そうだ選挙にいこう:2009/10/26(月) 19:13:44
有る処理をしました。

結果、VMのサイズがスゴイことになりました。1.24GBもVMサイズがあり、メモリ消費も800Mも
あります。処理は終わったのに、これらが解放されません。

VBAではきちんと、レコードセットなどは全部nothingしているのに、プログラムを再起動しない
と、これらメモリが解放されません。

どうしたら、解放できるのでしょうか?
399396:2009/10/26(月) 19:50:23
>>397
Fixitで検索し、結果で探せたFixit(Windows Update のコンポーネントをリセット)
ttp://support.microsoft.com/kb/971058/en-us
を利用してみましたが問題解決はできませんでした。
400名無しさん@そうだ選挙にいこう:2009/10/26(月) 19:54:05
>>398
VMってなんのこと?仮想メモリ?
401名無しさん@そうだ選挙にいこう:2009/10/26(月) 19:57:03
>>400
そうそう タスクマネージャを見ると、一番右にでてくる奴。

この処理を行っている最中はどんどん膨らんでいく。

で、処理が終わっても、何も変わらない。

で、別の処理を行うとメモリ不足と吠えるという体たらくなのです。
402名無しさん@そうだ選挙にいこう:2009/10/26(月) 20:10:22
>>401
そこまではっきりわかるほど漏れてるならすぐデバックできるでしょ。
さっさとやれ。
403名無しさん@そうだ選挙にいこう:2009/10/26(月) 21:02:02
>>402
ところが、何がいけないのかさっぱりわからん。
このルーチンってのは、単純なもので、テーブルにあるデータをレポートで個別の
PDF作成するようにDo_Untilのループで100個ほどつくるもの。
PDFは2007のPDFプラグインによるもので、DoCmd を使う物。

DBEngine.SetOption dbMaxLocksPerFile, 200000 を指定した後に

Dim My_Db As DAO.Database
Dim My_Rst As DAO.Recordset
Dim My_Rst2 As DAO.Recordset
Dim My_Path As String

Set My_Db = CurrentDb()
Set My_Rst = My_Db.OpenRecordset("SELECT * FROM テスト ORDER BY 社員コード")
Set My_Rst2 = My_Db.OpenRecordset("SELECT * FROM 社員マスター WHERE (((社員マスター.レポート)=-1) AND ((社員マスター.経場コード) Between 100 And 200));")
My_Path = CurrentProject.path & "\pdf\"

Do Until My_Rst2.EOF
DoCmd.OpenReport "メール送信", acViewDesign, , , acHidden
Application.Reports("メール送信").Filter = "社員コード='" & My_Rst2!社員コード & "'"
DoCmd.Close acReport, "メール送信", acSaveYes
DoCmd.OutputTo acOutputReport, "メール送信", acFormatPDF, My_Path & "\" & My_Rst2!社員コード & ".pdf", False, 0
My_Rst2.MoveNext
Loop

My_Rst.Close: Set My_Rst = Nothing
My_Rst2.Close: Set My_Rst2 = Nothing
My_Db.Close: Set My_Db = Nothing

何か足りないのか?それとも、やり方を間違えているのか・・・・
404名無しさん@そうだ選挙にいこう:2009/10/26(月) 21:25:15
だから、普通にデバッグしろよ
405名無しさん@そうだ選挙にいこう:2009/10/26(月) 21:44:20
>>403

>DBEngine.SetOption dbMaxLocksPerFile, 200000 を指定した後に

たぶん、このせいだろう。ルーチンを抜ける前にMaxLocksPerFileを規定ぐらいに戻してみては。
406名無しさん@そうだ選挙にいこう:2009/10/26(月) 21:55:53
>>404
ちょっとやってみる。

>>405
一番最後に9500で指定を入れてみる

もう一回挑戦してみます。優しく教えていただき感謝です。
407名無しさん@そうだ選挙にいこう:2009/10/27(火) 07:50:32
PD……F?
408374:2009/10/27(火) 10:23:48
遅レスすまそ、知恵熱出てた。。

>>377 はい、LONG型になってます。
>>381 引数渡しの基礎知識が抜けていました、そういうことだったんですね!試してみます!!
>>382 参考にします。

皆さんありがとうございましたm(_ _)m
409名無しさん@そうだ選挙にいこう:2009/10/28(水) 13:48:38
すいません、質問させてください。
WindowsXP, Access2002

PCを起動すると起動すると最初に
重大なエラー。言語ごとのリソースファイルC:Program Files\MicrosoftSQL Server\
80\Tools\Binn\Resources\1041\SQLSVC.RLLを読み込めなかったので実行を継続できません。

と出たのですが、ググっても解決方法が載っていないままのサイトしか見つからず、途方にくれています。
どのようにすれば直るのでしょうか。SQLSVC.RLLっていうのはどこからかDLできるものでしょうか?
410名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:01:09
それ、Accessの問題っていうより、MicrosoftSQL Serverの問題なんじゃね?
411名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:07:25
>>410
Accessのファイルの一部が開けないのでAccessがおかしいのかなと思ってました。

\1041といフォルダは見つかったのですが、SQLSVC.RLLはありませんでした。
他のPCに入っているSQLSVC.RLLをコピーしてきてもいいものなのでしょうか?
412名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:15:30
重大なエラーと出ました。 <http://windowsxp_toshiba.pasokoma.jp/d_436151.html>

SQLSVC.RLLというのはMicrosoftSQL Serverというソフトの1部です。
スタート→ファイル名を指定して実行→msconfigと記入してOK。
システム構成ユーティリティのスタートアップまたはサービスに
SQL Server関連のものがあったらチェックを外して再起動してみてください。
コマンドと場所の間の縦棒をダブルクリックするとフルパスが見られます。

とのこと。
413名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:18:38
>>412
はい、自分がぐぐって見つけたサイトってそこのことです。
最終的に  SQL Server 何回か確認してやりましたけど元に戻らないです。
とあったので、もしかして直ってないまま終わっているのかとおもって質問させてもらっています。
414名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:22:39
教えて!保険市場 SQLServer2005のサービスが起動しない <http://oshiete.hokende.com/qa5186337.html>

まず、「スタート」→「すべてのプログラム」→「SQLServer2005」→「構成ツール」→「SQLServer構成マネージャ」の順に開いて下さい。

そうすると、SQLServerConfigurationManaerと言うのが開きますから、その中で、状態が停止のプログラムが無いでしょうか?

もしあれば、そのプログラムをダブルクリックしたらプロパティが出てきますから、「開始」をクリックしたら、実行に状態が変わります。

それで、動かなかったプログラムが動きました。

とかは?
415名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:26:30
>>414
ありがとうございます。試してきます!
416名無しさん@そうだ選挙にいこう:2009/10/28(水) 14:43:46
MSSQLSeverスレに行けというところだが、
行ったところで、ボケカス言われて解決しねぇかもだな。
417名無しさん@そうだ選挙にいこう:2009/10/28(水) 17:24:58
うん、ここの民は基本いい人。
418名無しさん@そうだ選挙にいこう:2009/10/28(水) 18:42:42
ウォームハートエスパーの棲むスレだな。
419名無しさん@そうだ選挙にいこう:2009/10/28(水) 22:49:21
そういう空気は大切にしないとな
420名無しさん@そうだ選挙にいこう:2009/10/28(水) 22:56:06
質問があります。
会社に行かないと物がないのと会社から書き込みできないので多少抽象的になってしまうこと
お許しください。

今帳票フォーム(ログイン)とメインフォームがあります
ログイン画面で社員番号を入れてログインボタンを押します。
番号が存在するならメインフォームが立ち上がるのですが、
この立ち上がると同時に、ログイン画面で入れた社員番号の情報を
メインフォームに載せたいと思っています。

入力した番号だけはメインフォームに参照させることが出来たのですが
その他に名前と部署をメインフォームのテキストボックスに入れたいのです。

ログインしたとき(入力は社員番号のみ)に社員情報をすでに表示したいと言うのが目的です。
テーブルは社員マスタの中に番号、名前、部署で主キーは番号です

よろしくお願いします
421名無しさん@そうだ選挙にいこう:2009/10/28(水) 23:07:22
>>420
Vlookup関数を使えばいいと思うよ〜〜
422名無しさん@そうだ選挙にいこう:2009/10/28(水) 23:08:10
DLookUpでしたw
423名無しさん@そうだ選挙にいこう:2009/10/29(木) 20:48:58
os:WinXp Version:2007です。
突然ですが、お聞きしたいのですが、

氏名  点数  週塾日
Aさん 50点  平成21年5月3日
Bさん 55点  平成21年6月1日



の様なテーブルがあり、そこから
たとえば、

年・月  月別習塾者  60点以上
21年5月   20人     10人 

のように作りたいのですが、月別の人数合計は出せても、
○○点以上の合計人数を出す方法がわかりません。
四苦八苦してやっても、それぞれの点数(60点、61点、62点)の
合計人数しか出せずに困っています。

どうにかなる方法ありませんでしょうか  
424名無しさん@そうだ選挙にいこう:2009/10/29(木) 20:58:08
>>423
あります!
425名無しさん@そうだ選挙にいこう:2009/10/29(木) 21:11:13
DCount("点数","21年5月",点数>59)

とかかな?
426名無しさん@そうだ選挙にいこう:2009/10/29(木) 23:11:58
>>423
SELECT format(#5/1/2009#,"e") & "年" & format(#5/1/2009#,"m") & "月"as 年・月, Count(テーブルA.氏名) AS 60点以上, (SELECT Count(*) FROM テーブルA WHERE
((テーブルA.週塾日) Between #5/1/2009# And #5/31/2009#)) AS 月別週塾者 FROM テーブルA
WHERE (((テーブルA.点数)>=60) AND ((テーブルA.週塾日) Between #5/1/2009# And
#5/31/2009#));
427名無しさん@そうだ選挙にいこう:2009/10/30(金) 19:38:01
Accessだけでメシ食えるの?
428名無しさん@そうだ選挙にいこう:2009/10/30(金) 20:14:42
>>427
飯食っている人いるんじゃない?

俺は、バイトで作ったことあるよ。
429名無しさん@そうだ選挙にいこう:2009/10/30(金) 20:22:45
けっこう中小では需要あるんね。
企業内で担当になっちゃう人もいるでしょ。
430名無しさん@そうだ選挙にいこう:2009/10/30(金) 21:29:13
20年前はコボルで食ってたけど気がつけば今はAccessが飯の種になってるな
431名無しさん@そうだ選挙にいこう:2009/10/30(金) 21:51:54
Accessってかなり作り込まないと実は使えないよな。
432名無しさん@そうだ選挙にいこう:2009/10/30(金) 22:06:12
2週間もあれば1本作れる。
433名無しさん@そうだ選挙にいこう:2009/10/30(金) 22:56:44
そんなにかかるのか?
434名無しさん@そうだ選挙にいこう:2009/10/30(金) 22:59:58
頭は使うが工夫次第で工数はどんどん削減していける
435名無しさん@そうだ選挙にいこう:2009/10/30(金) 23:41:09
>>433
業務で使うアプリはテストに時間がかかるからね。
436名無しさん@そうだ選挙にいこう:2009/10/31(土) 22:13:44
アプリっていえるのかどうかビミョー
437名無しさん@そうだ選挙にいこう:2009/11/01(日) 19:44:00
職場のシステムで出せる帳票が余りに使えないので、csvで落としたデータをAccessに取り込んで加工して帳票出してる。なんかまどろっこしい。
438名無しさん@そうだ選挙にいこう:2009/11/01(日) 20:24:38
XP+ACCESS 2000です。
加工前データに入数マスタを当てて加工後データのようにしたいんですが、ひとつのクエリで加工できますか?

加工前データ
 品名、数
 A 、5
 B 、2

入数マスタ
 N0、品名、入数
  1、A 、2
  2、B 、3

加工後データ
 品名、数
 A 、2
 A 、2
 A 、1
 B 、2

できそうでできないんです・・・ひらめいた方はぜひ教えてください、よろしくお願いします!
439名無しさん@そうだ選挙にいこう:2009/11/01(日) 20:57:41
>>438
総数5を入り数2で、2,2,1で分解、入り数未満はそのままっつーことだよな
その手の要件だったらVBAでレコードセット扱う感じじゃないかな。
クエリでできるんすかね。

>>437
可能な範囲でクエリ作るくらいじゃね?
440名無しさん@そうだ選挙にいこう:2009/11/02(月) 10:08:54
>>438
439が書いているように、join の結果をVBAで処理するのが
いいような気がする(自分ならそうするけどね)
441438:2009/11/02(月) 16:37:59
>>439
>>440
ありがとうございました、やはりクエリでは厳しいのでVBAでレコードセットを使ってやってみます。
442名無しさん@そうだ選挙にいこう:2009/11/02(月) 18:59:53
Access2007の評判はどう?
443名無しさん@そうだ選挙にいこう:2009/11/03(火) 00:06:24
>>442
MSの新作が糞なのは伝統ですよ。
444名無しさん@そうだ選挙にいこう:2009/11/03(火) 13:29:17
なんかレポート印刷できない。
他のテキストはできるんだけど、内容が重いのかな?
445名無しさん@そうだ選挙にいこう:2009/11/03(火) 15:44:55
日本語でおk?
446名無しさん@そうだ選挙にいこう:2009/11/03(火) 20:59:42
>>444
プレビューはできんの?
447名無しさん@そうだ選挙にいこう:2009/11/03(火) 22:39:04
プレビューは出来ます。
プリンターの性能が悪いのかな?
448名無しさん@そうだ選挙にいこう:2009/11/03(火) 22:44:43
なら、複雑なレコードソースかレポートが複雑か(D系関数の多用とか)なんかで時間がかかるだけじゃないかな?
449名無しさん@そうだ選挙にいこう:2009/11/03(火) 23:11:53
印刷完了する前にプリンターからエラーが出ちゃうんだ。
だからレポートの5分の1くらいしか印刷されない;;
450名無しさん@そうだ選挙にいこう:2009/11/04(水) 08:07:48
プリンターからエラーがでるなら。スレ違い。
451名無しさん@そうだ選挙にいこう:2009/11/04(水) 08:53:52
同じような経験で、プリンタのメモリを特注で増やしたが無駄だった
アクセスやプリンタとは無関係な、Windowsのプリンタのキャッシュみないななんたらの設定して解決した、詳しくは忘れた
452名無しさん@そうだ選挙にいこう:2009/11/04(水) 10:26:25
>>449
いつの間にか直るケースもあるが、プリンタドライバ再インストールやWindowsUpdateなどで直るかも?
ちなみにページ数が分かっているなら何回かに分割してページ指定で印刷できたはず、最悪1ページずつ印刷・・・面倒だが。
453451:2009/11/04(水) 10:50:34
思い出した、スプール フォルダ を空きのデカイドライブに移動した
数十ページ印刷すると直ぐにスプールが膨大になって止まる
454名無しさん@そうだ選挙にいこう:2009/11/04(水) 12:08:36
あー
そんな話聞いたような
455名無しさん@そうだ選挙にいこう:2009/11/04(水) 22:35:16
>>453
おお、印刷できた。ありがとう。
456名無しさん@そうだ選挙にいこう:2009/11/05(木) 02:42:50
ID 野菜   料理
1 にんじん カレー
2 ピーマン サラダ
のテーブルがあるとする。ボックスを二つつくり、
 コンボBOX フィールドの絞込み、
 テキストBOX 検索用打ち込み
フォームを「検索」としてクエリを
select * from テーブル where forms!検索!コンボBOX
Like "*" & Forms!検索フォーム!入力 & "*";
とやっても何も出てこない。
forms!検索!コンボBOXの代わりに、
直接のフィールド名(「ID」「野菜」「料理」)に置き換えればうまくいく。
DoCmd.Requeryはしてるんだけど。
どうやったら良いか教えてください。
457名無しさん@そうだ選挙にいこう:2009/11/05(木) 05:22:37
>>456
select * from テーブル where forms!検索!コンボBOX
Like ""*" & Forms!検索フォーム!入力 & "*"";
じゃないかなと。間違ったらゴメン。
458456:2009/11/05(木) 07:17:21
>>457
select * from テーブル where forms!検索!コンボBOX
Like "*" & Forms!検索!入力 & "*";

とやってうまくいきませんでした。同じフォーム内です。
>.456はフォーム名表記ミスです。ごめんなさい。
459名無しさん@そうだ選挙にいこう:2009/11/05(木) 09:26:10
>>458
>>457の書いたやつとそれ違う。
Likeのあとよく見れ。"が足りない。
460名無しさん@そうだ選挙にいこう:2009/11/05(木) 13:11:58
>>456-459
シングルクォートじゃないとエラーになるんじゃないかな?

SELECT * FROM テーブル WHERE Forms!検索!コンボBOX
Like "'*" & Forms!検索フォーム!入力 & "*'";

あと、念のため実行時にForms!検索!コンボBOXとForms!検索フォーム!入力を
Debug.Printしてみてください。
.Textだけセットされていて、.Valueがセットされていないかもしれないので。
461名無しさん@そうだ選挙にいこう:2009/11/05(木) 15:04:38
PG素人な質問ですいません。WORDのVBAから書き出した計算式をACCESS上で実行したいんですが
ACCESSのVBAって9万文字ぐらいの計算式実行できますか?
462名無しさん@そうだ選挙にいこう:2009/11/05(木) 16:33:10
>>461
ttp://office.microsoft.com/ja-jp/access/HA012289421041.aspx

式を書き出してEval関数の引数に渡してみれ。
ググれないなら自分で試した方がはやいぞ。
463名無しさん@そうだ選挙にいこう:2009/11/05(木) 18:52:54
>>456
> select * from テーブル where forms!検索!コンボBOX
「forms!検索!コンボBOX」はフィールド名にはならないよ。
あくまでフィールド名称を指す文字列になるだけで。
だから、Likeで比較してもフィールドの値とじゃなく、
フィールド名称を指す文字列と比較されているだけ。
具体的に書くと、「"野菜" Like "*hoge*"」とかに
なっているだけ。

自分にはうまい方法が思いつかないけど、VBAでSQL
入れ替えないとダメじゃないかという気はする。
464名無しさん@そうだ選挙にいこう:2009/11/05(木) 20:20:47
>>463
コンボBOXのリストにフィールド名がセットされていればOK
465463:2009/11/05(木) 21:25:06
>>464
ども。
試してみたけど、自分の環境だと検索されないんだよね。
列の値じゃなく、単なる文字列リテラルとの比較になっている
ようにしか見えないんだけど。

でもできる人がいるのであれば、>456 さんはできる人に教わる
のがよいのでしょう。
ということで、できない私は撤退します。汚してすまんかった。
466名無しさん@そうだ選挙にいこう:2009/11/05(木) 21:54:17
>>457>>459>>460
レスサンクス。「"」追加してみましたが、駄目ですね。「'」も同じ。

Debug.Printしてみました。コンボBOXでID、テキストBOXで1を打ち込んだ後
?Forms!検索!検索BOX()
ID
?Forms!検索!入力()
1
と出るので、値は代入されているようです。
>>463
検証してみましたが、確かにフィールド名が死んでいるようです。
>>464
値集合タイプ フィールドリスト
値集合ソース テーブル
他は全てデフォルトのコンボボックスです。どうしたものですかね……。
467名無しさん@そうだ選挙にいこう:2009/11/05(木) 23:25:09
>>466
BuildCriteriaで解析させてみては?
strFilter = BuildCriteria(Me.コンボBOX, dbText, "like *" & Me.入力 & "*")
strSQL="select * from テーブル where " & strFilter
468名無しさん@そうだ選挙にいこう:2009/11/06(金) 02:22:44
そもそも、そのクエリ句はどこに適用させてるの?
フォームのレコードソースか何か?
469名無しさん@そうだ選挙にいこう:2009/11/06(金) 09:15:58
質問

Access 2003 で、
同じmdbでも、通常版のアクセスではエラーにならないのに
ランタイム版ではエラーメッセージが出る場合があります。
コーディングで現在実行されているのが通常かランタイムかを知る方法はあるのでしょうか?

470名無しさん@そうだ選挙にいこう:2009/11/06(金) 21:42:30
>>469
SysCmd メソッドのヘルプ嫁
471名無しさん@そうだ選挙にいこう:2009/11/06(金) 22:57:46
thanx
472名無しさん@そうだ選挙にいこう:2009/11/08(日) 08:09:54
>>469
どっかでみたような質問だな
473名無しさん@そうだ選挙にいこう:2009/11/09(月) 04:52:30
>>467
レスサンクス。SQLをテキストに出すように組んでみた。
strFilter = "*" & Replace(Me.入力, " ", "* And *") & "*"
strFilter = BuildCriteria(Me.コンボBOX, dbText, strFilter)
strSQL = "select * from テーブル where " & strFilter
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdTableDirect
Set Me.Recordset = rs
For i = 0 To 2
Me.Controls("text" & Format(i, "0")).ControlSource = rs.Fields(i).Name
Me.Controls("lbl" & Format(i, "0")).Caption = rs.Fields(i).Name
Next
上手くいかない。二行目右のstrFilterをMe.入力に変えるとOKなので
ワイルドカードが原因みたい。出力の方法が悪いのかな?一つしか出せないし。
>>468
そです。そういう方法で考えてたのですが、
上手くいかないので上の方法に変えつつあります。
474473:2009/11/09(月) 05:19:03
>>467
出来ましたー。
どうも
strSQL = "select * from テーブル where " & strFilter
がワイルドカードに対応していないみたい。
フィルターにしたらいけました。
475467:2009/11/09(月) 06:13:00
>>474
んなーことない。Likeが抜けてるんじゃねか
まぁ解決したならべつにえーけどな
476名無しさん@そうだ選挙にいこう:2009/11/09(月) 07:22:21
>>475
確かに、replace使い始めてからlike忘れてます。
ワイルドカードというよりは、「'」と「"」がいりこんでいると駄目なのかもしれません。
SQLは""で囲むので、「'」に置き換えてみたりしたのですが。

>>473
だと一つしか出力できないです。フィルタのように、
複数当てはまる場合に複数出力するにはどう書いたら良いですかね?
これも上手くいかなかった原因のような。
477名無しさん@そうだ選挙にいこう:2009/11/09(月) 17:03:02
dim a,b as integer でbのデータ型が違うと怒られた。

dim a as integer
dim b as integer
だと怒られない。

なんでですか?
478名無しさん@そうだ選挙にいこう:2009/11/09(月) 17:07:15
dim a,b as integer

これは

Dim a As Variant
Dim b As Integer

と等価だから
479名無しさん@そうだ選挙にいこう:2009/11/09(月) 17:15:46
>>478
そうなの?
bがintegerなら怒られないはずなのに…
480名無しさん@そうだ選挙にいこう:2009/11/09(月) 17:18:46
>>478
http://www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html
ここに書いてありますね。bで怒られたのはおいらの勘違いかもしれない。
ありがとう。
481名無しさん@そうだ選挙にいこう:2009/11/09(月) 18:39:40
>>477
文法が間違っています。

Dim a As Integer
Dim b As Integer
と等価なのは…
Dim a As Integer, b As Integer
です。

ちなみに、
Dim a, b As Integer
と等価なのは…
Dim a As Variant, b As Integer
ですね。
482名無しさん@そうだ選挙にいこう:2009/11/09(月) 18:47:01
>>481
ありがとうございます。勉強になりました。
市販のmdbファイルに書いてあったのを真似していました。
件のmdbファイルをよく調べてみます。プログラマーが間違えていたら面白いなw
483名無しさん@そうだ選挙にいこう:2009/11/10(火) 02:03:50
Vista / access2007環境
PC数台のLANで管理者だけがデータの登録・更新が可能で
一般ユーザーは特定のデータのみを閲覧できる共有システムを作ることになりました。
accessのみで構築しようと思ったのですが、調べるうちにセキュリティに不安がでてきました。

ユーザー単位のデータの隠ぺいは可能なのか?
直接データベースファイルを開かれたら? などの心配があります。

インターフェース部をVBA制御してデータベースは暗号化しておくと出来そうな感じですが
そもそもそんな事が出来るのかさえわかりません…。

ACCESS2007のみで組む場合に気をつける点など教えてください。

※管理者のPCのみaccess2007で他はランタイムを考えています。

484483:2009/11/10(火) 02:19:22
あ、インターフェース部を共有フォルダに置いてデータベースファイルをローカルフォルダに置けば
セキュリティ的に良いような気がしてきました・・
連投すんません。
485名無しさん@そうだ選挙にいこう:2009/11/10(火) 02:50:07
それは(--;)
486名無しさん@そうだ選挙にいこう:2009/11/10(火) 03:04:39
テーブルのみ分離したデータ.mdbのみを共有フォルダに置き、一般ユーザーには閲覧のみできるクエリで作ったインターフェース用.mdeを配布とか。ただし、accessではちと荷が重いけどね。
487名無しさん@そうだ選挙にいこう:2009/11/10(火) 04:00:29
>>483
分割してバックエンドaccdbはパスワードで縛る必要があるわな。
でもってフロントエンドaccdeでリンクテーブル使う方法もありだが、
これってセキュリティレベルは超低い。ちょっと分かる人であれば書き込みが可能。
もう少し縛るなら、リンクテーブル使わない方法でフロントエンドを作るしかないべな。
あとはユーザ管理の機能がないから、自前でUI制御するくらいか。
セキュリティ気にするならSQLserver使うべきなのだが、accessでも似たようなことが
できなくもない。まぁ限界があるってこと。
488名無しさん@そうだ選挙にいこう:2009/11/10(火) 10:14:40
>>483
拡張子である「.mdb」を取っちゃうという手もある。
こうするとぱっと見ではACCESSだとわからない。(プログラムからは普通に繋がる)
まあファイルをオープンすると同じフォルダにldbファイルが出来ちゃうから詳しい人には
わかってしまうけど・・・。
セキュリティの問題はどこまでやれば安全ってのがないからね。
相手が本気で色んな知識や技術を修得してきたらそれなりの対処をしていてもクラック
されてしまうだろうし。(例えば誰もいない時や一瞬の隙をついて個人のPCからデータ
抜き出したりとかデータロガーでログインパス取得したりとかやり方はいくらでもある。)
「完璧なセキュリティは無理です」ってことを言っといたほうがいいと思う。
あっ、でもデータ分けるとかmdbにパスワード付けるとか一応のことはしとくべき。そうすれ
ば何かあった時もセキュリティ的な対策はしていたということを主張できるし。
489488:2009/11/10(火) 10:18:16
>>483
書き忘れたけどmdbを置く共有フォルダを隠し共有に設定しておくのもオススメ。
地味な方法も組み合わせると結構効果あるよ。
490483:2009/11/10(火) 12:11:35
ご教授ありがとうございます。
まだまだ知識がないので
教えてもらったことを調べていきたいと思います。

ネットワークシステムやセキュリティ云々を言うなら
ACCESSのみで組むべきじゃない感じですね。
こういう低予算かつ極小のシステムってどういう構成がいいんだろう
ACCESS+MySQLなどでしょうか…
ACCESSにユーザー管理の機能があったらすごく楽なのにと思います。
491名無しさん@そうだ選挙にいこう:2009/11/10(火) 19:19:18
>>483
フロントエンドをAccessで考えるなら、SQL Server Express Edition と
組み合わせるのが無難と言えば無難かなぁ。Express Editionなら無償だしね。
492483:2009/11/10(火) 20:48:43
SQL Serverに無償のEditionがあったんですね!
零細には手が出ない代物と思ってました…
ACCESSのみだと複雑でイレギュラーなテクニックが必要になりそうなので
データベースをSQL Serverにする構成で取り組んでみます。
ありがとうございました。
493名無しさん@そうだ選挙にいこう:2009/11/10(火) 21:13:00
M$-SQLserverなんかで組むんならPHP+PostgreSQLで組んじゃうな。ちょっとハードル高いぞ。
494名無しさん@そうだ選挙にいこう:2009/11/10(火) 21:24:19
印刷物とかどうすんの
495名無しさん@そうだ選挙にいこう:2009/11/10(火) 21:28:41
tcpdfでやってるよ。かなりハードル高いぞ。
496483:2009/11/11(水) 17:35:31
>>487
>分割してバックエンドaccdbはパスワードで縛る必要があるわな。
>でもってフロントエンドaccdeでリンクテーブル使う方法もありだが、
>これってセキュリティレベルは超低い。

遅レスすみません。
これってリンクテーブルだとaccdbへの接続パスワードがハックされやすいからですか?
497名無しさん@そうだ選挙にいこう:2009/11/11(水) 19:19:34
test
498名無しさん@そうだ選挙にいこう:2009/11/11(水) 19:25:18
失礼しました、質問です。
アクセス2007を所有しております。
教えていただきたいことはまず、、以下の内容のものはつくれるかどうかで、
どのようなテーブルを作っていくべきか助言が欲しいのです。

・何がしたいか → マンション、アパートの管理データベース
■各住宅の入居者の情報
世帯主以外にも同居者の情報も含ませる(生年月日[年齢]、性別、収入など)
住宅は退去などにより空きが出る→新しい入居者が入ることもある。
■指定した期日以前などについて年齢、入居者数などの集計はとれるか(指定した期日なので年齢がさかのぼることもある)

499名無しさん@そうだ選挙にいこう:2009/11/11(水) 21:19:23
できるよ
500名無しさん@そうだ選挙にいこう:2009/11/11(水) 21:32:17
>>499
ありがとうございます。まだ必死に基本書読んでる段階ですが、がんばります。。
501名無しさん@そうだ選挙にいこう:2009/11/11(水) 21:38:27
>>498
生年月日さえわかれば年齢は計算で出る。遡る事も可能。
マン管DBだけど住民基本台帳みたいなDBつくればいいよ。
502名無しさん@そうだ選挙にいこう:2009/11/11(水) 22:35:37
>>498
その程度なら片手間でも作れるくらい簡単だよ。

肝になる部分は少ないから。平たいDBだね。

より複雑な計算をしてってならべつだけれど、その程度の管理なら
エクセルでもやってやれなくない。

503名無しさん@そうだ選挙にいこう:2009/11/11(水) 22:56:43
まあ、それが初めてのDBなら難しいと思うよ。経験者は色々いうけど、とにかくやってみなよ。いろいろわかるのはそれからで十分さ。
504名無しさん@そうだ選挙にいこう:2009/11/11(水) 23:07:52
Access でセキュリティというと、 MDW を使えば充分だと思うんだが、これじゃダメなのか?
505498:2009/11/11(水) 23:24:05
みなさんありがとう。テーブルを考えるだけでかなりかかりそうだ・・・
506名無しさん@そうだ選挙にいこう:2009/11/12(木) 00:01:49
>>498
例えば、こんな感じのテーブルになる。
想像で適当に書いたので参考までに、あしからず。

テーブル
住宅: <住宅ID(オートナンバー)>, 住所, 物件名
住宅部屋: <住宅ID, 部屋番号>
住宅入退: <住宅ID, 部屋番号, 住宅入退ID(オートナンバー)>, 入退区分{入居|退去}, 入退日
住宅入居者: <住宅ID, 部屋番号, 住宅入退ID, 入居者ID(オートナンバー)>, 世帯主{Yes|No}, 氏名, 生年月日, 性別{男|女}, 収入
*<>が主キー。

リレーションシップ
住宅(住宅ID) 1-多 住宅部屋
住宅部屋(住宅ID, 部屋番号) 1-多 住宅入退
住宅入退(住宅ID, 部屋番号, 住宅入退ID) 1-多 住宅入居者

・指定日の空き部屋状況は、住宅部屋と住宅入退(入退日が指定日以前かつ最大のもの)を左結合(LEFT JOIN)して、
 入退区分が入居なら入居中、それ以外(NULLか退去なら)なら空き。
・{入居時 or 退去時}の年齢は「入退日-生年月日」で求められる。
・指定日の集計に関しても上の条件のクエリを元に求められる。
・ポイントは入居と退去の履歴(日付)を残しておいて、それを条件に抽出すること。年齢は生年月日を元に求めること。

似たような案件のデータベースのサンプルを探してみて中身がどうなっているか調べてみるといいよ。
後は今ある入力データを正規化してみるとか(「正規化」の手順は調べればすぐ分かる)。
まあ、頑張ってみてくださいな。
507名無しさん@そうだ選挙にいこう:2009/11/12(木) 00:41:46
>>504
たぶんAccess2007で廃止(ただしネイティブフォーマットのaccdb)されたからじゃね?
>483 は2007らしいから、こういう流れになったかと。

2003までなら、ユーザーレベルセキュリティふつうにできるけどな。
Accessの手頃感が突出しすぎてユーザ動かないんで、SQL鯖への追い出しにM$も必死w
508名無しさん@そうだ選挙にいこう:2009/11/12(木) 07:22:03
>>506
ご丁寧にありがとうございます。
早速参考にさせてもらいたいと思います。正規化についても調べてみます!
509名無しさん@そうだ選挙にいこう:2009/11/12(木) 07:22:38
>>506
さらに正規化するとすれば

入退区分{入居|退去}

入退区分:<入退区分ID(オートナンバー)>,入退区分(テキスト)

性別{男|女}

性別:<性別ID(オートナンバー)>,性別(テキスト)

住宅:<住宅ID(オートナンバー)>,;住所,物件名
住宅部屋:<住宅ID,部屋番号>
住宅入退:<住宅ID,部屋番号,住宅入退ID(オートナンバー)>,入退区分ID,入退日
住宅入居者:<住宅ID,部屋番号,住宅入退ID,入居者ID(オートナンバー)>,世帯主{Yes|No},氏名,生年月日,性別ID,収入
510名無しさん@そうだ選挙にいこう:2009/11/12(木) 10:06:56
まあ、世帯主なんかも正規化の対象か。
511487:2009/11/12(木) 12:03:59
解除ktkr
>>496
リンクテーブルの場合
1.パスワードが平文で格納されてるから、特別なツールを必要とせずまる見え
2.フロントエンドaccdeに向けてODBC/ADO等で接続すると、フロントエンドが
接続を代行するような振る舞いをする。
まぁフロントエンドもパスワード暗号化なりすりゃいいのだけれど。
使用環境、セキュリティ、開発難度のバランスを取って製造ということ。
社内で小規模というのであれば、性善説前提+データ保全目的のセキュリティ
構成もありだと思う。
損することはないから、MSSQLServer/MySQLなど着手するならしちゃった
ほうがいいかもね。
512名無しさん@そうだ選挙にいこう:2009/11/12(木) 13:27:57
どうでもいいがDBで管理しなきゃいけないほど大量のアパートマンション保有とか
どんだけ資産家なんだよ
513名無しさん@そうだ選挙にいこう:2009/11/12(木) 13:35:02
資産家って思うかねw。可能性がないわけじゃないけど。
514483:2009/11/12(木) 16:57:07
>>511
パスワードが丸見えとかちょっとひどいですね・・

素直にSQLServer使います。
ありがとうございました。
515名無しさん@そうだ選挙にいこう:2009/11/12(木) 18:50:23
>>514
がんがれ
516名無しさん@そうだ選挙にいこう:2009/11/12(木) 23:12:47
>>515
甘やかすなよ。おまえの甘やかしは
そいつのためにならないだろ。
517名無しさん@そうだ選挙にいこう:2009/11/13(金) 09:24:07
>>516
励ましてやる方が伸びる子もいるのだよ。
518498:2009/11/13(金) 15:36:59
>>506
何から何までありがとうございます。
試しにやってみました。データ型について怒られまくってます。初歩の初歩の段階…。

住宅情報(建設年度 管理戸数 部屋面積など)
入れるのを忘れました。
>>506さんの書いてくれたレス印刷して持ち歩いてます。頑張ります。

ネット上に住宅管理のサンプルって中々見つからないものですね
519名無しさん@そうだ選挙にいこう:2009/11/13(金) 21:17:01
次は、何を「れるの忘れました」って言うんだろうなw
520名無しさん@そうだ選挙にいこう:2009/11/14(土) 00:01:29
物件管理だけならともかく、住民台帳みたいな情報まで網羅する必要があるって
どんな業種なんだろうな
521名無しさん@そうだ選挙にいこう:2009/11/14(土) 01:33:10
>>519
サーセン

基本書熟読します
522名無しさん@そうだ選挙にいこう:2009/11/14(土) 22:59:08
検索した結果が、.foundfiles()に格納されています。
For i = 1 To .FoundFiles(i).count
Me.[text1] = .FoundFiles(i)
Next i
とやれば、当然、text1には .FoundFiles(i)の最後の値がはいってしまいますよね。

1.text1の1を i (変数)に変更して順番に格納したいですが、どう書けば良いですか?
 text1,text2,text3,text4,text5と、フィールドは用意しておきます。

2.絞込みクエリのように、数に応じてフィールドが自動生成する方法ありますか?
上と異なり、フィールドは事前に作成しません。これは出来るかどうかわかりませんが……。

よろしくお願いします。
523名無しさん@そうだ選挙にいこう:2009/11/14(土) 23:26:42
>>522
1. Me.Contorls("text" & i) みたいな感じで
2.CreateControlでコントロール追加とか、ListBoxを使うとか、レコードセットにしてデータシートビュー
524名無しさん@そうだ選挙にいこう:2009/11/14(土) 23:27:58
ACCESSでソフト作っている人多いんでしょうか。
525522:2009/11/14(土) 23:41:14
1.の代入は出来ました。

2.のクエリ風に絞込みは不明ですので
方法あったら教えてください。debugplintの結果を
セルに出力するようなイメージです。
526名無しさん@そうだ選挙にいこう:2009/11/14(土) 23:58:46
>>523
レスサンクス。入れ違いになってしまった。

レコードセットにしてデータシートビューに挑戦してみます。
結果をテーブルに出力して、データシートビューにするような感じですかねえ。
探してみますが、もし参考になるサイトあれば教えてください。

それで駄目ならCreateControlですかね。
これは、フィールド名が増えると恐ろしいことになりそうな気がします……。
527名無しさん@そうだ選挙にいこう:2009/11/15(日) 00:09:50
>>524
Accessでソフトウェアをつくって、公開している人ってのは、多分少ない。
ましてや、それでシェアウェア作って売っているとなると、限られる。

けれど、業務の現場では数多くのAccessで作られたアプリケーションが
仕事をしている。

表に出てこない作り込みのソフトウェアがね。あとは、VBなどのバックエンド
にデータの置き場としてmdbを使っているようなツールとかね。テーブル設計
をAccessで行って、VBで仕込む。
528522=525:2009/11/15(日) 00:44:21
>>523
2のレコードセットにしてデータシートビューで出来ました。
我流ですが。あらかじめテーブルを作っておいて、
ADOで
1.テーブルの中身を全部削除
2.テーブルに結果を代入
3.フィールドとして表示
相当強引な気がしますが、こんな感じなんですかねえ。
529名無しさん@そうだ選挙にいこう:2009/11/15(日) 03:04:37
テーブルに、絶対パスでwordファイルのアドレスが入っています。
(ハイパーリンクなので#が両端についているかも)

このアドレスを渡して、帳票形式になっているフォーム上で
OLE表示させたいのですが、VBでどう書けば良いですかね?
530名無しさん@そうだ選挙にいこう:2009/11/15(日) 03:29:19
Access2007 + ADO + Postgresでいろいろ試しているのですがうまくいかないところがあります。

コンボボックスの選択肢としてPostgresから持ってきたデータを使おうとしているのですが、
選択肢の表示と選択した後の表示としては二番目の文字列の列を表示させ、
実際の値としては一番目の数字列を入れたいと考え、
値集合のタイプはテーブル/クエリ、列数は2、連結列は1、列幅は0cm;3cmとしました。

この設定の状態でフォームのロードイベントの部分でID列と名称列の二つの列をもつRecordsetをセットしたのですが、
実際に動かしてみると、選択肢を表示させる事は出来るのですが、
実際に選び終わると選択した物が入らずに消えてしまいます。
何か設定がおかしいのでしょうか?

ちなみに上記の設定とコードのまま、コンボボックスをコントロールの種類の変更で
リストボックスにした場合は普通に選択肢として表れ、選ぶことも出来ます。

また、フォームのプロパティの細かい部分はそのままに、
プロパティから値集合ソースとして同じテーブルをリンクテーブルにした物を設定した場合は期待通りに動作します。

何が原因なのでしょうか・・・
531529:2009/11/15(日) 03:32:55
アドレスにハイパーリンクが入っています。
ファイルはテーブルに存在しますが、元は空欄です。

Dim path As String
path = Replace(Me.アドレス, "#", "")
With Me.ファイル
.Class = "Word.Document.8"
.OLETypeAllowed = acOLELinked
.SourceDoc = path
.Action = acOLECreateLink
End With

とやって、カレントテーブルは上手く表示できましたが、
絞込みで表示されている他のテーブルは、選択するまで
表示されないままです。いい方法ありますか?

また、OLEオブジェクト内でword文書は先頭しか見えません。
スクロールさせる方法があれば教えてください。
532820:2009/11/15(日) 06:24:11
>>518
お役に立っているのなら嬉しいです。が、ごめんなさい。>>506 は間違えていました。
>>506 の訂正です(考え直したら、入居と退去は必ず対になるので、下記の方が作るのは簡単です)。

テーブル:
×住宅入退: <住宅ID, 部屋番号, 住宅入退ID(オートナンバー)>, 入退区分{入居|退去}, 入退日
○住宅入退: <住宅ID, 部屋番号, 住宅入退ID(オートナンバー)>, 入居日, 退去日

×・指定日の空き部屋状況は〜
○・現在の部屋の入居状況は、住宅部屋が退去日 IS NULLの住宅入退を子に持つなら入居中。それ以外なら空きとなる。

・指定日に入居していた世帯(住宅入退ID)を知りたい場合は下のようなクエリ(SQL)を使う。
SELECT 住宅ID, 部屋番号, 住宅入退ID
FROM 住宅入退 t1
WHERE EXISTS (
 SELECT 住宅ID, 部屋番号
 FROM 住宅入退 t2
 WHERE t1.住宅ID = t2.住宅ID and t1.部屋番号 = t2.部屋番号 and t2.入居日 <= [指定日] and (t2.退去日 IS NULL OR [指定日] < t2.退去日)
 GROUP BY t2.住宅ID, t2.部屋番号
 HAVING MAX(t2.入居日) = t1.入居日)

ついでに今回の変更で入居期間も「退去日-入居日」
(例えば Access だと「DateDiff("m",入居日,退去日)」で月単位の期間)で求められます。

既にデータ入力していたら、ごめん。後は本や Web を参考にやってみてください。
533506:2009/11/15(日) 06:26:08
名前間違えた。>>532=506 です。
534名無しさん@そうだ選挙にいこう:2009/11/15(日) 06:44:37
>>530
リンクテーブルで上手くいくなら
CurrentProject.Connection を使ってリンクテーブル経由で Recordset を開いてみては?

または下のようにローカルで動作するようにプロパティを設定したものを使った場合でもダメかな?
Dim p As New ADODB.Recordset
p.CursorLocation = adUseClient
p.Open source, con, adOpenStatic, adLockReadOnly, adCmdText
Set p.ActiveConnection = Nothing
Set ComboBox1.Recrodset = p
535名無しさん@そうだ選挙にいこう:2009/11/15(日) 07:20:28
>>528
テーブルを使わずに

Dim p As New ADODB.Recordset
p.Fields.Append "列1", adVarWChar, 256
p.Fields.Append "列2", adVarWChar, 256
p.Open , , , adLockOptimistic
p.AddNew Array(0, 1), Array("1", "A")
Set Me.Recordset = p

という手もあるよ。
解説されているのをあんまり見たことがないので、どこまでサポートされているかは知らないけど。
536名無しさん@そうだ選挙にいこう:2009/11/15(日) 08:41:00
>>527

> けれど、業務の現場では数多くのAccessで作られたアプリケーションが
> 仕事をしている。

このパターンが多いんですね。ありがとうございます。

> 表に出てこない作り込みのソフトウェアがね。あとは、VBなどのバックエンド
> にデータの置き場としてmdbを使っているようなツールとかね。テーブル設計
> をAccessで行って、VBで仕込む。

私的プログラムでデータの管理をどうしようかと思っていたのでアクセスを利用したいと思います。
537528:2009/11/15(日) 12:33:42
>>535
レスサンクス。
>>528の方法だと、検索するたびに、レコードが削除されました
のエラーが出てしまい、使い物になりませんでした。
フォームを開きなおすときちんと表示されるので、削除した分が
フォーム開きなおすまでレコードの位置情報のみ残っているっぽいです。

Dim p As New ADODB.Recordset
p.Fields.Append "アドレス", adVarWChar, 256
p.Open , , , adLockOptimistic
Set Me.Recordset = p
For i = 1 To .Files.Count
p.AddNew Array("アドレス"), Array(".Files(i)")
p.Update
p.MoveNext
Next i
p.Close: Set p = Nothing
こう書いてみましたが、アドレスには何も入ってません。
フォームにはダミーとして、"アドレス"のフィールドのみ存在する
テーブルを参照先にいれてあります。これが原因かもしれませんが。
538537:2009/11/15(日) 12:38:47
ダミーの参照をやめて名前だけにしてみましたが、
やはりデータが入っていないようです。
困ったなあ。

一度フォームを閉じて開きなおすように組めば>>528でも
実用できるようですが、明らかに無駄ですよね。
539名無しさん@そうだ選挙にいこう:2009/11/15(日) 13:29:50
>>507
>(MDWは) Access2007で廃止(ただしネイティブフォーマットのaccdb)された

ほんとか?

MSのHPでは使えると書かれているぞ。

http://office.microsoft.com/ja-jp/access/HA100678311041.aspx
540530:2009/11/15(日) 15:45:06
530です

>>534
リンクテーブルを経由すると作成の趣旨からはずれてしまうので、
その方法を使用することができませんです。

二番目に挙げていただいたプロパティ値でやってみましたが
挙動は特に変わらず、選択後に消えてしまいます。
541535:2009/11/15(日) 17:37:49
>>538
順序を変えてみて。
データを追加→フォームに設定の順。
For i = 1 To .Files.Count
 p.AddNew Arrary("アドレス"), Array(.Files(i))
Next
Set Me.Recordset = p

あと、データシートに使うフォームにはコントロールソースを「アドレス」にした、
テキストコントロールを配置しているよね?

あと、テーブルを使う場合でも、
削除する前に一旦レコードソースを空白にすればエラーはでなかったと思う
(データ追加後に再設定する)。間違ってたら、ごめん。
542534:2009/11/15(日) 18:39:09
>>540
Provider を Microsoft.Access.OLEDB10.0 に変更。
Data Provider を PostgreSQL OLE DB Provider にしてみてもダメかな?

[ACC2002] Recordset のプロパティを設定すると、コンボ ボックスに値が表示されない
http://support.microsoft.com/kb/287478/ja

それでもダメなら、値集合タイプをを値リストにして文字列で設定するとか。
ComboBox1.RowSource = recordset.GetString(adClipString, ,";",";")

No4734.コンボボックスのRecordsetにADOのRecordsetを使う方法・・・
http://www.accessclub.jp/bbs6/0016/das4734.html
543507:2009/11/15(日) 18:50:22
>>539
そのページは誤解しやすい表現になってるので勘違いするのも無理ないけど。
こっちの方がはっきり書いてある。

http://office.microsoft.com/ja-jp/access/HA102091151041.aspx

2007のネイティブフォーマットはユーザーレベルセキュリティをサポートしない。
MDWは互換性のために残しているけど、MDBのまま2007形式に移行しない
場合でないと使えない。
だから
>>(MDWは) Access2007で廃止(ただしネイティブフォーマットのaccdb)された
と書いた。
544名無しさん@そうだ選挙にいこう:2009/11/16(月) 12:08:03
>>532
たくさんの情報ありがとうございます。試しにデータは入れてみてますがまだ全然理解してない
状況ですので問題ないです。。
主キーを複数設定するところですら焦ってますし、男女の選択をどうするか、同居してる人が個別に入ったり出たりするので
その辺りも考慮してやってみようかというところです。

部屋番号を「棟」と「号」に分けることくらいしかまだ自分にはアレンジができないのでまずは住宅の
テーブルだけ完成させてみたいと思います。

どこかにサンプルファイルって落ちてたりしないんでしょうか。
545名無しさん@そうだ選挙にいこう:2009/11/16(月) 15:58:10
Windows 7上でAccess 2007や2003がちゃんと動くかどうかという情報って
どっかに出回ってないすか?
ざっとググッた限りだと、以下の記事しか見つからなくてやや心配…
ttp://vive-hodie.com/2009/06/ms-access_on_windows7/
546名無しさん@そうだ選挙にいこう:2009/11/16(月) 18:32:35
>>545
Microsoft Office 製品に関する Windows 7 の対応状況
http://www.microsoft.com/japan/office/2007/OScompatibility.mspx

我が家の Access 2003 は特に問題が出たことはなし(ローカル環境のみだけど)。
>>545 の記事は Windows 7 RC版だったからか、何か他の原因じゃないかな。
547名無しさん@そうだ選挙にいこう:2009/11/16(月) 22:05:54
初心者なんですが教えて下さい。Access97でテーブルにデータ値が無い場合0を表示させたいんですが、どうすればいいんですか?

548名無しさん@そうだ選挙にいこう:2009/11/16(月) 22:14:43
>>547
表示だけでいいなら、書式プロパティに「0」と設定するとか。
549名無しさん@そうだ選挙にいこう:2009/11/17(火) 00:43:57
テーブルデザインにして
フィールドのプロパティ → 規定値0 でもおk
550538:2009/11/17(火) 07:25:37
>>541
順番変更でばっちりでした。ありがとうございます!

参考に教えてください。
レコードソースを空白にするってどう書けば良いんですかね?
レコード削除はわかるのですが。レコード削除だとエラーでます。
'Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
とか、
 SQL = "delete from テーブル"
 DoCmd.RunSQL SQL
だと駄目ですね。
551545:2009/11/17(火) 10:44:08
>>546 ありがとうございます
なるべく早くWindows 7入手して
自分でも動作確認するようにします
552名無しさん@そうだ選挙にいこう:2009/11/17(火) 11:56:35
>>548
>>549

ありがとうございます。やってみます!
553名無しさん@そうだ選挙にいこう:2009/11/17(火) 12:00:28
sharepoint foundation2010にaccess serviceがねぇよぉ;;
Runtimeの代わりになるとwktkしてたのによぉ
554名無しさん@そうだ選挙にいこう:2009/11/17(火) 19:27:31
Access97を現役でまだ使ってる人いるの?
マイクロソフト喜びそうだな
555トリプルクリック ◆M4VDFNZnqs :2009/11/17(火) 19:31:30
>>554
早く新しいの買えって思ってるんじゃないかな
556名無しさん@そうだ選挙にいこう:2009/11/17(火) 21:29:48
>>554
余裕でいる。
2.0ですら、まだ話聞くし。

M$はまったく喜ばないと思うが。
557名無しさん@そうだ選挙にいこう:2009/11/17(火) 22:33:33
少しずつですが作り始めました。気になったのは住宅ごとではなく、棟や詳細(部屋単位)で違うものがあるということです。
同じ住宅でもお風呂の設置の有無がある住宅があるので変なところに風呂フィールドがあります。
また、住宅台帳の管理戸数は棟別管理戸数の詳細ということになるので、なんか二度手間な感じがします。
私の作り方がおかしいのでしょうか。まだ主キーやらリレーションシップはほぼつけてない状態です。
私は最初から細かく作ろうとしすぎてるのでしょうか・・



<>は主キー

住宅台帳マスター
<住宅ID(オートナンバー)>,住宅名(テキスト),郵便番号(テキスト),住所(テキスト),管理戸数(数値),給水(テキスト),ガス(テキスト),便所(テキスト),駐車場有無(テキスト)

棟別台帳マスター
棟ID(テキスト),住宅ID(数値),棟名(テキスト),建設年度(テキスト),種別(テキスト),構造階数(テキスト),管理戸数(数値)

部屋別台帳マスター
部屋ID(テキスト),住宅ID(数値),棟ID(テキスト),号室(テキスト),間取(テキスト),間取詳細(テキスト),風呂(テキスト),備考(テキスト)
558名無しさん@そうだ選挙にいこう:2009/11/17(火) 23:47:34
もしかして街の不動産屋さんじゃなくてどっかの公団の管理人とかなの?
559名無しさん@そうだ選挙にいこう:2009/11/18(水) 00:17:31
以前似た事聞きましたが、adoが上手くいかないので教えてください。
Dim rs As New ADODB.Recordset
Dim cn As ADODB.Connection

Set cn = Application.CurrentProject.Connection
rs.Open Me.RecordSource, cn, adOpenKeyset, adLockOptimistic

Dim sFilter As String
sFilter = "*" & Replace(Me.BOX1, " ", "* And *") & "*"
sFilter = BuildCriteria(Me.BOX2, dbText, sFilter)
rs.Filter = sFilter
このrs.fillterが上手くいっておらず、rs.filter=0になります。

Me.filter=sFilter
Me,filteroN =true
なら上手くいきますが、rsからデータ取りしたいのでこの方法は使えません。
BOX1で絞り込んで、BOX2で更に絞り込む
レコードセットに対するフィルターのかけ方を教えてください。
560名無しさん@そうだ選挙にいこう:2009/11/18(水) 01:12:07
>>559
ADOだよね。
おおかた文字列を二重引用符でくくってんじゃね?
くくるなら一重引用符(単一引用符)。
FIlterプロパティのヘルプを読めばすぐに分かるので、
読んでないんだろうけど、困ってんならヘルプくらい嫁。
ttp://msdn.microsoft.com/ja-jp/library/cc426691.aspx
561名無しさん@そうだ選挙にいこう:2009/11/18(水) 01:58:08
>>557期待を裏切らずいろいろ後だしでくるなw
562名無しさん@そうだ選挙にいこう:2009/11/18(水) 02:20:05
んなもんにかまってられんわ。寝る。
563535:2009/11/18(水) 02:42:31
>>550
レコードソースを空白にするのは
テーブル/クエリなら
Me.RecordSource = ""
レコードセットなら
Set Me.Recordset = Nothing
とするだけ。

要はフォームとの関連を一旦切ってその後に処理する。
フォームがちらつくのが気になるなら処理の前後を Me.Painting で挟めば良い。
Me.Painting = False
Me.RecordSource = ""
DoCmd.RunSQL "DELETE FROM テーブル"
Me.RecordSource = "テーブル"
Me.Painting = True

あと、そもそもスナップショットにしておけばレコードソースの状態を監視したりしないので、
問題なかったような気がする(DELETE クエリを発行した後、Me.Requery を使って手動で更新)
……違うかも。
564名無しさん@そうだ選挙にいこう:2009/11/18(水) 03:01:48
>>557
部屋毎に風呂の有無が異なるのなら、部屋に風呂フィールドが入るのが自然。
データの繰り返しや重複がある場合が不自然。詳しくは正規化を勉強してみて。
管理戸数については集計関数(カウント(COUNT), 合計(SUM))を調べてみれば良いかも。

最初は試行錯誤しながら作っていくしかないよ。
自信がないのなら練習用にデータベースの作り方が載っている本を買ってきて、
一度通して作ってみると良い。それで、Access で何が出来て、何が出来そうにないかが分かると思う。
565名無しさん@そうだ選挙にいこう:2009/11/18(水) 07:00:13
>>561
ほんとに申し訳ないことです。入門じみた質問ばかりになってるのは自分でも分かってます。ご免なさい

できるシリーズ熟読しながら作ってる段階です

エクセルワードと違って、アクセスはほんとに情報少ないですね。
566メモリ君 ◆7mDj3mSGOQ :2009/11/18(水) 07:21:30
>>565
それは大きな勘違いだ。

Accessの情報も十分ある。ただ、君がこの世界のルールを知らないで入っている
に過ぎない。この世界は、WordやExcelと違って、テーブル設計や正規化、外部キー
やクエリといった数々の決まり事がある。

そして、多くの人間が挫折するのは、これら決まり事 つまり、理論を勉強せずに
飛び込んでいきなり実践のデータベースを作ろうとするからなのだ。まずは、実践とは
別に、簡単なデータベースでしっかり基礎を勉強してから、少しずつ、クエリの活用法
だとか、テーブルの設計方法を勉強するのがデータベースの肝。

はっきりいって、GUIやVBAなんてのは、一番後にやるもんだ。そして何よりも、情報を
小出しにしている段階でテーブル設計はこけている。
567名無しさん@そうだ選挙にいこう:2009/11/18(水) 18:36:13
>>557
初心者が最初から全体を作ろうとしても難しいと思う。
小さい部分から徐々に作って試していった方が実力に合うレベルで考えられるし、自信も持てるよ。

例えば、入居者の統計を取るのが目的なら、入居者のテーブルだけを作ってみる。
それを使って年齢、性別毎の人数や収入の平均を求める集計クエリを作ってみる。ある期間の入居者一覧のクエリも作成してみる。
それが出来たら、部屋のテーブルを作ってみて、棟毎の戸数の集計クエリを作ってみる。
それが出来たら、入居者と部屋をリレーションシップで結んでみる。必要なら正規化をやり直す。
それを使って、部屋毎の入居者の集計クエリを作ってみる……みたいに問題を小さく分けて、少しずつやってみた方が良いと思う。

あと、クエリの使い方が分かれば、ある条件で絞り込み・集計するにはどんなデータが必要か?
という視点でも考えられるようになるので、設計の正否を判断する手がかりが増えるよ。
568名無しさん@そうだ選挙にいこう:2009/11/18(水) 19:22:45
>>557
私もちょっと必要なので、Accessを始めたところです。
557さんも、ワークシートとデータベースの違いの「イメージ」をつかめて
いないような気がします。
データベースも、「カード型」と、リレーション型があります。
カード型のイメージと、ワークシートのイメージは似ています。
カード型・ワークシートは、「一目で見わたせる」感じですが、
リレーション型のデータベースは、「シートの奥行き」がある感じです。
エクセルでも「くし刺し処理」みたいな物がありますけど、あの感じです。
しかし、「同じもの」が奥行きになっているのではないんです。
リレーション型は、「データの特徴をつかんで、なるべくまとめてしまう」のが、「なんでも
広げて一覧にする」ワークシートとは違っているんです。
ワークシートは、個数と単価と合計が一覧になりますけど、リレーション型である
Accessは個数と単価だけが「テーブル」に入り、合計は、「クエリ」でその都度計算し、
「フォーム」で表示し、「レポート」で印刷するんです。
住宅IDとそれが「属する棟」の番号のテーブルがあれば、「管理個数」は「クエリ」で
その都度計算するんです。
お風呂の有無は、その前に間取りのパターンを数え上げて番号を付け、どの番号の
間取りかの情報をテーブルにもたせて、どんな間取りかの表示はその都度クエリやフォームで
作り出すんです。
お風呂の有る無しに何か特別意味があるのであれば、その情報はtrue falseなどの情報として
テーブルにもたせることも出来ます。

なにか、基本的な発想が、リレーション型のデータベースのイメージをつかまないままExcel
的に考えてるようにお見受けしました。
私はAccessがいちいちクエリだのレポートだのと「場面を変えて作業」する意味合いが
難しいです。
SQL文で表示も問い合わせも順番に全部書くってやつもあって昔それをやったので。
Accessのデータファイルがひとつっきりってのも、いったいどうなってるのか悩んだくらいですw
569名無しさん@そうだ選挙にいこう:2009/11/18(水) 22:44:38
質問です。
クエリのフィールドの式ビルダで連続して別の処理を行うには
どうしたらいいですか?
570名無しさん@そうだ選挙にいこう:2009/11/18(水) 22:47:09
死んだら良いよ
571名無しさん@そうだ選挙にいこう:2009/11/18(水) 23:39:34
NOTICE:

OFFICE BETA IS COMING: The Office 2010 Beta will be available in November 2009.
You will be notified via e-mail when it is available and the location of the Beta site will also be posted here.
572559:2009/11/19(木) 00:22:27
>>560
レスサンクス。調べてみたんだが、
どうもBuildCriteriaが""を自動生成していて、エラーになってた。
直接入力するようにして解決。

が、アンド検索が出来ない。
sFilter = "*" & Replace(Me.BOX1, " ", "* And *") & "*"
でMe!BOX2 like *Me!BOX1_1* and *Me.BOX1_2*
にしてた。andで繋いでも駄目なのね。
573572:2009/11/19(木) 01:38:43
split 使って出来ました。
574名無しさん@そうだ選挙にいこう:2009/11/19(木) 08:49:24
Access 2010 Runtime
As many of you know, the Access 2007 Runtime didn’t ship until some time after Access 2007 RTM.
This was cause of frustration for many of our developers who had solutions ready for customers.
This release, we have a goal to ship the Access Runtime as close to Access 2010 as possible. As a part of this effort,
the Access 2010 Runtime Beta is ready for download. You can download the Access 2010 Runtime Beta today.
575名無しさん@そうだ選挙にいこう:2009/11/19(木) 15:05:13
2010ベータ
おれが報告したバグ治ってた
日本語ヘルプも装備されてグッド
576名無しさん@そうだ選挙にいこう:2009/11/19(木) 19:35:58
Web対応だとBVA使えないんやね、やっぱマクロの時代だあ。
577名無しさん@そうだ選挙にいこう:2009/11/19(木) 22:40:57
ACCESSを操作&VBA編集できる携帯ってありますか?
578メモリ君 ◆7mDj3mSGOQ :2009/11/19(木) 23:08:14
>>577
そんなものはありません。

あっても、それは画面のリモートコントロールだけです。
579名無しさん@そうだ選挙にいこう:2009/11/19(木) 23:17:52
>>578
そうですか・・・外出先で確認したいなと思ってました

エクセル見れる携帯はVB使えるんですか?
580名無しさん@そうだ選挙にいこう:2009/11/20(金) 00:04:40
SQLServerでUnionで合成したテーブルが
並び替え順で並びません
なぜかグループ化も合成した部分で勝手にされます
これはバグではないですか?
581名無しさん@そうだ選挙にいこう:2009/11/20(金) 00:06:01
レポートのグループ化や並び順のことです
582メモリ君 ◆7mDj3mSGOQ :2009/11/20(金) 00:20:03
>>581
レポートにはレポートに並び替えの設定があるわけなんですが、

クエリにもクエリの並び替えの順番があります。

自分もいつもひっかかる点なんですが、基準となるフィールドで
クエリで並び替えをしたものをレポートで表示させています。

クエリも、後ろのほうに並び替えだけのためのフィールドを追加
して、好きなように並び替えをしてます。3つくらい設定してますね。
もちろん、表示のチェックははずしています。
583名無しさん@そうだ選挙にいこう:2009/11/20(金) 00:46:20
全然関係のない表のクエリを2個、列をASで同じ列名にしたりしてUnion句で、くっつけてみて
並び代わらなくなって、おかしくなるから
たぶん、ユニオンした下の表が強制で降順になってしまう
ただ、ストアド以外はいけるのかも
584メモリ君 ◆7mDj3mSGOQ :2009/11/20(金) 00:49:26
>>583
Unionクエリを元に、選択クエリつくって、並び替えとか
585名無しさん@そうだ選挙にいこう:2009/11/20(金) 01:05:05
全然別の2つ表をSQLかいてASで強制で全部同じ列名にしてUnionやったソースを元にレポートで並べ替えすると、おかしくならない?
586名無しさん@そうだ選挙にいこう:2009/11/20(金) 01:22:54
すみません、ACCESSで作ったDBアプリを修正しているんですが、
どうにもこうにもわからなくなってしまったので教えてください。

項目Aという入力欄を作ったんですが、入力する内容が多くなった為、
項目Bという入力欄を新しく作りました。
項目Bは項目Aに入りきらない内容の場合分けて入力する事になります。
しかし、項目Aは主キーになっている為、Bの内容が違っていても
Aの内容が一緒だと重複扱いになってしまいます。

条件
・Aの内容が一致してもBが一致しなければ重複扱いしたくない。
・BはNULLの場合がある為、NULL許容できる仕様にしなければいけない。

上記の条件を満たすにはどのようなDBにすればいいでしょうか?
教えてください。
587名無しさん@そうだ選挙にいこう:2009/11/20(金) 01:36:10
追加順って主キーを一番左に作れば良いかと
あとは主キーなしでおk
588名無しさん@そうだ選挙にいこう:2009/11/20(金) 01:44:37
項目AとBで主キーにしたら駄目なのか?
589586:2009/11/20(金) 02:01:46
>>588
Bを主キーにしたらNULL許容できないじゃありませんか?
590名無しさん@そうだ選挙にいこう:2009/11/20(金) 02:03:34
サロゲートキーの方が良くね?
591トリプルクリック ◆M4VDFNZnqs :2009/11/20(金) 04:01:14
項目Aと項目BでNULLを許容する一意制約をつけるにはどうするんだっけ
インデックスとか使えばできるんだっけ?
592名無しさん@そうだ選挙にいこう:2009/11/20(金) 10:50:26
>>586
発想の転換で、Aの長さをA+Bの長さにしてBを無くせばよろしい。
長さがオーバーしてしまうのか?(←質問の情報不足)
ならばAのデータ型をメモ型にすればよろしい。
それがいやなら、AとBをインデックスにしてBを空文字許可すればよろしい。
Bに値を入れる場合NULL→空文字変換が要るかも知れんが、そこは試してみれ。  がんばれ。
593名無しさん@そうだ選挙にいこう:2009/11/20(金) 11:23:19
>>トリプルクリック ◆M4VDFNZnqs

Excel VBA質問スレ Part13
http://pc12.2ch.net/test/read.cgi/tech/1254281104/

こっちのほうがいいのでは?
594名無しさん@そうだ選挙にいこう:2009/11/20(金) 12:25:46
やっぱりUnionでくっつけた所で勝手にグループ化される、バグじゃないの?
595名無しさん@そうだ選挙にいこう:2009/11/20(金) 12:29:45
グループレベル1を不可視にしたら、Unionしたレポートでも普通に表示されたから、グループが壊れてるよこれ
2007では直った?
596名無しさん@そうだ選挙にいこう:2009/11/20(金) 13:52:01
2010ベータで、LongLongが追加されてるねぇ
まぁVBA全般の話だけれども。
597名無しさん@そうだ選挙にいこう:2009/11/20(金) 21:10:58
LongLong??
598名無しさん@そうだ選挙にいこう:2009/11/20(金) 22:48:37
64ビットの時代かー。
599名無しさん@そうだ選挙にいこう:2009/11/21(土) 16:30:05
Access2010β版使ってみた、けっこう良いかも。リボンインターフェイス敬遠してたから
2007はスルーしてたけど。製品版買っちゃおうかしら。
600名無しさん@そうだ選挙にいこう:2009/11/21(土) 17:45:59
どの辺がよいのか、kwsk
601名無しさん@そうだ選挙にいこう:2009/11/21(土) 20:49:10
>>568
時間がありそうなら、SQLServerExpressにAccessのデータをエクスポートして
SSMSからさわってみると、少し変わるかも?
#SQLの入門書、やった方がいいと思う
602名無しさん@そうだ選挙にいこう:2009/11/21(土) 21:47:39
>>600
2007には既に実装されてるんだろうけどデザインビューとデータシートビューを
一々切り替えなくていい所とか。リボンインターフェイス(?)もAccessに関しては
慣れたらそんなに苦にならないようだし。そんな些細な所。。。Macの仮想環境、しかも
Windows7RC版で使用してるし、Access初心者でもあるので突っ込んだ質問しないでね〜。
603名無しさん@そうだ選挙にいこう:2009/11/21(土) 22:39:23
フォームとかレポートでテキストボックスなんかのオブジェクトの配置をVBAで設定する方法教えてください
604名無しさん@そうだ選挙にいこう:2009/11/21(土) 22:58:36
>>603
TextBox."Height/高さ" プロパティ
TextBox."Top/上位置" プロパティ
TextBox."Left/左位置" プロパティ
TextBox."Width/幅" プロパティ
605名無しさん@そうだ選挙にいこう:2009/11/21(土) 22:59:26
2010β
式ビルダとかマクロエディタでintelisense働くから使いやすくなったのぉ
デフォルトのコントロール名を英文にできたら便利だなぁ。
606名無しさん@そうだ選挙にいこう:2009/11/21(土) 23:09:53
どうもありがとうございます
607名無しさん@そうだ選挙にいこう:2009/11/21(土) 23:25:14
LongLongって見当たらないが、64ビット版の話し?
64ビット版では最大ファイルサイズ2Gも拡大されてるの?
608600:2009/11/21(土) 23:56:41
>>602
dクス

。。。2007と大して変わってないってことかな。
609名無しさん@そうだ選挙にいこう:2009/11/22(日) 00:34:31
LongLongは64bitのみでっせ。
32bitならオーバーフローしますわね。
2GBはどうだべな。
610名無しさん@そうだ選挙にいこう:2009/11/22(日) 01:08:20
2GBは超えられなかったぜ。エヘヘ
611名無しさん@そうだ選挙にいこう:2009/11/22(日) 08:36:50
>>609,610
ありがと
612::::::2009/11/22(日) 15:36:24
http://mixi.jp/view_community.pl?id=3669474

悩み事受付中♪♪♪ ドラゴンにあえるよ。
613名無しさん@そうだ選挙にいこう:2009/11/22(日) 16:03:32
>>601
うわ、レスついてる。どうもありがとう。
エキスパートな人たちの中に書き込みして浮いてしまったと後悔してましたw
時間があるとき、案内のものをみてみます。

ついででなんですけど、同じLANの中にLinuxのサーバーが建っていて、これも
そこのrep2から書いています。rdbmsにデータが入る掲示板が動いていたり、
ターミナルから使う程度のちょっとしたデータベースの利用をしていたりするんです。
Accessはデータエンジンの切り替え(接続?)が出来るみたいですけど、
Lanを通してLinux上のMySQLなどを使えたりするんでしょうか? そのときの
データベースウインドウなどはどう見えるのかな? とか、いろいろ興味はあります。
614名無しさん@そうだ選挙にいこう:2009/11/22(日) 17:24:23
>>613
ODBCについて調べて見れ。
615名無しさん@そうだ選挙にいこう:2009/11/22(日) 17:25:39
うぎゃー、Technical Preview programってもう締め切られてるやんorz
ちなみに2007で廃止されたユーザーレベルセキュリティって
2010ではどうなんでしょう?
>>599様教えて下さい
616名無しさん@そうだ選挙にいこう:2009/11/22(日) 17:54:54
【 システム環境  . 】 Windows Vista Professional、Access 2007
【 VBAが使えるか .】 はい
【 VBAでの回答  】 可
【 検索キーワード 】 タブコントロール サブフォーム VBA


フォーム上にタブコントロールを貼り、タブコントロールにサブフォームを貼っています。
サブフォームはデータシート形式で動的なSQL実行結果を表示したい。

動的なSQLとは、サブフォームと同じタブ上にあるテキストボックスに入力された条件で
テーブルから結果セットを抽出するSQLです。

dim strsql as string
dim db as database
dim rs as recordset

set db = currentdb
strsql = "SELECT * FROM tbl_Syohin WHERE Syohin_ID = " & me.txt_Syohin_ID & "'"
set rs = db.openrecordset(strsql,dbopendynaset)
me.sub_Shohin.recordsource = rs
me.sub_Shohin.requery

にてサブフォームにSQL実行結果が表示されません。
表示する方法をご教授くだたい。

617名無しさん@そうだ選挙にいこう:2009/11/22(日) 18:13:03
>>616
me.sub_Shohin.form.recordsource = rs
me.sub_Shohin.form.requery

>>615
599じゃねぇけど、2007と同じだよ
618名無しさん@そうだ選挙にいこう:2009/11/22(日) 18:44:24
>>617
コンパイルエラー:
型が一致しません。

と言われます。 .recordsource の部分です。。。
619名無しさん@そうだ選挙にいこう:2009/11/22(日) 18:53:27
>>618
me.sub_Shohin.form.recordsource = strsql
これが正しいんじゃないかな?
620名無しさん@そうだ選挙にいこう:2009/11/22(日) 19:02:47
>>619
= strsql にしたらエラーはでなくなりましたが、サブフォーム真っ白けっけのまま反応ありません。。。
621617:2009/11/22(日) 19:03:26
>>618
ぉょ
レコードソースにレコードセットいれるのはあかんわなw
me.sub_Shohin.form.recordsource = strsql
でいいじゃろ。rsとdbはいらんな、DAO使うまでもねぇって話だった。

strsql = "SELECT * FROM tbl_Syohin WHERE Syohin_ID = " & me.txt_Syohin_ID & "'"
最後のシングルクォーテーションもだな
622名無しさん@そうだ選挙にいこう:2009/11/22(日) 19:15:37
>>621
うぅぅむ・・・

me.sub_Shohin.form.recordsource = strsql
にしてみました。
またSQL文の最後のシングルクォートははずしました。
Syohin_ID はLONG型のカラムなのに変なことしていましたね。


結果、やはりエラーは出ませんが、サブフォーム真っ白けっけで反応ありません。
フォーム上に張り付けたサブフォームと、
タブコントロール上に張り付けたサブフォームとでは、
なんかやり方がちがうところがあるんですかねぇ・・・

クマっています。
623617:2009/11/22(日) 19:34:08
>>622
クエリ結果が0行っぽい感じだな。確認してみれ
タブ上でも問題ないはずよ
624名無しさん@そうだ選挙にいこう:2009/11/23(月) 22:46:18
sharepoint access service 使えるようにしてみたぞー
なんだろこれw ちょっと脱力。。。
625名無しさん@そうだ選挙にいこう:2009/11/23(月) 22:59:34
>>624
kwsk頼む、access service密かに期待してた
626名無しさん@そうだ選挙にいこう:2009/11/23(月) 23:12:27
>>624
見てみたいのでurl書いてちょ
627624:2009/11/23(月) 23:28:39
>>625
大きな期待は禁物ですが、どんなことkwsk?
俺もいろいろ試したいが、お題目があんまりないのである。

>>626
なんのURLだ

Hyper-Vスナップショットを手違いで消しちまったから再インストール中
23:45には完成予定
628624:2009/11/23(月) 23:41:36
インストールまだ終わらんから手順でも書いとく。
ttp://blogs.msdn.com/access/archive/2009/11/19/access-services-overview-and-install-information.aspx
・必要なもの
SharePointServer2010(Foundationはだめ)
MSSQLServer(上記対応Ver.)
必須サービスを調べるのが面倒だからフルインストール、ReportingServiceが必要みたいなこと書いてある。

インストールは、
1.MSSQLServer
2.SQL Server 2008 R2 November CTP Reporting Services Add-in for Microsoft SharePoint Technologies 2010
3.SharePointServer2010
以上、これだけ。
629名無しさん@そうだ選挙にいこう:2009/11/24(火) 08:17:43
accessで、
350の項目数のタブ区切りのテキストデータを読み込もうとしたら、
項目が2百いくらのところで切り落とされてしまいました。
フィールド数を増やすにはどうすればよいでしょうか?
630名無しさん@そうだ選挙にいこう:2009/11/24(火) 08:37:06
>>627
あなたのsharepointアクセスサービスに入るurlきぼん
631624:2009/11/24(火) 12:37:07
>>630
それはできない相談だ。

>>629
テーブルの最大フィールド数は255なので分割するなどして。
632名無しさん@そうだ選挙にいこう:2009/11/25(水) 08:16:53
>>631
255から増やすことはできないのですか?
633名無しさん@そうだ選挙にいこう:2009/11/25(水) 09:00:41
その発想はなかったわ・・・
634名無しさん@そうだ選挙にいこう:2009/11/25(水) 15:35:42
635名無しさん@そうだ選挙にいこう:2009/11/26(木) 02:22:07
sharepoint access service の環境を片付けるのでチラ裏。
・Webオブジェクトはデザインビューがない
・マクロのみ
・データマクロやマクロは、sharepointワークフローなどに変換
・テーブルはsharepointリストに変換
・webアプリの画面遷移は、ナビゲーションフォームを使用
・フォームを開くコマンドはダイアログモードのみ
・レポート関連については、SQLServer Reporting Serviceが担当
・sharepointなのでパフォーマンスはServer次第
runtimeの代わりになるかなと期待あったけど、今のところそれはなさそう。
636名無しさん@そうだ選挙にいこう:2009/11/26(木) 10:28:16
>>635

637名無しさん@そうだ選挙にいこう:2009/11/26(木) 17:49:34
住所入力支援を使って郵便番号を入れたとき
テキストボックス1には市町村名を
テキストボックス2には分割なしを
それぞれ表示させるにはどうしたらいいですか?

例)
001-0011
テキストボックス1=札幌市
テキストボックス2=北海道札幌市北区十一条西(1〜4丁目)
638名無しさん@そうだ選挙にいこう:2009/11/26(木) 18:17:00
>>637
3分割して、テキストボックス2は3分割したのを結合すればいいじゃない
639名無しさん@そうだ選挙にいこう:2009/11/26(木) 19:00:00
なるほど!その手があったね!んで試してみました。
欲しいのは市町村名と全部を繋げた住所なので、3分割にして 
Text1に都道府県(非表示)、
Text2に市町村 (表示)、
Text3に住所   (非表示)
それぞれchangeイベント発生時に文字列を結合してText4に表示!これで完璧です♪
ただ、「住所」→「郵便番号」ができないのはしょうがないですね
なにはともあれ、サンクス!
640名無しさん@そうだ選挙にいこう:2009/11/26(木) 20:19:14
>>639
住所をメモ帳にコピペして選択状態にしてキーボードの変換キー(スペースキーの1つ右)を押すと
郵便番号に変換できるけど、これをAccessで実現できないのかな?IME関連のAPIでも使うんだろうか?
ちなみに読み方がわからない漢字があったら同様にするとひらがなに逆変換できるからよくやる。
6411/2:2009/11/26(木) 21:42:56
お願いします。
ac2003使ってます。
下記コードを実行すると、1度目は正常に動きますが2度目以降はエラーが発生します。

原因はプロセスEXCEL.EXEが残ってしまっているせいでした。
1文づつふるいにかけていくと、
callで外部のものを呼んでいる一文に原因があることが分かりました。
しかしながら、原因は分かったもののどれだけ試しても
どうしてもEXCEL.EXEをプロセスから消すことが出来ません。

初歩的な質問かとも存じますが、どうぞよろしくお願いします。

642379:2009/11/26(木) 21:46:11
Public Sub コマンド0_Click()
Dim xls As Excel.Application: Dim xwb As Excel.Workbook
Dim xws As Excel.Worksheet: Dim tar As String

tar = "word1"
Set xls = CreateObject("Excel.Application")
xls.Visible = True

Set xwb = xls.Workbooks.Open("C:\Documents and Settings\Owner\デスクトップ\tttt.xls")
Set xws = xwb.Worksheets("Sheet1")
With xws

Call aaaa(tar)     ←この一文

.Application.DisplayAlerts = False
.SaveAs ("C:\Documents and Settings\Owner\デスクトップ\testt.xls")
.Application.DisplayAlerts = True
End With

Set a = Nothing; Set xws = Nothing
xwb.Close; Set xwb = Nothing
xls.Quit; Set xls = Nothing
End Sub
-------------------------------------
Public Sub aaaa(strr As String)
If strr = "word1" Then
Range("A2").Value = "a"
End If
End Sub
643名無しさん@そうだ選挙にいこう:2009/11/27(金) 00:33:52
>>641
aaaa()内で、親オブジェクトの修飾せずにRangeを使っているのが原因。
正しくはxws.Range(...)でしょうね。
引数にxws渡すとか何かするよろし。

ところで、論理行区切りがなんでコロンじゃなくセミコロンなん?
JavaScriptかよ。
644名無しさん@そうだ選挙にいこう:2009/11/27(金) 00:39:54
むちゃくちゃ複雑なSQL書いて抽出したデーターを、元のデーターから除外したい。
でも、accessって差集合は対応していないよね。
どうしたらいいの?
645名無しさん@そうだ選挙にいこう:2009/11/27(金) 04:18:32
>>644
EXISTSとかLEFT JOINで対応
646名無しさん@そうだ選挙にいこう:2009/11/27(金) 08:23:09
Access2002を使ってますが、弥生給与9から10にバージョンアップしたところ、
Access2002が起動できなくなりました。(インストールの準備中・・・が立ち上
ってそのまま何も起きません)
弥生給与9に戻すと起動できます。
OSはXP−Personalで弥生会計9も入ってます。
Accessも弥生も使用しますので、両方使えるようにしたいのでよろしくお願いします。
647名無しさん@そうだ選挙にいこう:2009/11/27(金) 11:22:17
>>646
Accessのバージョン違いが同居するPCの場合、バージョンを切り替えるごとに
インストールの準備中→ セットアップが完了してから起動するのが本来の姿です。
今回の場合、弥生給与10のインストールによりAccessのバージョン違いの新しい
コンポーネントが導入されたのが原因かと思われますが、なぜAccess2002の
セットアップが完了しないのか?という点については詳しくは分かりません。
Access2002を導入後、PCのドライブを増設したなどはありませんか?

とりあえず試して頂きたいのは…
・Access2002,弥生給与10ともにアンインストール
・Access2002を先に再インストール
・次に弥生給与10を再インストール

これでも同じ症状が出るようでしたら、弥生のサポセンへ相談しましょう。
弥生給与10のアップデートは始まって間もないとは言え何か情報を持っているはずです。
648名無しさん@そうだ選挙にいこう:2009/11/27(金) 16:18:02
>>647
回答ありがとうございます。ドライブの増設はしてません。
弥生のサポセンにTELしましたが、やっぱり10はまだ情報が乏しく
良い回答が出ませんでした。

他に影響がでるか心配だったので避けていた、Access2002と弥生給与
アンインストールして再度インストールしました、最初はエラー出ま
したが、修復かけてたら何とか納まりました。

ありがとうございました。
649641:2009/11/27(金) 22:27:17
>>643
遅くなりました
;なのは書き込めなかったので、改行減らしたときのミスです。

rangeのオブジェクト修飾を色々試しても、
オブジェクトが必要だとか見つからないだとか、グローバルなんとかだとか
どうしてもうまく書けないです・・。

参考までにこの部分の数行のサンプル書いてみてくだされば幸いです。。
650643:2009/11/28(土) 00:24:11
>>649

Call aaaa(xws, tar)

Public Sub aaaa(xws As Excel.Worksheet, strr As String)
  If strr = "word1" Then
    xws.Range("A2").Value = "a"
  End If
End Sub

みたいな感じじゃないの。
651名無しさん@そうだ選挙にいこう:2009/11/28(土) 01:40:44
>>649
>>650でたぶんOK。個人的には・・・

With xws

If IsWord1(tar) Then
.Range("A2").Value = "a"
End If
 :
 :
End With

-------------------------------------
Public Function IsWord1(strr As String) As Boolean
If Strr = "word1" Then
IsWord1 = True
Else
IsWord1 = False
End If
End Function
652名無しさん@そうだ選挙にいこう:2009/11/29(日) 17:06:06
【 システム環境  . 】 Access97
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否

とある項目の中に入っている「空白」を
クエリ上で消せないのか、という質問です。

会社で毎日10万行くらいのテキストデータが送られてくるのですが
それをアクセスにインポートした際、
その中の「電話番号」という項目が
「03 1234 5678」とスペース入りで打たれている上に
「0312 34 5678」とスペースの入っている位置がメチャクチャだったりするため
一旦テーブル上で「編集」→「置換」で
「 」を「null」に置換えて「0312345678」としてから、他のクエリに使っています。

毎日置換え作業をするのがわずらわしいので
クエリの中で直接エクセルのノリで
「電話番号加工後:Replace([電話番号]," ","")
という指定をしたのですが全く作動しませんでした。

クエリ上でReplaceは使えないのでしょうか?
それとも、もっと手っ取り早く「空白を消す」という関数はあるのでしょうか?
(「Trim」は複数の空白を1個にするだけで、空白は消えませんでした)
653名無しさん@そうだ選挙にいこう:2009/11/29(日) 17:43:30
>>652
全く作動しないってのはわかりませんが、
クエリでReplaceは使えますから、別の件で問題があるのでは?
654名無しさん@そうだ選挙にいこう:2009/11/29(日) 18:13:56
>>652
クエリがエラーを出して動作しないのか、それとも動作はするが思った結果が得られないのかで
ずいぶん話が変わってくるけれど・・・

前者の場合はSQL表示にして構文の確認。
後者の場合は「スペース」の正体を知るためにASC関数でチェックした方が良さそう。
スペースにも全角・半角があるし、スペースのように見えて別の特殊文字かもしれない。
655653:2009/11/29(日) 18:17:46
>>652
ちょっと閃いた気がする。。。
インポートした電話番号のフィールドがnullが含まれてるのかも。
そーすっとReplaceは評価されない。
replace(nz([電話番号])," ","")
これでうまくいったら、エラーをきちんと吐かない97が悪い。
クエリ上の関数でエラーでてるのになんの表示もしないって、2000だか97でなかったっけか?
つーか、97はいつまでつかうのよw
656名無しさん@そうだ選挙にいこう:2009/11/29(日) 22:55:37
>>652
Replace関数はAccess2000(VBA6.0)から追加された関数なので、97にはないよ。
ユーザー定義関数を作れば呼べると思うので、下記からコピペしてみたら?
ttp://support.microsoft.com/kb/188007/ja
657名無しさん@そうだ選挙にいこう:2009/11/29(日) 23:04:11
>>650,651
遅くなりました。
引数にワークシート加えて指定したり
関数で判定だけさせるって発想なかったす。
まだ試せていませんが、明日試して報告します。
丁寧にありがとうございました!!
658名無しさん@そうだ選挙にいこう:2009/12/01(火) 03:31:38
競馬ソフト作成している人いる?
659名無しさん@そうだ選挙にいこう:2009/12/01(火) 18:20:21
ADOでレコードセットオブジェクトの内容をデータシートビューで表示する魔法を教えてください
660名無しさん@そうだ選挙にいこう:2009/12/01(火) 18:23:59
ここでいろんなソフト売ってます
メールを送るとリストが
[email protected]
661名無しさん@そうだ選挙にいこう:2009/12/01(火) 20:27:39
>>658
水上さんこんばんは
662名無しさん@そうだ選挙にいこう:2009/12/01(火) 20:54:33
CASEを使いたいんだけど、ANSI-92準拠って2003からだっけ?
663名無しさん@そうだ選挙にいこう:2009/12/01(火) 21:14:01
coalesceさえ使えねえよ
664名無しさん@そうだ選挙にいこう:2009/12/01(火) 21:26:00
結局iifの入れ子しかないよなw
665名無しさん@そうだ選挙にいこう:2009/12/01(火) 22:23:04
というかANSIはiifを国際標準にするべき
666名無しさん@そうだ選挙にいこう:2009/12/01(火) 22:52:33
iifは全部評価するから遅い
667名無しさん@そうだ選挙にいこう:2009/12/01(火) 22:59:58
2010は新しいイベントやプロパティやコマンドはないのかよ
668名無しさん@そうだ選挙にいこう:2009/12/01(火) 23:45:27
>>666
そうなるとレコードセット開いてループ内での判定処理になる訳だ・・・
アクセスって非力すぎて悲しい・・・orz
669名無しさん@そうだ選挙にいこう:2009/12/02(水) 03:34:34
>>661 何故、水上?
670名無しさん@そうだ選挙にいこう:2009/12/02(水) 06:51:44
>>669
つグリーンチャンネル
671名無しさん@そうだ選挙にいこう:2009/12/02(水) 08:48:29
競馬でACCESSでも導入しないと勝ちようがないよな。
672名無しさん@そうだ選挙にいこう:2009/12/02(水) 13:32:55
Accessとは関係ないが、昔プログラムの勉強で「馬券の損しない買い方」っていうのをやったな。
券種は忘れたが、ルールは以下のとおり。

・常に2番人気を買う。
・100円から開始。
・配当で元が取れない場合は、掛け金UP。
・勝ったら100円から。
・配当は2倍と仮定する。

で、実際の配当を元に、一年後いくら儲けが出て、また最高掛け金はいくらになるかっていうの。
673名無しさん@そうだ選挙にいこう:2009/12/02(水) 15:45:31
マーチンゲール?
674名無しさん@そうだ選挙にいこう:2009/12/02(水) 16:39:09
>>673
マーチンゲールっていうのか。
俺がやったときは最高掛け金16000程度で120000程度は儲かる結果となったが
分が悪いみたいだね。
675名無しさん@そうだ選挙にいこう:2009/12/02(水) 17:23:10
2007の開発者用ヘルプ見ながら2010使いたいんだけど、どうしたら良い?
どっかに2007開発者用ヘルプない?
676名無しさん@そうだ選挙にいこう:2009/12/02(水) 19:48:16
【 システム環境  . 】 Windowsxp, Access2000
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】否
db1 db2 db3を結合したクエリを作って対象データを抜き出しましたが、
並び順を指定していないにも関わらず、元DBと並びが違う為、困ってい
ます。

db1と同じ並び順にするにはどうすれば良いでしょうか?
677名無しさん@そうだ選挙にいこう:2009/12/02(水) 19:58:53
並び順を指定してください
678名無しさん@そうだ選挙にいこう:2009/12/02(水) 20:27:23
>>674 マーチンゲールの法則は連敗が続いたら、多額の資金が必要となるから
資金を用意出来なければ破綻する。
679名無しさん@そうだ選挙にいこう:2009/12/02(水) 20:30:33
>>676
並び順が気になるなら、ちゃんと指定しろ。
指定しなければ不定が常識。
680名無しさん@そうだ選挙にいこう:2009/12/02(水) 20:44:38
681名無しさん@そうだ選挙にいこう:2009/12/02(水) 21:21:12
>>680
おおお、サンクス
でもプロパティボックスの日本語プロパティ名と対応しにくいよな、日本語訳が下手杉
682名無しさん@そうだ選挙にいこう:2009/12/02(水) 21:41:05
【ver.】Access97
【質問内容】
  :テーブル1のフィールドは以下
   ID(主キー)、フィールド1(text)、フィールド2(text)、番号(数値)
  ●このテーブルから任意のデータを先頭から呼び出してフォームに
   表示させる方法「など」をご教示ください。
  ●イメージとしては次のような感じです。
   1 まず最初にID順に先頭から100個のデータをフォームに表示させ、
     このフォーム上で、番号に「1」または「2」と入力します。
   2 1で番号「2」が10個あった場合には、次にフォームを開くときには、
     この10個を除いた先頭の100個を同じフォームに表示させます。
     つまり、1で「番号2」とした10個以外に次の10個が追加になります。

  *Accessは簡単なものしかできないレベルなので、Select ...などの
   記述はできません。普通のクエリー作成画面でなんとかしたいのですが。
   よろしくお願いします。
683名無しさん@そうだ選挙にいこう:2009/12/02(水) 22:30:18
Access97のサポートは終了しました
684名無しさん@そうだ選挙にいこう:2009/12/02(水) 22:40:33
代を重ねる度にヘルプはどんどん重たく解りにくくなってくよな・・・
685名無しさん@そうだ選挙にいこう:2009/12/03(木) 02:11:31
>>682
まだ97使ってるのか・・・細かいことは忘れたがこんな感じでできないか?
・まず[番号]<>2 を抽出条件,[ID]を昇順とした選択クエリをデザイン。
・併せてこのクエリのプロパティにて「トップ値」に100を設定して保存。
・このクエリを元にフォームを作る。
686名無しさん@そうだ選挙にいこう:2009/12/03(木) 17:40:07
2003なんだけど、ANSI-92のCASEの代わりにswitchを使っていいの?
この本を読んだら無性にCASEを使いたくなったんだけど…
http://www.amazon.co.jp/exec/obidos/ASIN/4798115169/hatena-hamazou-22/
687名無しさん@そうだ選挙にいこう:2009/12/03(木) 18:02:16
688名無しさん@そうだ選挙にいこう:2009/12/03(木) 19:22:22
【 システム環境  . 】 WindowsXP、 Access2003、SQL2005
【 VBAが使えるか .】 はい
【 VBAでの回答  】 可能
環境をADP接続にすることになりました
コンボボックスから値を選択後、ボタンを押すとレポートを開くフォームがあります
現在、そのレポートのレコードソースにクエリが入っています
ADP接続だと、現行のフォームのコントロールを参照する式が使えませんでした
どのように変更すれば良いのでしょうか教えて頂きたいと存じます
現行のWHERE句は以下です

WHERE (((取引先マスタ.取引先コード) Between [forms]![f_取引]![ボックス1] & _
And [forms]![f_取引]![ボックス2]) AND ((取引先マスタ.取引先区分コード)=1))
689名無しさん@そうだ選挙にいこう:2009/12/03(木) 19:35:53
質問です
Access2003です。

今回excelを取り込むものを作りました。

流れは、ファイル選択>中間テーブルに一旦取り込み(エラー処理はまだなし)
>追加クエリにて中間テーブルからメインテーブルに追加
と言うものなのですが、このどこかに取り込んだ内容により対応する
処理をするようにしたいですが可能ですか?

処理は取り込んだとある欄に対応するデータを表示(1ならAを表示みたいな)と
対応する数字によって消費税率を変えて計算して最後に両方をメインテーブルに入れたいです。
690名無しさん@そうだ選挙にいこう:2009/12/03(木) 19:40:36
質問です。
クエリのフィールドの式ビルダで連続して別の処理を行うには
どうしたらいいですか?
691名無しさん@そうだ選挙にいこう:2009/12/03(木) 20:58:58
そんなにエクセルが好きならエクセルのほうでとある欄に対応する
データを表示(1ならAを表示みたいな)と対応する数字によって
消費税率を変えて計算しておけばいいじゃない
692名無しさん@そうだ選挙にいこう:2009/12/04(金) 00:28:50
>>690
連続して別の処理を行うとは?

左からクエリで演算して、さらにその結果をとなりの列で
演算とか?
693名無しさん@そうだ選挙にいこう:2009/12/04(金) 00:32:02
>>691
そうしたいのも山々だったのですが

ちょっとそうもいかないのです。

するにはどのようにしていけばよいのでしょうか。
694690:2009/12/04(金) 13:22:57
>>692
同一フィールドで、関数を使用して処理をした後に、別の関数で別の処理をすることです
モジュールに記載すると同じ処理でもなぜかうまくいかないので、式ビルダでなんとかしたいです
695名無しさん@そうだ選挙にいこう:2009/12/04(金) 15:39:20
>>モジュールに記載すると同じ処理でもなぜかうまくいかない
なわけねえだろ
696名無しさん@そうだ選挙にいこう:2009/12/05(土) 21:26:48
>>695
いや 昔、単体テストで動いてるモジュールを メインに組み込むと
動かないんですけど とクレームをつけられたことがあるぞ
697名無しさん@そうだ選挙にいこう:2009/12/05(土) 22:57:09
みなさん、教えてください。
ACCESS単体で使っている人はどんな使い方をしてるのでしょうか。
ちなみに私は、エクセルと連携して使っています。ACCESSはデータベースとして利用。
エクセルVBAでACCESSを制御しています。
たまに、クエリーでACCESSを動かして使います。
698名無しさん@そうだ選挙にいこう:2009/12/05(土) 23:33:51
2010はIME制御が不安定だなぁ
699名無しさん@そうだ選挙にいこう:2009/12/05(土) 23:49:06
>>696
単体テストだけで満足して結合テストしてないからだろ
700名無しさん@そうだ選挙にいこう:2009/12/06(日) 13:25:18
>>699
たぶんそうなんだろうね。
大手の子会社なんで、めまいがしたよ
701名無しさん@そうだ選挙にいこう:2009/12/06(日) 13:31:07
そういう現象が起きたんですけど
とサポートの電話で文句を言われたんだよん
#すべて客先内部での話
702名無しさん@そうだ選挙にいこう:2009/12/06(日) 13:42:18
日時型の表示形式で、nn:ss って出来ます?
2010では出来ない。。。
703名無しさん@そうだ選挙にいこう:2009/12/06(日) 13:45:41
>>697
そういう用途にはSQL鯖 Express 使うから、最近Access使ってないかも
ADPって使ってる人いるのかな?
704名無しさん@そうだ選挙にいこう:2009/12/06(日) 17:12:06
>>702
リボンからだとできないっぽいな。
プロパティシートからはできるよ。
これから調整はいるんじゃね
hhもできないんだがな by 64bit
705名無しさん@そうだ選挙にいこう:2009/12/07(月) 08:40:22
>>704
プロパティシートからもVBからもできない@32ビット
時刻(S):n:s になってしまう
706名無しさん@そうだ選挙にいこう:2009/12/07(月) 19:53:57
Access2010 βについて質問
・「データベースツール」タブの「管理」を表示させるにはどうしたらいいのか?
707名無しさん@そうだ選挙にいこう:2009/12/07(月) 20:24:33
>>706
その辺のコマンドは、97-2000ファイル形式とかの互換用だでな
そのバージョンのmdbを開くと活性化となるでよ。動くかどうかは知らん。
708名無しさん@そうだ選挙にいこう:2009/12/07(月) 21:10:45
>>707
さんきゅー。仰るとおり。mbdファイルだと表示されたわ。
どんなカラクリなのか今の私には分からんのじゃが。追々勉強しまっさ。
709名無しさん@そうだ選挙にいこう:2009/12/08(火) 16:07:04
相談させてください。

★OS Win XP〜7

★Access2007

★会社にてAccess97→2007へ切り替えることとなりました。
そこで教えて頂きたいのですが、全12台分のPCへインストール予定の場合、ソフトを12購入するのとライセンス購入するの
どちらが良いのでしょうか?

ライセンス購入がいまいちよくわからないです。
1ライセンスで1台ですか?
そうだとすると、ライセンス代よりも格安店で通常ソフトを購入した方が
2〜3千円安いのです。
少し高くてもライセンス購入した方が後々良いことがあるのか、大差ない
なら通常ソフトでいいのか。

お分かりになる方がいらしたら、どうぞ教えてください。
710名無しさん@そうだ選挙にいこう:2009/12/08(火) 16:38:10
>>709
ボリュームライセンスのほうがいいんじゃないか?
基本的にプロダクトキーが統一されているわけだから(いらないんだっけ?)。
一本一本買っていたらディスク要求されるような更新があった場合、よほど管理されていないとたぶん死ぬ。
で、ライセンス分の(ディスク)コピーをしてよかったはず。
711名無しさん@そうだ選挙にいこう:2009/12/08(火) 17:44:38
2010 テキストボックスのステータスバーテキストプロパティって前からあった? おnewかな
712名無しさん@そうだ選挙にいこう:2009/12/08(火) 18:51:01
【 システム環境 】 WindowsXP, Access2003
【 VBAが使えるか 】 いいえ
【 VBAでの回答 】 可 がんばります
下宿の物件管理をしています。
大家に物件のフォーマットを送るときに、物件の情報と大家の情報が一対一に対応しているので、
封筒に貼るラベルを印刷する際に(複数件物件を持っている大家の)住所が余分に印刷されてしまい困っています。
どうすれば重複している大家の情報を除いた(重複を一件にまとめた)レポートをつくれますか?

よろしくお願いします。



713712:2009/12/08(火) 18:55:34
714名無しさん@そうだ選挙にいこう:2009/12/08(火) 20:22:09
>>712
DISTINCT使うとよろし

>>711
おnewじゃないよ
715名無しさん@そうだ選挙にいこう:2009/12/08(火) 20:26:01
>>712
tbl_大家を作るべきだ
716名無しさん@そうだ選挙にいこう:2009/12/09(水) 00:03:08
住民票だの風呂付きの間取りだのはまだまだ全然先になりそうだなw
717名無しさん@そうだ選挙にいこう:2009/12/09(水) 09:21:54
2010 DatePickerの挙動がオカシイ、日付選択後にフォーカスがテキストボックスに戻らない、2007に戻した

MSの人、見てたら改善して
718名無しさん@そうだ選挙にいこう:2009/12/09(水) 10:03:43
MSの人がみてたらw
719名無しさん@そうだ選挙にいこう:2009/12/09(水) 10:41:40
>>717
VerUpして糞になるのがMSの流儀だよな。
おれは全Ver持っているけど、2002を使っている
720名無しさん@そうだ選挙にいこう:2009/12/09(水) 10:45:30
2010プレビュー コネクトでバグ報告したら返信も何もないで治ってた、βでは日本語で報告する所がないからメンドイから2ちゃんねるに書くだけ
721709:2009/12/09(水) 11:09:53
>>710
ありがとうございました!
早速調べてみます。
722名無しさん@そうだ選挙にいこう:2009/12/10(木) 01:01:36
SQLでFROM句にDAOかADOのレコードセットオブジェクトを指定することはできますか?
723名無しさん@そうだ選挙にいこう:2009/12/10(木) 01:12:33
>>722
状況がよくわかりませんが
SQL文一発で書いてください
724722:2009/12/10(木) 01:21:28
>>723
サブクエリ使うと重くなるので、すでに一度実行したSQLで作成した
レコードセットを再利用して追加でSQLを実行したいのです。
725名無しさん@そうだ選挙にいこう:2009/12/10(木) 12:48:13
フォームのテキストボックスのコントロールソースのデータ型調べるにはどうしたら良いですか?
726名無しさん@そうだ選挙にいこう:2009/12/10(木) 16:34:25
>>724
最初に実行するSQLでワークテーブルを作り、2回目はそれを使えばいい。
(情報が少ない今はこれがベスト)

>>725
テキストボックスのコントロールソースの元となっているクエリまたはテーブルの項目の型を調べればいい。
727725:2009/12/10(木) 16:38:47
VBA で任意の(ActiveControlの)テキストボックスのデータ型を取得したいのですが
728725:2009/12/10(木) 17:11:28
自己解決しますた

Dim sc As String, rs As Recordset, fd As Field
sc = Me.ActiveControl.ControlSource
Set rs = Me.Recordset
Set fd = rs.Fields(sc)
Debug.Print fd.Type
729名無しさん@そうだ選挙にいこう:2009/12/10(木) 19:43:29
質問です。

今TransferSpredsheetを使って
セル指定をしてTMPテーブルに取り込んで、
そこからテーブル内参照でない項目を埋めて、
メインテーブルに取り込む物をつくりました。

今回その取り込む前にexcelのデータチェックをしたいのですが
excelをダイアログから選択>データチェックとするには

どういう手順で記述していくべきですか?
730名無しさん@そうだ選挙にいこう:2009/12/10(木) 20:17:20
>>729
OLEとかODBCでexcelに接続してレコードセット作って検証するとかして、
順次テーブルにinsertしていく感じかな。
もしくは、access側のVBAでexcel開いてCellsとか使って検証したうえでimportか?
731名無しさん@そうだ選挙にいこう:2009/12/10(木) 20:23:50
>>730
書き忘れてました。

今はとりあえず取り込んでTMPで更新クエリ削除クエリを使い完成させ

TMPが完成したら追加クエリでメインテーブルにinsertと言う形なのですが

これを崩さずにできますか?

言われたもの調べてみます。
732名無しさん@そうだ選挙にいこう:2009/12/10(木) 22:28:51
しかし去年からずっとexcelをダイアログから選択してどうのこうの言ってるやつ
とうとうTransferSpreadsheet使える程度にはなったのか。

よかったなw
733名無しさん@そうだ選挙にいこう:2009/12/10(木) 23:04:27
>>732
人違いかと思います・・・

最近始めたばかりなのでACCESSを・・・
734717:2009/12/10(木) 23:07:24
DatePicker オカシイので2007に戻して回復したが、今日から突然2007でもオカシクなった
自動アップデート来た後からの気がする

2010 or 2007 で 日付/時刻型の日付選択カレンダーは普通に動作してますか?
日付を選択後にフォーカス失いませんか?
735730:2009/12/10(木) 23:59:16
>>731
ん、
テンポラリに取り込んで修正して削除してメインに追加するってのは、
レコードセット作っての処理だけで実現可能かなと思っただけ。どの程度の
処理があるのかわからんのでね。その辺は察してね。
今あるものは生かして、事前にexcelの内容をチェックするてんだったら、
VBAでexcelファイル扱って、excelVBA使って確認したらいいんじゃね?
まぁチェックの内容と量にもよるかな。

>>734
フォーカス失うっつーことはないね。2010(64/32)も2007も。
736名無しさん@そうだ選挙にいこう:2009/12/11(金) 00:11:37
>>735
VBAでExcelファイルを扱うしかないですかねぇ・・・
Excel側でチェック入れていいならかなり楽になると思うんですが汗

量は23列あり行は9999もあります。(ただこれは指定してあるだけです)
チェックを掛けたい列は11項目行は大体3000行程度です!
737名無しさん@そうだ選挙にいこう:2009/12/11(金) 00:29:54
VBAでExcelファイルを扱うか、桐にするかしかないよ
738717:2009/12/11(金) 09:03:44
いろいろ試してみたら、職場のVISTAは大丈夫だった
今朝来たらWinアップデートの無限再起動中でたちあがらず、システム復元復帰後

自宅のXPはダメ、日付選択カレンダー選択後にフォーカス失うようになった
2007も2010も
今夜システム復元してみる
739名無しさん@そうだ選挙にいこう:2009/12/11(金) 09:22:27
>>728
おめでとう、頑張ったな。
740名無しさん@そうだ選挙にいこう:2009/12/11(金) 14:30:25
>>724
create tmp したらってAcccessは駄目なのか(な?)
741名無しさん@そうだ選挙にいこう:2009/12/11(金) 15:21:52
初歩的な質問す。
Dim sArray() as String
If (LBound(sArray) > 0) Then
 ・
 ・
 ・

としたら当然If文の行で「実行時エラー'9':インデックスが有効範囲にありません。」エラーが出るんだが、
sArrayの要素数が未確定の状態を取得することって、エラーハンドリング以外でもできる?
742名無しさん@そうだ選挙にいこう:2009/12/11(金) 23:20:45
>>741
懐かしいな。
VB6のFAQだったが。

Dim sArray() as String
If (Not sArray) <> -1 Then
743名無しさん@そうだ選挙にいこう:2009/12/11(金) 23:22:36
IsArray(sArray)で
744名無しさん@そうだ選挙にいこう:2009/12/12(土) 00:38:32
配列かどうかを知りたがっているわけではない
ように見えるんだが。
745名無しさん@そうだ選挙にいこう:2009/12/12(土) 10:02:19
redim sArray(0) しないと駄目じゃね?
#未定義かどうか、判断できねーのか・・・?
746名無しさん@そうだ選挙にいこう:2009/12/12(土) 10:49:55
どういうことをしようとしているのか解らんが、別の方向からアプローチしたほうがいいんじゃね?
先に要素数をカウントするとか。
747名無しさん@そうだ選挙にいこう:2009/12/13(日) 00:40:53
条件付き書式設定して、色替えたりしてるコントロールは、.Enabled=False に出来ない
つーか、.Enabled=False に設定しても編集できちゃう
アクセスって素敵すぎる
748名無しさん@そうだ選挙にいこう:2009/12/13(日) 00:59:05
まあLocked=Trueにしてるからいいけどあれはなんでなんだろうなw
749名無しさん@そうだ選挙にいこう:2009/12/13(日) 01:08:58
条件付き書式で[有効]に設定していて、気づいてないだけとかいうオチじゃねーだろーなw
750名無しさん@そうだ選挙にいこう:2009/12/13(日) 07:45:08
>>748
都合上、.Enabled=False の背景をグレーアウトにしたい
Locked=Trueにするとグレーアウトしなくなるので、また不都合

条件付き書式で色変えたレコードはグレーアウトしない、背景色も設定に変わるから当然だが
で、グレーアウトしないレコードは、.Enabled=False でも普通に編集できちゃう
751名無し:2009/12/13(日) 12:48:28
access2010を開くと2007互換モードにしかならないのはなぜですか?
access2010インストール以前には、どのバージョンのaccessも入っていません。
起動時に「コマンドまたはアクションは無効です。」と表示されます。
access初心者です。よろしくお願いします。
752名無しさん@そうだ選挙にいこう:2009/12/13(日) 13:51:22
>>751
初心者がベータリリースのツールを、さらにはAccess使ったこともない
奴が質問するとか

ちょっとわきまえた方がいいですよ。
753名無しさん@そうだ選挙にいこう:2009/12/13(日) 14:56:21
>>752
質問に答えなさい
754749:2009/12/13(日) 15:55:39
>>750
いやだから、条件付き書式っていうのは、対象コントロールのプロパティが
どうなっていようとも、ある条件を満たしたときには条件付き書式の設定の方が
優先されるからこそ意味があるのよ?
>750 を読んだだけだと、そもそも条件付き書式って何するものか理解して
使っているのかという点に、かなり疑問が生じる。

仮に条件付き書式の[有効](これはヘルプを見ると分かるけど、Enabledに該当)が
オンになっていて(仮にの話よ。どっちの状態なのか一度も書いていないから
分からないけれども)、もしその条件を満たしているのであれば、コントロール自体の
.Enabledに何を設定しようが、その設定が無視されて条件付き書式の[有効]の方が
優先されるのが挙動としては正しいでしょ。
条件付き書式が条件満たしてるのに、ふつうのプロパティの設定に負けてどうすんのよ。
仮に、あなたが本当に適用したいのは色の設定の部分だけで、[有効]の設定は
無視されることを心の中で願っていたとしても、たぶんAccessにその思いは
伝わらないと思う。そういう仕様じゃないから。

もし上記を理解した上で、条件付き書式が正しく動作しない状況があるということを
主張したいのであれば、第三者に再現可能な具体例を挙げてほしい。再現したら、
そこではじめて意思疎通が成り立つわけで。漏れも「ああそういうことを言いたかった
のね、そういうバグがあるんだ、へー」で納得するわ。
そうでないんだったら、傍目には「信号無視したら捕まったんだけど、日本の警察は
どうなってんだ」くらい支離滅裂なことを書いているようにしか見えないということに、
早く気づいてほしい。
いずれでもなく、MSの決めた条件付き書式の仕様があなたの脳内仕様にしたがって
くれないという不満を訴えたいだけなら、ご愁傷様としか言いようがない。
755名無しさん@そうだ選挙にいこう:2009/12/13(日) 22:08:50
>>754

彼女のクリトリスをそっと舌で まで読んだ
756名無しさん@そうだ選挙にいこう:2009/12/13(日) 22:26:49
>>754

という不満を訴えたい まで読んだ
757名無しさん@そうだ選挙にいこう:2009/12/13(日) 23:20:54
桐ならフォーカス設定禁止プロパティあるけどな
758717:2009/12/13(日) 23:29:57
なにしてもダメだったので、2007も2010もアンインストール
2007だけ入れたら治った
安心して2010入れたら症状再発orz

WinXP Access2010
・日付選択カレンダーでフォーカス失う
・IME設定関係の挙動がおかしい
759名無しさん@そうだ選挙にいこう:2009/12/14(月) 01:07:16
>>754
               /:.:.:.:.:.:/:.:.:.:.l:.:、:.:|:.:.:.:.:.:.:.、:.:.:.:.:.:.:.:ヽ:.:.ヽ
            //:.:.:.:./:.:./:/ |:.:.|:.、:.:.:.:.:.:.:.:\:.:.:.:.:.:.l|:.:.:.:ト!
              |:|!:.:.:.:.:!:.:.|:/  !:.:|:.:l:.:.:._l:.:.:.:.l:.:.:.:.:.:.||:.:.:ノ|
              |ハ:.:.:.:.:|:.:.|'| ̄ !:.:ト、\:.:.:.|l`ヽ|:.:.:|:.:/l:/ハ
              l! ヽ:.:.:.l:.:.l:|  ヽl  ヽ=≠-、:.l|:.:.:|//彡/:|\
              \:|:.:.|=-‐    トしrハ|:.:ノ|/! |´|:.:|:.:.:ヽ
                 i`:.l     ,     ー‐' ,':.:.:.:トノ:!:.:l:.:|:.|:.l!|
3行でまとめろよ、ハゲ★|:ノ:.\iヽ ー‐    /:.:.:.:/:|:.:.:.|:.:|:.:lソレ'
               //:.:.:.l「| ト、__,.. ィ/:.:.:.:斗-!:.:.:|:.:.:.:.ヽ
               /:.:/:.:.:./l/ ノ,へ ! /:.:./   \l:.:.:.:.:.:.',
             /:.:.:/:.:.:./|/ 'ー-ri /:.:.:.:/  ,    |ヽ:.:.:.:.:.:',
           /:.:.:.:.ノ!:.:./ !  二j´ /:.:.:.:/ /       l:.:.\:.:.:.:.',
          /:.:.:.:.:.:/ ∨ノ/  ,rノー|:.:/ノ´_,,. -‐  /!:.:.:.:.:ヽ:.:.:l
          !:.:.:.:/_, -‐' .〉 ,ィ´ ̄l:/ '´       /:.|:.:.:.:.:.:.:|:.:.:|
760741:2009/12/14(月) 11:21:07
>>742>>743>>744>>745
みなさんありがとうございました、
今回は動的配列をRedim済みかを知りたかったので、>>742さんの方法でいけました。
(確かにACCESSの質問じゃなかったですね(笑))
761名無しさん@そうだ選挙にいこう:2009/12/14(月) 20:17:03
しかしなぜ>>742のIF文で配列要素数宣言済みかどうかを判定できるのかが理解できない。
括弧を取ったりNotを取って<>を=にするとエラーになる。
だれか理論的に説明してくれないか?
762742:2009/12/14(月) 22:17:44
>>761
すまんが、正確には知らない。
自分がVB6かじったときはふつうにFAQとしてあちこちのサイトに
載っていたので、そういうものだと思って使っていたけど。

たしか、配列は頭にNotを付けると何かのポインタの論理否定を
返すみたいな話だったような。で、ReDimしていないときは領域が
確保されていないので、ぬるぽ0の論理否定すなわち-1を返す、
とかなんとか。

自分よりキャリアの長いVBユーザなら、もっと詳しく知ってるかも。
でも.NETになってもうすぐ8年経つからなぁ。
763名無しさん@そうだ選挙にいこう:2009/12/14(月) 22:22:20
プログラムは理論ではなく実装に沿って行動するからな。

ちなみに理論は解釈によってどうとでもなる。
764761:2009/12/15(火) 00:03:09
>>762
いや一応なんとなく納得できたよありがとう。
今後使わせてもらいます。
765名無しさん@そうだ選挙にいこう:2009/12/15(火) 10:40:34
ACCESS2007で、
別のPCにリアルタイムでバックアップを取得したいのですが
よい方法ってありますか?
ミラーリングさせるソフトを使うのがよいですかね?
766名無しさん@そうだ選挙にいこう:2009/12/15(火) 12:34:53
>>765
スキルによる。自信が無いなら既存のソフトを使ったほうがいい。
バックアップを前提とするのなら、ミラーリングのほかに世代管理できるものを選ぶべき。
767名無しさん@そうだ選挙にいこう:2009/12/15(火) 19:58:58
>>754
ブログで書け
768名無しさん@そうだ選挙にいこう:2009/12/15(火) 21:36:58
>>764
政治思想と物乞いの区別が付かないのが、チョウセンヒトモドキ
769名無しさん@そうだ選挙にいこう:2009/12/16(水) 17:16:11
レポートの印刷イメージをWordに貼り付けたいのですが、方法は有りませんか?
Print Screennでのコピペだと画像が落ちてしまうので、評判が良くありません。
Office LinkでWordに出力すると空白のテキストボックスやボックスが反映されません。
印刷画面をそのまま貼り付けたいのですが、方法が有りましたら教えて下さい。
770名無しさん@そうだ選挙にいこう:2009/12/16(水) 18:01:11
PDF
771名無しさん@そうだ選挙にいこう:2009/12/16(水) 18:04:26
>>769
印刷すればさほど汚くは無いんだけどね。
画像の縮小はしない。ぐらいしか回避法はないんじゃないか。
それか配布するPCにビュアを入れて、スナップショットで渡すとか。
何がやりたいのかわからないけど。
マニュアル作りだったら、スレ違いもいいところ。
772名無しさん@そうだ選挙にいこう:2009/12/16(水) 21:41:54
紙に印刷してスキャナで超高解像度で取り込んでWordに貼り付けろ
773名無しさん@そうだ選挙にいこう:2009/12/17(木) 20:27:00
質問です。

エクセルから6列分のデータをとって来て
それを値にセットして、その値を処理に使う場合どんな書き方すればいいんでしょうか・・・

セット>処理終わったら次の行へ見たいな感じにしたいです。
774名無しさん@そうだ選挙にいこう:2009/12/17(木) 20:59:00
しかし去年からずっとexcelをダイアログ選択してどうのこうの言ってるやつ
もうエクセル全然関係ないだろそれ・・・
775名無しさん@そうだ選挙にいこう:2009/12/17(木) 21:19:28
誰だか知らないですけど
真剣に質問しています。
776名無しさん@そうだ選挙にいこう:2009/12/18(金) 07:29:58
>>775
「Excelからデータをインポートする方法」でggrkでございます。
777名無しさん@そうだ選挙にいこう:2009/12/18(金) 07:32:22
>>775
んで、ADOなりDAOでレコードセットをごにょごにょすればおk
778名無しさん@そうだ選挙にいこう:2009/12/19(土) 05:33:01
AccessでExcelのApplication.GetOpenFilenameのかわりになるものありますか?
779名無しさん@そうだ選挙にいこう:2009/12/19(土) 08:48:53
FileSystemObject をぐぐってみたら?
使えると 色々便利だよ
780名無しさん@そうだ選挙にいこう:2009/12/19(土) 13:24:23
ありがとう。調べてみます。
781名無しさん@そうだ選挙にいこう:2009/12/20(日) 03:41:33
if isnull(aaa) or aaa = '' then
msgbox("err")
exit sub
end if

毎回コレでNull&空白チェックしてるのだが、誰かこれFunctionにして
782名無しさん@そうだ選挙にいこう:2009/12/20(日) 08:18:58
Nz使え
783名無しさん@そうだ選挙にいこう:2009/12/20(日) 21:08:28
>>781
標準モジュールに入れてPublicにして
Exit SubのところをEndにすればいいんじゃね?
784名無しさん@そうだ選挙にいこう:2009/12/20(日) 21:20:44
>>781
Function Check(aaa)
 Len(aaa & "") = 0 Then MsgBox(#err)
End Function
785名無しさん@そうだ選挙にいこう:2009/12/20(日) 21:21:25
IF が抜けてた

Function Check(aaa)
 If Len(aaa & "") = 0 Then MsgBox(#err)
End Function
786名無しさん@そうだ選挙にいこう:2009/12/21(月) 17:08:01
ACCESS2000のVBAでレポートをプレビュー表示するとき、ウインドウのサイズって指定可能?
787名無しさん@そうだ選挙にいこう:2009/12/21(月) 19:55:15
788名無しさん@そうだ選挙にいこう:2009/12/23(水) 18:31:18
【 システム環境  . 】 WindowsXP, Access2003
【 VBAが使えるか .】 はい?
【 VBAでの回答  】 可

SBIでの株取引の履歴をACCESSで管理しているのですが、
取引データで、同日に複数回取引した場合の数字をまとめて表示したいです。

元データは別のファイルからも利用している為、ACCESS内で何とかしたいです。
クエリのクロス集計をしてみましたが、約定単価の算出する計算をどうしたらいいのか見当がつきません。
そもそもこういう事は出来るんでしょうか?
なにかヒントをいただけませんか?

テーブル1
取引日 銘柄コード 銘柄名 取引種別 約定数量 約定単価 受渡金額/決済損益

データ例
2009/12/01 1234 ○○商事 現物買 1000 200 200000
2009/12/01 1234 ●●自動車 現物買 1000 500 500000
2009/12/01 1234 ○○商事 現物買 500 180 90000
2009/12/02 1234 ●●自動車 現物買 1000 520 520000

希望データ
2009/01/01 1234 ○○商事 現物買 1500 193.33 200000
2009/01/01 1234 ●●自動車 現物買 1000 500 500000
2009/12/02 1234 ●●自動車 現物買 1000 520 520000
789名無しさん@そうだ選挙にいこう:2009/12/23(水) 19:19:46
集計クエリでできそうな気がする
790名無しさん@そうだ選挙にいこう:2009/12/23(水) 19:32:58
いや、集計クエリでできる。もしかしたらウィザードを使用してもできるかも。
ただ銘柄コードが同じなのと、

>希望データ
>2009/01/01 1234 ○○商事 現物買 1500 193.33 200000

となる理屈がよくわからないが。
791790:2009/12/23(水) 19:47:14
ああ、間違えた。
"受渡金額/決済損益の合計" / 約定数量の合計で求めなくちゃいけないのか。
フィールド名に"/"とか使わないほうがいいよ。
792790:2009/12/23(水) 19:59:00
SELECT DISTINCTROW Format$(T1.取引日,'Long Date') AS [取引日 を日でグループ化],
T1.銘柄コード, T1.銘柄名, T1.取引種別, Sum(T1.約定数量) AS [約定数量 の 合計],
[渡金額_決済損益 の 合計]/[約定数量 の 合計] AS [約定単価 の 平均],
Sum(T1.渡金額_決済損益) AS [渡金額_決済損益 の 合計]
FROM T1
GROUP BY Format$(T1.取引日,'Long Date'), T1.銘柄コード, T1.銘柄名, T1.取引種別;

ウィザードでクエリを作って、ちょっと手を加えた結果。
793名無しさん@そうだ選挙にいこう:2009/12/23(水) 21:24:01
アクセスで100万レコード管理していて、エクセルVBAから抽出や更新など管理・利用という使い方をしています。
エクセルがかなり速度的にきついのですが、アクセスだけでVBA組んで抽出や管理するほうが一般的なんでしょうか。
794名無しさん@そうだ選挙にいこう:2009/12/23(水) 21:31:17
>>793
凝らなければVBAすら必要ないかもしれない。
まぁ、AccessがすべてのPCに入っている、または入れられるのなら
Access一本でやったほうがいいかもね。ただし、データ部とインターフェイス部は分けるべき。

>エクセルVBAから抽出や更新など

恐らくADOあたりを使っているのだと思うが、そうだとすると大した速度アップは期待できないんじゃなかろうか。
795名無しさん@そうだ選挙にいこう:2009/12/23(水) 21:38:09
>>793
WHERE条件で使用するフィールドのインデックスの見直し。
796名無しさん@そうだ選挙にいこう:2009/12/23(水) 22:02:25
>>794
レスありがとうございます。
ご指摘のようにADO使っています。速度向上期待できそうもないので
アクセスだけでやってみます。

>>795
レスありがとうございます。
SELECT文は基本的な使い方しかしらないので良く勉強してWHEREも注意して使ってみます。
797名無しさん@そうだ選挙にいこう:2009/12/23(水) 22:12:23
>>796
書き方が悪かったか。Access一本でやったとしても、速度アップは期待できないといいたかった。
ACEかJETとかは知らないが、もはやDBエンジンの問題。
即とアップが期待できるのは、>>795が言っているように、テーブル構造自体の見直しだろう。
798名無しさん@そうだ選挙にいこう:2009/12/23(水) 22:51:57
>>797
速度アップは期待できないですか。
でもエクセルVBAが動いている間、エクセルを使えなくなることはなくなるので
それだけでも良しと考えることにします。
799メモリ君 ◆7mDj3mSGOQ :2009/12/23(水) 23:17:49
>>794
できれば、そのくらいデータがあるなら、データ部分はMySQLやPostgreSQLなど
のデータベースサーバに任せるようにしたほうが、後々良いよ。

ちなみになんだが、localhostで運用した時、メモリやCPU資源が多いのであるな
らば、こちらにデータを渡して、C/Sにしたとき、Access単体よりも速度向上が期待
できるよ。もちろん、その時は、データベースサーバ側のチューンが必要。

テーブル構造が冗長になっていると、その分だけテーブルのデータをひっぱって
こないといけないから、細かく細かく正規化を進めた方がいいかもしれない。
800名無しさん@そうだ選挙にいこう:2009/12/23(水) 23:42:44
それはそうだがこういうケースでMySQLやポスグレを薦めて
SQLServerExpressEditionを外す理由がわからん
801名無しさん@そうだ選挙にいこう:2009/12/23(水) 23:43:10
>>799
PostgreSQLはOLEプロバイダが事実上使えないからなぁ。今は知らんけど。
ODBC接続もネット上のサンプルが使えなくて苦労した。
データソースを登録すれば簡単なんだけど。
802名無しさん@そうだ選挙にいこう:2009/12/23(水) 23:50:53
>>800
俺は候補からはずな。容量制限がきつすぎる。Access2ファイル分だもの。
MySQLはしらんが、PostgreSQLはSQLServerと同じように制限なしだったはず。
ちなみに799ではない。
803メモリ君 ◆7mDj3mSGOQ :2009/12/23(水) 23:54:24
>>800
無償で商用利用できて、Accessからのマイグレーションとなると、ツールが
充実しているMySQLがお勧めだ。

804メモリ君 ◆7mDj3mSGOQ :2009/12/23(水) 23:55:55
>>801
ODBCの運用でも、このくらいのデータなら大丈夫。

PostgreSQLももう少しツールが充実していたり、そういう足回りが充実
してるといいんだけれどね。日本ではMySQLよりも好まれて使われて
いるみたいだけれどね。
805名無しさん@そうだ選挙にいこう:2009/12/24(木) 00:09:54
>>804
PostgreSQLを使おうとした理由──商用利用に関する規約が簡潔だったから。
これに尽きるw
806メモリ君 ◆7mDj3mSGOQ :2009/12/24(木) 00:16:11
>>805
だからか。なるほど。

あと、SQL Serverを進めない理由は商用利用に関してちょっと問題がある
のと、制限があること。

いずれにせよ、今後、100万レコード以上を単体のAccessで動かすのは、
いろいろとリスクや問題点があるから、C/Sのテクは身につけて於いたほう
がいいと思うね。

807名無しさん@そうだ選挙にいこう:2009/12/24(木) 00:54:47
Excel&AccessはすでにC/Sでしょ。
808795:2009/12/24(木) 03:38:59
100万レコード程度ならAccessで十分だと思うんですけどね。
仮にレコード長を200byteとするとインデックスを含めても300MB程度でしょう?
>>793の内容から想像すると、それほど複雑な処理とは思えないし。
もちろん、マルチユーザー&同時アクセスなどであればDBサーバーの導入を
検討すべきだとは思いますが・・・

>>807
Accessは残念ながらサーバーではありません。
809名無しさん@そうだ選挙にいこう:2009/12/24(木) 05:16:10
なあ、SSDにすれば重いAccessもサクサク動くのですか?
810788:2009/12/24(木) 06:31:59
>>790
レス遅くなりました。

>フィールド名に"/"とか使わないほうがいいよ。
インポートしたままだったのですが、ややこしいですね。
修正します。
>>791
SQLありがとうございます!
やってみます。
811名無しさん@そうだ選挙にいこう:2009/12/24(木) 08:58:02
>>807
Jetは構造的に全データを取り込んで処理するから
Access<->Excelが C/S だというのは、見た目はともかく
原理的には、違う気がする
#SQL投げてもデータ処理はローカルだもの

>>793
Excel出力の場合は、Excel-VBAの方が早いから
Excel-Access以外のちゃんとしたDBの方がいい気がする
Access->Excel出力は、遅いと思う
100万件くらいなら、SQLServerExpressで試して見たら
Accessのカラム名日本語だったら、Postgresとか
めんどくさい気もする
#英数字小文字以外だと "" でエスケープしないとNGだから
#今もそうだよね?
812名無しさん@そうだ選挙にいこう:2009/12/24(木) 09:06:01
今回のケースは仮に商用利用ではないとして実データが300M程度で収まるのであれば
やはりSQLServerが外される理由はないと思うんだが・・・
813名無しさん@そうだ選挙にいこう:2009/12/24(木) 12:05:06
>>811
カラム名日本語大丈夫だったよ>PostgreSQL
まぁ、PostgreSQLに限らず、基本的に英数以外は避けたほうが無難では歩けど。

>788
解っていると思うけど、テーブル名とフィールド名が変わっているからね。

テーブル1 → T1
受渡金額/決済損益 → 渡金額_決済損益
814名無しさん@そうだ選挙にいこう:2009/12/24(木) 15:33:04
質問



AccessのMDB ファイルが異常な勢いで増大して困っております。
815名無しさん@そうだ選挙にいこう:2009/12/24(木) 15:37:56
質問

WindowsXP+ Access2K


AccessのMDB ファイルが異常な勢いで増大して困っております。


つづき

レコードロックはレコードレベルをはずしております。

レコードの削除追加はそんなに行っていないはずなのになぜ、増えるのかが不明です。

もし、このまま2GBに到達しても、放置しておくとどうなるのでしょうか?

増大を止めるほかになにか有効な手はあるのでしょうか?

816名無しさん@そうだ選挙にいこう:2009/12/24(木) 16:35:02
>>813
日本語のカラム名をSQLで使う場合なんだけど、Javaだけだったのかな?
#もう忘れちゃった

>>815
最適化/修復 実行しても駄目?
817名無しさん@そうだ選挙にいこう:2009/12/24(木) 23:21:31
>>808
793です。
とりあえず応急処置でSQLで対応しました。
2007なのでエクセルへのエクスポートも簡単だし、エクセルVBAからの操作はやめて
直接ACCESSでやっていこうと思います。
818795:2009/12/25(金) 01:04:58
>>817
了解。あとはMDBファイルの破損リスクに注意して定期的なバックアップを。
それから、その他の方からのアドバイスも今後のアップサイジングの可能性を
考えたら非常に有用なのでログ保存がお勧めです。

>>814-815
2GBを越えると得体の知れないエラーが頻発します。
(システムテーブルの操作ができない事が原因?)
今、ファイルサイズが増大する理由もシステムテーブルを肥大させるような
操作をしているからのような気がします。
819名無しさん@そうだ選挙にいこう:2009/12/25(金) 01:14:14
>>815
おれもそんな現象に遭遇したことがある
絶対にありえないという勢いでサイズが大きくなる
原因は良くわからん
820名無しさん@そうだ選挙にいこう:2009/12/25(金) 09:14:05
>>818

システムテーブルとはなんなのでしょうか?
821名無しさん@そうだ選挙にいこう:2009/12/25(金) 12:40:25
アクセス達人の方々のご意見をお願いします

FileSystemObjectを使った自分自身のバックアップは大丈夫なの?
専有の場合と共有の場合、それぞれOKですか?
822名無しさん@そうだ選挙にいこう:2009/12/25(金) 14:10:46
>>809
多少は速くなると思うが、CPUの処理速度のほうが目に見えて影響する。
メモリの搭載量は実際の処理には影響が少ない。ただしAccessの起動と終了には影響するので
たくさん積んだほうがいい。まぁ、起動からAccessが閉じるまでを測るか、
ボタンを押して終了メッセージが出るまでを測るかの違い。

SSDって頻繁に書き換わるようなものに使っても大丈夫なの?
823名無しさん@そうだ選挙にいこう:2009/12/25(金) 19:54:07
>>818
アドバイスありがとうございます。
バックアップはとって自己防衛しておきます。
824名無しさん@そうだ選挙にいこう:2009/12/25(金) 20:30:00
>>821
俺にはこの手の質問をする人の精神構造がまったく理解でないのだが、
あえて言わせてもらえば「自分でやってみればいいだろ」に尽きるのだが。
なぜやることが解っているのに、自分で試さないの?
825名無しさん@そうだ選挙にいこう:2009/12/25(金) 21:55:08
>>822
ありがとうございます。
ノートPCでmdbを走らせるにはSSD換装よりも高速CPUのノートへの買い換えのほうが有効なんですね。
寿命の問題は気になりますが、寿命より前に更に魅力的なSSDが発売されて乗り換えると思いますので大丈夫だと思います。

826名無しさん@そうだ選挙にいこう:2009/12/25(金) 23:02:53
>>825
というよりも、読み書きを頻繁に行う上に、プログラムの
作り方によっては、莫大なメモリを消費するのがDB

まぁ、金にあまり糸目をつけないというのなら、SSD換装
も悪くないよ。確実にI/Oは改善するから。当然メモリは
あるだけ消費するし、CPUもね。

かつて、500人に大して、勤怠のデータおよび給与明細
を個別にPDF化して、個別にメールで送るプログラムを作
ったことがあるけれど、CPUがセロリンだったのも悪いん
だけれど、送信完了まで10分かかったよ。PDF化がかな
りのメモリをつかっていて、2GBくらいVMサイズになって
た。
827名無しさん@そうだ選挙にいこう:2009/12/25(金) 23:08:54
>>824
普通のDBは更新中のバックアップとか考慮されてるけど
ACCESSではどうなってるのかという話だろ。
自分でやってみろってどうやるの?
大勢の人に更新させてその間にバックアップをとるというテストを
何度もやって確かめるの?
100回やって問題がなかったとしてもたまたまかもしれないぞ。
828名無しさん@そうだ選挙にいこう:2009/12/25(金) 23:12:08
>>826
なるほど。メモリを莫大に消費するなら、64bitOSに大量のメモリ積めば良さそうに思えますね。
windows7にAccess2002の組み合わせがちぐはぐですが、トライしてみたいと思います。
829名無しさん@そうだ選挙にいこう:2009/12/25(金) 23:13:53
>>827
起動時に、自身のコピーを5世代分、常にバックアップして
から、起動する仕組みを入れてある。

一時期、Access2007で、終了時の最適化時にファイルが消える
ってことがあって、大変だったからね。

まぁ、これがファイルであるAccessの弱点だね。こういうの過去
にもあったし。なんで、今は、MySQLをバックエンドに据えて、
動かしているけれど、こういう大規模になってくると、ロールバック
も考えないといけないよね。

単純なバックアップじゃ、ちょっとね、あれ
830名無しさん@そうだ選挙にいこう:2009/12/26(土) 01:26:32
MySQLとかロールバックとか言いたいだけちゃうんかと
831名無しさん@そうだ選挙にいこう:2009/12/26(土) 08:41:36
>>821
専有は問題生じてないよ。
共有はダメじゃねえのかな。
Access標準のバックアップはバックエンドは排他でやれと書いてあるくらいだからさ。
832名無しさん@そうだ選挙にいこう:2009/12/26(土) 11:18:26
テーブルとテーブル以外でmdb分けてないのかよ
テーブル以外の方は修正があったらその都度バックアップをとればいい。

1年間修正がなければ1年間バックアップは不要だし、
起動時に毎回自身を5世代とか、もうね・・・
833名無しさん@そうだ選挙にいこう:2009/12/26(土) 12:00:05
>>832
とてつもない勘違いをしているぞ
834名無しさん@そうだ選挙にいこう:2009/12/26(土) 14:00:01
データおかしくなって調べてるうちに4回再起動したらバックアップも全部あぼーん
835名無しさん@そうだ選挙にいこう:2009/12/27(日) 08:40:01
起動時とか終了時をトリガーにしてるアフォがなんか語ってるって指摘なら
あながち勘違いでもない
836名無しさん@そうだ選挙にいこう:2009/12/27(日) 11:35:59
ぶっちゃけ、Accessの処理でバックアップ機能しこむってどうなの?
俺的には、壊れやすいっていわれているものに重要な機能は組み込みたくないんだけど。
面倒くさいし。
業務の合間に作業しているアマグラマーwだから、そこのところが知りたいんだけど。
バックアップソフトで、世代管理バックアップが確実のような気がするんだけど。
しかもスケジュールバックアップ。
837名無しさん@そうだ選挙にいこう:2009/12/27(日) 15:08:16
OS:XP
Access:2003
AccessというよりSQLの質問?
でも、oracleだとできるそうなので、
やっぱりACCESS固有の話だと思います。

Accessで、SELECT結果を使ったUPDATEしたいのですが、
どうすれば、できるのでしょうか?(何が悪いのでしょうか?)

いくつかのHP見ながらSQLを書いてみたのですが、
やりたいことは、
2つの列を更新したいのと、
更新する際の条件が2つ(id1とid2)
で、下のSQLを書いたのですが、
「UPDATEステートメントの構文エラーです。」とエラーが出ます。


UPDATE ORG SET
(ORG.date,ORG.data)=(SELECT up.date,up.data1 FROM up WHERE up.id1 = ORG.id1 AND up.id2 = ORG.id2)
WHERE EXISTS (SELECT * FROM up WHERE ORG.id1 = up.id1 AND ORG.id2 = up.id2)
838857:2009/12/27(日) 15:10:29
テーブルは以下の形です。
upテーブルの値で、ORGテーブルを更新しようとしています。

ORGテーブル
id1 id2 date data
1 a 20091226 AAA
1 b 20091226 BBB
1 c 20091226 CCC
2 a 20091226 aaa
2 b 20091226 bbb
2 c 20091226 ccc

upテーブル
id1 id2 date data1
1 c 20091226 CC2
2 a 20091227 aa2

お願いします。
839名無しさん@そうだ選挙にいこう:2009/12/27(日) 15:47:24
>>837
うろ覚えなんだが、Accessの更新クエリって、サブクエリが使えなかったような気が。
なにか、制限があったのは確かなんだが。
840名無しさん@そうだ選挙にいこう:2009/12/27(日) 17:09:00
教えてください。
Access2000+MSDE2000(ODBC接続)で開発してます。

クエリーの速度改善のためにパススルークエリー化を行っているのですが、
SQLServerのSQLはAccessのようにGUIで作成できないので効率が悪くて
困っています。

ADP使えば選択クエリーはなんとかなるのですが、ADPは更新クエリーに
対応していないので、複雑なクエリーとなると、1つ1つSQLを手書きする為
とても時間がかかってしまいます。

何かGUIでSQLを自動生成する方法があれば教えてください。
よろしくお願いします。
841名無しさん@そうだ選挙にいこう:2009/12/27(日) 17:14:51
いまMS Access2002を使用していますが、デザインビューの拡大ができないので使い勝手が悪いと思います。
最新バージョンではデザインビューでの拡大機能はございますでしょうか?
842名無しさん@そうだ選挙にいこう:2009/12/27(日) 18:06:03
>>840
ODBC接続にする
843名無しさん@そうだ選挙にいこう:2009/12/27(日) 18:21:38
>>837
update up inner join ORG on up.id2 = ORG.id2 and up.id1 = ORG.id1
set ORG.date = up.date, ORG.data = up.data1
where ORG.id1 = up.id1 and ORG.id2 = up.id2;
でいいんじゃね?

>>840
serverのGUIツール使うのがいいんじゃね?で、コピペと。

>>841
2010でもフォームは原寸のみじゃね?プロパティ設定とかでズーム使えるけど、この件じゃないよね。
844名無しさん@そうだ選挙にいこう:2009/12/27(日) 18:40:13
>>843
ありがとうございます。拡大できないとなると解像度の影響が大きいですね。
15インチWUXGAノートで使おうかと検討中なのですが、果たして可能なのか…
845857:2009/12/27(日) 18:44:09
> 843
ありがとうございます。
目的の更新ができました。

inner joinだったのですね。
勉強になりました。
846840:2009/12/27(日) 19:13:57
>>843
ありがとうございます
Enterprise Managerが入手できなくて困っていたのですが
探したらMicrosoft SQL Server Management Studio Express
というのでもMSDE2000を管理できるらしいとわかりました
正月明けたら会社でインストールしてみようと思います。
847名無しさん@そうだ選挙にいこう:2009/12/28(月) 05:28:41
>>837
手元にAccessがないから確かめてないけどEXISTSのあとにTrueが必要かもしれない
ところでそのSQLはORACLEでは実行できるの?なんか違うような気がするが

UPDATE ORG
SET ORG.date = up.date,
    ORG.data = up.data1
WHERE EXISTS
(SELECT * FROM up WHERE ORG.id1 = up.id1 AND ORG.id2 = up.id2) = True

EXISTSじゃなくてINNER JOINの方がいいと思う
更新クエリで作ってSQLビューで見た方が早い
848名無しさん@そうだ選挙にいこう:2009/12/28(月) 15:47:05
【 システム環境 . 】 WindowsXP SP2, Access2007
【 VBAが使えるか .】 はい
【 VBAでの回答  】 可(というかVBAでの方法が知りたい)
【 検索キーワード 】 Access 固定長テキスト エクスポート

項目A 数値(十進数8桁)を持つテーブルを固定長でエクスポートします。
データが「00000001」の場合は「1 」の様にゼロサプレスされて左詰で出力されていまいます。

クエリで「項目A1:Format([項目A],"00000000")の様に定義し、エクスポート定義で
「項目A1、開始位置1、桁数8」の様に定義しました。この状態で手動エクスポートすると
期待通り「00000001」で出力されるのですが、VBAで以下のように定義するとやはり
「1 」で出力されてしまいます。

VBAの記述は以下の通りです。
DoCmd.TransferText acExportFixed, "エクスポート定義名", "クエリ名", "出力ファイル名", False

期待通り「00000001」で出力するにはどうすれば良いでしょうか?
849848:2009/12/28(月) 15:49:01
上記書き込みで「1 」となっているのは「1(空白7桁)」です。
850名無しさん@そうだ選挙にいこう:2009/12/30(水) 12:48:50
>>848
2002だと848のやり方で期待通りに出力される。
851名無しさん@そうだ選挙にいこう:2009/12/30(水) 15:03:10
IME入力モード:ひらがな
IME入力モード保持:はい
と設定して、
入力モードをオフに手動切り替えして英数字入力し、
別のコントロールに移動後、再度そのコントロールに戻ると、
IME入力モードが「ひらがな」になってしまいます。

カーソル移動でなく、別アプリのウィンドウに切り替えて、
戻っただけでも、「ひらがな」になってしまいます。

どなたか対処法分かる方いませんか?

WinXP SP3 + Access2002 SP3
Microsoft Update 全て適用済みです。
852名無しさん@そうだ選挙にいこう:2009/12/30(水) 15:38:36
>>851
目的がいまいちよくわからないけど
IME入力モード:ひらがな
IME入力モード保持:はい
の正しい動作だよ

最初からオフにしたいならIME入力モード:オフにしとかないと
853名無しさん@そうだ選挙にいこう:2009/12/30(水) 16:38:51
>>852
レスありがとうございます。

■T'sWare フォーム&コントロール プロパティ活用辞典-079 〜IMEHold〜
ttp://www.tsware.jp/study/vol13/prop_079.htm
にあるような動作にならないんです。

「ひらがな」モード強制でなく、
ユーザー側でモード変更したら、そのモードを維持させたかったんです。
例えば、
通常は毎回日本語ONになった方が便利なんだけど、
まとめて何件か英語を入力する必要があるようなフィールドとか。

あと、
他のアプリに表示されてる英文を
[Alt]+[Tab]キーで画面切り替えしながら入力するとき、
せっかく日本語OFFにしても、
フォーカスがAccessに戻るたびに日本語ONになってしまいます。
854名無しさん@そうだ選挙にいこう:2009/12/30(水) 19:54:17
for文で変数に値を入れて、その後に処理をする

と言うものをぐるぐるまわしてるのですが

変数に入れた値がすべて残ってしまうので
変数の中身をfor文の最後に空か初期化したいのですが

どのようなものを使えばできるのでしょうか。
855名無しさん@そうだ選挙にいこう:2009/12/30(水) 21:02:47
>>854
変数 = 0
856848:2010/01/02(土) 13:41:03
>>850
バージョンの違いですか・・・
ありがとうございます。他でも聞いてみたいと思います。
857名無しさん@そうだ選挙にいこう:2010/01/02(土) 17:06:14
明けましておめでとうございます

今年も皆々様、宜しくお願い致します。

858名無しさん@そうだ選挙にいこう:2010/01/02(土) 21:58:25
>>851
バグでしょ
IME関係は動作不安定
機種変えたり、OS変えたりすると、変わる
859名無しさん@そうだ選挙にいこう:2010/01/04(月) 09:08:08
2010の新メンバーは新しいプロパティが目白押し、でも主にデザイン関係だけ、ファイルメーカーみたいにキラキラデザイン可能になるのか
TintとかSadeとかGlowとかHoverとか良く解らん
Webサービス対応とデータマクロとデータバー以外は、目新しいのはフォーム・レポート・データマクロを開くときのSetParameterメソッドくらい
2010βは製品版レベルに安定してるので、移行しちゃった
860名無しさん@そうだ選挙にいこう:2010/01/04(月) 12:40:23
配列が一致するというのはArray1=Array2という表現はできないの?
Array1(i)=Array2(i)とかしないとダメなの?
そうすると、配列の一致をif文の条件にできるのかな?if のあとにfor toでloopを回して、thenをつけるの?構文エラーになるよね…
結局、andで全要素つなぐしか方法はないのかな?でも、それだと配列にするメリットがない気がするし…
みなさん、どうしてます?
861名無しさん@そうだ選挙にいこう:2010/01/04(月) 14:34:29
>>860
forかwhileでループまわして、Array1(i)<>Array2(i)でブレイク。
ループを抜けたところで、iでループを回りきったかそうでないかを判断とかでいいじゃん。
フラグを立ててもいいけど。
862名無しさん@そうだ選挙にいこう:2010/01/04(月) 19:48:15
とても悩んでいます。

ExcelをAccessで開いて

データが入力してあるセルを数えようと思い

Dcountとか使ったのですが、あれだとテーブルのレコード数を数える
ようでどうやっても出来ませんでした。

他に.countを使用するとセルの数だけを数えちゃったりと
今日一日悩んでました。

セルに文字列があるものの数を数えるにはどうしたらよいのでしょうか。

accessから操作したいです。

お願いがいします。
863名無しさん@そうだ選挙にいこう:2010/01/04(月) 20:12:26
>>862
Access側で処理しようと、スレ違いだろうよ。
いったんテーブルに落としてからカウントするのならここでいいだろうけど。
864名無しさん@そうだ選挙にいこう:2010/01/05(火) 00:07:55
>>863
う・・・そうなんですか・・・

カウントをしてそのカウントを0にしてから取り込むような処理なので・・・
そしてかなり件数多いのでやはり今のやり方しかないのかなーと思いました。

そしてごめんなさい
865名無しさん@そうだ選挙にいこう:2010/01/05(火) 00:45:07
>>861
ありがとう。にしても面倒ですね。
配列でひとまとめに扱う方法はないものですかねえ… ま、ないんでしょうねw
866名無しさん@そうだ選挙にいこう:2010/01/05(火) 01:33:58
>>864
普通にDcountでNull以外をカウントじゃダメだったの?
867名無しさん@そうだ選挙にいこう:2010/01/05(火) 07:51:48
>>865
仮に関数で用意されていたとしても、内部的には同じこと(ループで回す)しているだけかもしれないじゃん。
あとは戻り値でTrueかFalseを返すだけでしょ。
使用頻度が高いならコードをエクスポートしておいて、必要に応じてインポートすればいい。
まぁ、コピペでもいいけど。
868名無しさん@そうだ選挙にいこう:2010/01/07(木) 04:16:32
条件付き書式とかで色を選択するときに5行8列の色のバレットがでますよね。ヘルプによるとカラービルダーとか言うらしいですね。
この40色の色をVBAで指定したいのですが、番号をご存じの方はいらっしゃいますか?ネットを調べると膨大な色のチャートがあるのですが、
40色で十分なので是非お願いします。QBcolor関数とか色の定数だと少ないのでやはり40色の番号を知りたいのでお願いします。
869名無しさん@そうだ選挙にいこう:2010/01/07(木) 04:18:30
自己レス。
Backcolorプロパティーで取得すればわかりそうですね。
でも、リストをお持ちの方がいらっしゃれば助かります。
870名無しさん@そうだ選挙にいこう:2010/01/07(木) 09:38:29
871名無しさん@そうだ選挙にいこう:2010/01/07(木) 12:07:24
>>870
ありがとうございます。なにやら面白そうですね。コメントによるとdebug.printで色の値が取得できるんですね。
自分は適当なコントロールに背景色を設定して、プロパティーで覗いて値をメモっています。小学生レベルの質問でしたね。済みませんでした。
872名無しさん@そうだ選挙にいこう:2010/01/08(金) 11:24:15
Accessのリンクテーブルを使ってSQLサーバー上のテーブルの編集をしていて躓きました
SQLサーバー上ではimage型のフィールドに画像をうまく登録する方法を教えてください
VBAは使えますが、できればACCESSのUIから挿入する方法はありませんか?
フィールドにカーソルを置いて描画ソフトからコピーしてもうまくいきません。
ファイルのバイナリイメージを登録する方法を教えてください
AppendChunk()を使えばできそうなのですが、ACCESSのUIから同様のことはできませんか?
873名無しさん@そうだ選挙にいこう:2010/01/08(金) 12:29:49

質問です。。
Accessではレコードの並び順は保証されていないと聞きました
(クエリで返される結果の並び順とか・・)。

しかしこれまで違う並び順で結果が返って来たことがあまり無いように思えます。
これは何故でしょうか?逆に違う並び順になるときというのはどういった場合で
しょうか?教えて!偉い人。
874名無しさん@そうだ選挙にいこう:2010/01/08(金) 13:02:00

> しかしこれまで違う並び順で結果が返って来たことがあまり無いように思えます。
無指定・無操作なら、テーブルに書き込まれてる順番で返ってくる

> これは何故でしょうか?逆に違う並び順になるときというのはどういった場合で
クリエで並び順を変な風に複数指定して、テーブル作成クエリにして、別テーブル作成
この別テーブルでも、無指定・無操作なら、テーブルに書き込まれてる順番で返ってくる

でも、別テーブルだけ見れば、何の順番か解らない

あと、無操作でなく操作が入ると、アクセスの中の人が操作レコード順を最速の順番で最適化して、その操作順でレコードが返ってくる
875873:2010/01/08(金) 19:01:05
>>874 ありがとうです。 最速の順番かぁ・・・じゃぁ全く同じ操作でも、PCの負荷状況にも影響されて 違うってことがありうるってことですか?
876名無しさん@そうだ選挙にいこう:2010/01/08(金) 21:52:09
>>860
If Join(Array1) = Join(Array2) Then

↑でいけるんじゃないかな?未検証だけど。
(すぐレスしたかったんだけど今日までアク禁食らってました・・・)
877名無しさん@そうだ選挙にいこう:2010/01/08(金) 22:48:49
>>874
× テーブルに書き込まれてる順番
○ テーブルファイルに書き込まれてる順番
878名無しさん@そうだ選挙にいこう:2010/01/09(土) 01:33:02
order byしない場合の順序は保証されないってのはACCESSに限らずRDBの基本とされてるし
なんでいまさらな議論してるんだって感じだ
879名無しさん@そうだ選挙にいこう:2010/01/09(土) 02:41:22
まったくのランダムってことは無いよね
追加した順とか主キーの順とかになってるんじゃないかな
880名無しさん@そうだ選挙にいこう:2010/01/09(土) 03:31:56
>>876
ありがとうございます。仕事が一段落したら試してみますね。
881名無しさん@そうだ選挙にいこう:2010/01/09(土) 09:16:00
>>879
計算機にとってランダムってのは一番苦手なことだ。
882名無しさん@そうだ選挙にいこう:2010/01/09(土) 19:33:08
WinXp SP3、ACCESS 2002です。
条件付書式をVBAで書いているときに気づいたんですが、条件がa>=1のときにa=0で真になったりすることが時々ありました。
で、条件の式をa>=+1と書き直して正常に動くようになりました。
実際は条件式が長くて、964文字?以内にしなさいと怒られるくらい長いのを分割しています。
このバグは既知のものでしょうか?それとも、私のミスかな…
883名無しさん@そうだ選挙にいこう:2010/01/11(月) 11:45:27
Access2003
WidowsXP

キーとなる項目が2つあるテーブルに対して、
更新または、新規のデータのみを反映するSQLを教えてください。

このあたりを見ながら、
http://txqz.net/blog/2007/01/17/1920
いろいろ試してみたのですが、
キー項目が2つあるのがだめ見たいで・・・

やりたいことは後ほど書き込みます。
884883:2010/01/11(月) 11:46:23
先ほどのイメージは以下の通りです。

1.元データ
Id1 Id2 Data
1 A あ
1 B い
1 C う
2 A え
2 B お

2.更新用データ
Id1 Id2 Data
1 B か
3 A き
3 B く

3.反映後
Id1 Id2 Data
1 A あ
1 B か
1 C う
2 A え
2 B お
3 A き
3 B く

よろしくご指導ください。
885名無しさん@そうだ選挙にいこう:2010/01/11(月) 14:13:31
Accessで質問があります。

-----------------------------
A   B    C
番号 品名   価格
01  りんご  400
02  みかん  500
03  バナナ  300
04  ぶどう  200
-----------------------------

Excel上では上記の表をあらかじめ別シートなどに作成しておき、vlookup関数を利用してA列の番号を入力すると、
B列とC列の値が自動で入力される設定が出来るかと思います。

質問内容はこれをAccess上のフォーム(若しくはテーブル)などでできる設定は出来ますでしょうか?

上記の表を例に挙げますと、
「Access上でA列の番号を入力すると、(プルダウンメニューで選べるようにしたい)B列とC列の情報もテキストボックスに自動で入力されるようにしたい」

つまり、AccessでExcelのvlookupみたいな事をしたいのです。

宜しくお願いいたします。
886885:2010/01/11(月) 14:38:26

言い忘れました。

OS:WindowsXP
バージョン:Office2003

宜しくお願いします。
887名無しさん@そうだ選挙にいこう:2010/01/11(月) 17:39:28
【 システム環境  . 】 WindowsXP, Access2000
【 VBAが使えるか .】 エクセルのVBAしか使ったことありません。
【 VBAでの回答  】 可

整数型のデータで特定のBitが1であるデータをSelectしたいのですが、
うまくいきません。
今のところ、Excelにコピーして、エクセルVBAでBit演算して該当レコードを
探しています。
直接、Bit演算してSelectする方法はないのでしょうか。
888名無しさん@そうだ選挙にいこう:2010/01/11(月) 18:15:02
>>883
リンク先の内容はMySQLだからな、そりゃうまくいかんことあるべ
キーがひとつならうまくできたんか?

>>885
できるよ。つーか、フォームの基本レベルのことだべ
Dlookupとかができるなんとか本によく出てると思う。

>>887
VBA使えるんなら、ユーザ定義関数作ってクエリに使えばいいんじゃね?
889883:2010/01/11(月) 20:20:40
SQLだからいけると思ったが、確かにそれはそうかも、

ググッてたらいいくつかヒットしたからまぁできるのだろうぐらいで、
キー1つは試してないです。試してきます。

引き続きキー2つでのINSERT & UPDATEの方法を
お教えください。
890名無しさん@そうだ選挙にいこう:2010/01/11(月) 21:32:48
Access2010
表形式で入力中に、新規行が画面上見える状態でESC押してアンドゥすると、フォーカス失う
891名無しさん@そうだ選挙にいこう:2010/01/12(火) 16:29:57
質問です。VBAで自分のMDB内にあるテーブルのフィールドサイズを取得できますか?
(テーブルがSQL ServerとかORACLEだったらできるっぽいけど・・・)
892名無しさん@そうだ選挙にいこう:2010/01/12(火) 16:39:14
>>883>>889
SQLを更新と新規追加に分けて2回実行したらいいです。
まず更新(条件はキーが一致するレコード)、次に新規追加(条件は存在しないレコード)。
順番は逆でもOKだけど更新が先の方がいいです。
893名無しさん@そうだ選挙にいこう:2010/01/12(火) 21:19:35
>>891
ADOX/DAOについて調べてみなはれ
894名無しさん@そうだ選挙にいこう:2010/01/14(木) 03:38:04
【 システム環境  . 】 Windowsvista, Access2007
【 VBAが使えるか .】 はい
【 VBAでの回答  】 可

ttp://aeoncinema.smartreserv.jp/top/cinemalist
Access2007でこのようなSTEPごとに選択していくものを作れますか?
895名無しさん@そうだ選挙にいこう:2010/01/14(木) 12:02:27
>>894
できますよ。
見た目は工夫次第
実装は努力次第
896名無しさん@そうだ選挙にいこう:2010/01/15(金) 01:24:24
>>895
ありがとうございます。
これと全く同じようなのが作りたいのですが
難しそうですね・・・
897891:2010/01/18(月) 10:17:55
>>893
あざっす、ググり方が甘かったです。
調べたところADODB.Recordset.Fields(フィールド名).DefinedSize()で取得できました!(なぜかADO)
アクセス規制でお礼が遅くなってすみません。
898名無しさん@そうだ選挙にいこう:2010/01/20(水) 11:27:32
零細企業です
今はエクセルで請求書作成から人件費・試算表作成まで行っているのですが
フアイル数が多くなってきたために管理が煩雑になってきました
そこでデータベースソフトの購入を考えているのですが、OOoとaccessはどちらがいいでしょうか
899名無しさん@そうだ選挙にいこう:2010/01/20(水) 11:30:10
そういう目的なら、桐が良いです
900名無しさん@そうだ選挙にいこう:2010/01/20(水) 12:01:45
>>899
ありがとうございます。
ですが予算オーバーと言われましたorz
とりあえず体験版ためしてみます
901名無しさん@そうだ選挙にいこう:2010/01/22(金) 17:48:53
ふと気になりました。
データベースサーバにインストールされているSQL Serverのテーブルを読み取り専用で
クライアントPCのACCESS MDBにリンクテーブルを作りたい場合、どのような方法がいいですか?
現在はWindows認証でSQL Serverに接続しています。
SQL Serverの設定でユーザに参照権限しか与えないのが手っ取り早いかなと考えてます。

リンクテーブルを作るとき、読み取り専用で作れたりしますか?
902名無しさん@そうだ選挙にいこう:2010/01/22(金) 19:16:01
>>901
権限管理するのはSQLServerだから、できるんじゃね?
参照だけならSQL Server Reporting Servicesでいいと思うがな。
903名無しさん@そうだ選挙にいこう:2010/01/22(金) 23:30:36
>>901
ドメインコントローラー側でSqlReadOnlyグループみたいなユーザーグループを作って
各ユーザーをそのグループに所属させた上で、SQLサーバーにそのグループに対する
アクセス制限を設定する感じだったような記憶が・・・違ったらすまん。
904名無しさん@そうだ選挙にいこう:2010/01/24(日) 21:26:08
【 システム環境  . 】 WindowsXP, Access2003
【 VBAが使えるか .】 可
【 VBAでの回答  】 可

質問です。
メインフォームにAとBの2つのサブフォームを貼り付け、メインフォームを開いたときに
AのOpenEvent→BのOpenEventの順で動くのですが、これを制御して順番を変えることは
可能でしょうか?
よろしくお願いします。
905名無しさん@そうだ選挙にいこう:2010/01/24(日) 21:34:06
貼りつける順番逆にして作ったら?
906904:2010/01/24(日) 21:38:07
ぁぁ貼り付けた順番で決まるのですかwww
tabindexとか座標位置とかかと思いました。

やってみます。
907904:2010/01/24(日) 21:47:47
やってみました。

上手くいきました。
ありがとうございます。
908名無しさん@そうだ選挙にいこう:2010/01/25(月) 10:49:45
【 システム環境  . 】 WindowsXP, Access2007
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否
【 検索キーワード 】 クエリ 結果 レポート ユニオンクエリ 

名前   種類  価格
りんご 果物  \50
みかん 果物  \10
ズボン 衣類  \700
はくさい 野菜  \80
いちご 果物  \10
にんじん 野菜  \50
ごぼう 野菜  \80
みかん 果物  \10
きゃべつ 野菜  \100

上記のようなデータがあり
以下のようなレポートを作りたいのですが上手くいきません。
--------------------------------------------------------------
果物計80円   野菜計310円  衣類計 700円  合計 1,090円
--------------------------------------------------------------

果物を集計したクエリ
野菜を集計したクエリ
衣類を集計したクエリ

を作りレポートでレコードソースの選択を各クエリにして
値を表示させればいいかと思っていましたが
各計の値がエラーとなってしまいます。
初歩的なこととは思うのですがご教授いただけますよう宜しくお願い致します。
909901:2010/01/25(月) 10:51:05
>>902-903
アドバイスありがとうございます、調べてみます!
910名無しさん@そうだ選挙にいこう:2010/01/25(月) 10:52:27
>>908
どこでエラーが出てるかが分からんと答えにくいよ、クエリ?レポート?
911908:2010/01/25(月) 11:20:31
>>910
申し訳ございません。レポートでエラーになります。

各クエリはグループ化と合計で表示したい数値が出ています。
レポートデザインでテキストボックスを作り
コントロールソースを式ビルダで=Sum([クエリ名]![種類の合計]) と指定していますが
#エラー と表示されております。
912名無しさん@そうだ選挙にいこう:2010/01/25(月) 13:23:48
>>911
http://office.microsoft.com/ja-jp/access/HA010550991041.aspx

レポートのデータソースにクエリが設定されていないのが根本の原因だね、がんばれ。
913908:2010/01/25(月) 14:15:35
>>912
早急に回答ありがとうございました。
参照URLの通りやりましたら望みの結果がでました。
大変感謝です。本当にありがとうございました!┏○ペコ
914名無しさん@そうだ選挙にいこう:2010/01/26(火) 09:41:13
テーブル:作品(作品ID, 作品名)
テーブル:ジャンル(ジャンルID, ジャンル名)
テーブル:作品のジャンル(作品ID, ジャンルID)

ジャンル:ホラー
ジャンル:コメディ

とある場合、
ホラーでコメディな作品を抽出するSQL文が作れません。
ホラーかコメディなら分かるんですが・・・。
915名無しさん@そうだ選挙にいこう:2010/01/26(火) 13:18:11
>>914
作品と作品のジャンルが1対多なんだよな。
サブクエリ使ってジャンルが'ホラー'の作品の中からジャンルが'コメディー'の
作品を抽出する、もしくはカウント使って抽出する。
select tbl作品.作品名
from (tbl作品のジャンル inner join tblジャンル on tbl作品のジャンル.ジャンルID = tblジャンル.ジャンルID) inner join tbl作品 ON tbl作品のジャンル.作品ID = tbl作品.作品ID
where tblジャンル.ジャンル名 = 'ホラー' or tblジャンル.ジャンル名 = 'コメディー'
group by tbl作品.作品名
having count(tbl作品のジャンル.ジャンルID) = 2
確認してないから動くかどうかわからん。
もっとエレガントなやり方ねぇかしら
916名無しさん@そうだ選挙にいこう:2010/01/26(火) 17:29:31
>>914
select 作品名
from (((作品 t1
 inner join 作品のジャンル t2 on t1.作品ID = t2.作品ID)
 inner join ジャンル t3 on t2.ジャンルID = t3.ジャンルID)
 inner join 作品のジャンル t4 on t1.作品ID = t4.作品ID)
 inner join ジャンル t5 on t4.ジャンルID = t5.ジャンルID
where t3.ジャンル名 = 'ホラー' and t5.ジャンル名 = 'コメディ'

select 作品名
from 作品 t1, 作品のジャンル t2, ジャンル t3, 作品のジャンル t4, ジャンル t5
where
 t1.作品ID = t2.作品ID and t2.ジャンルID = t3.ジャンルID and t3.ジャンル名 = 'ホラー' and
 t2.作品ID = t4.作品ID and t4.ジャンルID = t5.ジャンルID and t5.ジャンル名 = 'コメディ'

select 作品名
from 作品 t1
where
 exists (select * from 作品のジャンル t2 inner join ジャンル t3 on t2.ジャンルID = t3.ジャンルID
  where t1.作品ID = t2.作品ID and t3.ジャンル名 = 'ホラー') and
 exists (select * from 作品のジャンル t4 inner join ジャンル t5 on t4.ジャンルID = t5.ジャンルID
  where t1.作品ID = t4.作品ID and t5.ジャンル名 = 'コメディ')

どれでも。
917914:2010/01/26(火) 21:10:24
>>915-916
レスありがとうございます。
>>915さんのは抽出できませんでした。
>>916さんのは3つとも抽出できました。
複雑ですねぇ、INNER JOIN・・・。

私も色々調べて、

SELECT 作品.* FROM 作品
WHERE
作品.作品ID In (SELECT 作品ID FROM 作品のジャンル WHERE ジャンルID=1)
And
作品.作品ID In (SELECT 作品ID FROM 作品のジャンル WHERE ジャンルID=2);

という記述で抽出できました。
でも処理効率は悪いと思います。全レコードを対象に2回検索してるような気がする。
>>915さんの言うように
ホラーで絞り込んでコメディで絞り込んで・・・というのが
レアなジャンルから絞り込んでいけば、効率良さそうですよね。
一応作ってみたんですが、
SQL文見てすぐあきらめました。
複雑すぎてVBAで生成する気が起きません。
料理のデータベースとかで指定した材料の料理を探す、とか
使い道は有りそうなんで覚えなきゃいけないんでしょうけど・・・。
もっと簡単にできると思ってました。
918名無しさん@そうだ選挙にいこう:2010/01/26(火) 21:41:53
>>917
こんな書き方もできるよ。

select 作品名
from 作品 t1
where
 not exists (select * from ジャンル t2 where t2.ジャンル名 in ('ホラー', 'コメディ') and 
 not exists (select * from 作品のジャンル t3 where t1.作品ID = t3.作品ID and t2.ジャンルID = t3.ジャンルID))
919名無しさん@そうだ選挙にいこう:2010/01/27(水) 09:18:55
>>917
作品のジャンルは2回(andまたはor検索する回数だけ)検索しにいくけど、
対象を作品IDで絞れば全件は検索しないで済むさ。
920名無しさん@そうだ選挙にいこう:2010/01/27(水) 09:30:14
【 システム環境  . 】 Vista, Access2007
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 できればなしでお願いします

クエリでこういったことがやりたいのですが根本的なところを勘違い
しているのかうまくいきません。

1 ○○ 月曜
1 ○○ 火曜
2 ×× 月曜
3 △△ 火曜
4 □□ 水曜



1 ○○ 月曜、火曜
2 ×× 月曜
3 △△ 火曜
4 □□ 水曜

ようは3列目を複数値フィールド化?して1列目をユニークにし、
最終的にCSV出力したいということなのですが…何卒ご教授ください。
921名無しさん@そうだ選挙にいこう:2010/01/27(水) 09:42:43
【 システム環境  . 】 WindowsXP, Access 97
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 否

No 品名 地域 パターン(AかBか)

001 林檎 青森 A
002 蜜柑 東京 A
003 林檎 東京 B
004 梨  埼玉 A
005 梨  東京 B
005 蜜柑 千葉 B
006 林檎 青森 B

このようにテーブルに入力していて、今まではクロス集計クエリで
行見出しに品名、列見出しに地域で、商品の地域ごとの個数を集計して出していました。
しかしパターンが新しく加わることになって、地域のパターンも分けなくてはならなくなり、
http://www1.uploda.tv/v/uptv0056813.gif
こんな感じで集計しないといけないんですがうまくいきません。
クロス集計でこういう風にするにはどうしたらいいんでしょうか?
922名無しさん@そうだ選挙にいこう:2010/01/27(水) 10:57:49
>>921
列見出しのフィールドを、[地域] & [パターン] で文字列結合すればいいんじゃね?
97で確認取れねぇから、まぁ試してみて
923名無しさん@そうだ選挙にいこう:2010/01/27(水) 12:43:50
>>920
再帰で似た感じまでできるんだろうけど、
関数定義した方がいいような気がするなぁ。
924名無しさん@そうだ選挙にいこう:2010/01/27(水) 14:43:02
【 システム環境  . 】 xp, Access2002
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 なしでお願いします
【 目的 】出勤簿の作成

今までエクセルで出勤簿の作成を行っていましたが、なぜか急にアクセス導入を提案され、いきなりやることに…
簡単な伝票程度しか作成したことが無いので困っております。お力添えをよろしくお願いいたします。
とりあえず、作りたいものはフォームで所属コードを入力をすると

所属コード 社員番号 社員名 ○/○の出勤状況
01    0000 ○山○広  出勤
01    0000 ○山○広  休
01    0000 ○木○美  代休
01    0000 ○田○男  出勤
01    0000 ○山○子  出勤

このような一覧が、一日ずつレポートで出せるようにしたいのですが可能でしょうか?
よろしくお願いいたします。
 
925名無しさん@そうだ選挙にいこう:2010/01/27(水) 15:15:44
>>922
ありがとうございます。
ほかに、パターンがAだった時のみ数を集計したい時はどうすればいいんでしょうか。
パターンにBと入っていたらクロス集計から外すとかも出来ますか?
926名無しさん@そうだ選挙にいこう:2010/01/27(水) 17:38:24
演算結果を表示するテキストボックスが起動直後だけエラーになるのは
フィールド名を参照するオブジェクトを明示してないからかな
エラーになるならなるで別にいいんだけど、日によってエラーになったり
普通に表示されたりするのはなんだか気持ち悪いね
927922:2010/01/27(水) 18:02:17
>>925
集計クエリにパターンのフィールドがなかったら追加、Where条件にして抽出条件入れるんだからねっ!
自習もしっかりなさい。プンプン

>>924
実現したいことは間違いなくできます。ウィザード使うだけでもできるレベルだから、まぁがんばれ。
テーブルは2つ以上になるですよ。
928名無しさん@そうだ選挙にいこう:2010/01/27(水) 20:03:50
929名無しさん@そうだ選挙にいこう:2010/01/28(木) 01:20:58
フォーム上のtextboxの開始日と終了日をbetweenで繋いでフィルタに反映させています。(VBAにて)
開始日をtext1、終了日をtext2とした場合に質問です。
開始日のみ入力、または終了日のみ入力した場合に○○以前、○○以降というような形でフィルタに反映させるにはどうすればいいでしょうか。
ご教授願います。
930名無しさん@そうだ選挙にいこう:2010/01/28(木) 02:36:40
access2000を使用しています。
一つのクエリで、同じフィールドから2つデータの個数をカウントしたいんですが、無理でしょうか?
フィールドに不良品か良品かを入力しているんですが、
不良品の数と良品の数、両方を集計として出したいんです。
それをさらにクロス集計で商品別の不良品の数と良品の数とで表にしたいと思っています。
931名無しさん@そうだ選挙にいこう:2010/01/28(木) 07:38:58
>>929
質問のなかに答えが出てる気がするけど、何がわからんのだろうか
開始日が空欄だったら100/1/1、終了日が空欄だったら9999/12/13を代入するのもいいんじゃね?
932名無しさん@そうだ選挙にいこう:2010/01/28(木) 08:52:05
>>929
テキストボックスが入力されているかどうかで
between、=>、=< を使い分ける
どうしてもbetweenだけにしたいなら>>931のように代入

>>930
カウントしたいフィールドを良品用と不良品用で2つクエリに登録する
933名無しさん@そうだ選挙にいこう:2010/01/28(木) 12:46:26
>931,932

なるほど!シンプルに書きたいので代入案を使わせていただきます。
ありがとうございました!
934名無しさん@そうだ選挙にいこう:2010/01/28(木) 18:07:06
935名無しさん@そうだ選挙にいこう:2010/01/31(日) 16:08:06
access2007 でクエリに主キーインデクスできない?

access2007 でクエリテーブルにデータ定義クエリで

create index インデクス名 on クエリテーブル名(フィールド) with primary;

とすると

“リンクされているデータソースに対してデータ定義ステートメントを実行することはできません”

とのことで、クエリにインデクスできません。なんででしょう?


要は、クエリで連結されたファイルを、seekを利用して高速に検索したいのです。
その方法はどのようにすればいいのでしょうか?
クエリファイルはインデクスできないのでしゅうか?
936名無しさん@そうだ選挙にいこう:2010/01/31(日) 16:54:48
レールガンで我慢しろ。
937名無しさん@そうだ選挙にいこう:2010/01/31(日) 19:01:51
>>935
エラーメッセージの通り、CREATE INDEX ステートメントはテーブルに対して
行うものだから、リンクされているデータソース(外部テーブルやクエリ)には実行不可。

高速に検索したければ元テーブルのインデックスを見直す必要がある。
ただ、どうしてもseekでシーケンシャル検索しなければならない場合は少ないので
速度を優先したければランダムアクセスで検索できないか検討するのも手かな・・・と。
938名無しさん@そうだ選挙にいこう:2010/02/01(月) 10:30:36
ACCESS2000です。
VBAでレポートを閉じるのをキャンセルできますか?
フォームはUnloadイベントの引数Cancelに 0以外をセットしたらできますが、
レポートにはUnloadイベントが無いのでどうしたらいいものかと。
939名無しさん@そうだ選挙にいこう:2010/02/01(月) 18:40:40
>>938
できないんじゃないか…?

閉じるボタン無効にしてフォームで開閉させるってのなら
できそうだが
940名無しさん@そうだ選挙にいこう:2010/02/01(月) 18:53:37
レポートの罫線って普通はどうやって引くの?
941名無しさん@そうだ選挙にいこう:2010/02/01(月) 23:15:34
テキストボックスの枠を使うのが楽でいいが、
Lineの方が融通が効く。
942名無しさん@そうだ選挙にいこう:2010/02/02(火) 08:11:22
>>941
> Lineの方が融通が効く。

ありがと
943名無しさん@そうだ選挙にいこう:2010/02/02(火) 22:59:33
罫線だらけの帳票が大好きなら桐にしとく

これはマジレスな
944名無しさん@そうだ選挙にいこう:2010/02/03(水) 08:59:16
桐は高いねん
945938:2010/02/03(水) 09:26:44
>>939
どうもです、やはり無理ですか。。
946名無しさん@そうだ選挙にいこう:2010/02/05(金) 01:43:28
>>945
レポートを閉じるのをキャンセルってどういう状況なの?
947945:2010/02/05(金) 15:09:59
>>946
誤操作で閉じるのを防ぎたいんです。
フォームからレポートをプレビュー表示中にEscキーを押したときや×ボタン押したときです。
948名無しさん@そうだ選挙にいこう:2010/02/05(金) 15:34:28
Report.Unloadイベントつかってるんだぜ。
2007だけど。
949947:2010/02/05(金) 17:23:23
>>948
バージョンが古いからそのイベント無いっすorz
950名無しさん@そうだ選挙にいこう:2010/02/05(金) 17:56:18
【 システム環境  . 】 WindowsXP, Access2003
【 VBAが使えるか .】 はい
【 VBAでの回答  】 いいえ

スペース埋めの処理を追加クエリで行うため、クエリのフィールドに以下のように
記述していますが上手くいきません。
Left([旧テーブルのデータ] & Space(新規テーブルのフィールドサイズ),新規テーブルのフィールドサイズ)

「新規テーブルのフィールドサイズ」はクエリで取得可能でしょうか。
よろしくお願いします。
951名無しさん@そうだ選挙にいこう:2010/02/05(金) 19:04:25
>>950
関数ないから無理じゃね?
関数定義してテーブルオブジェクトから取得がよいかと。
VBAでの回答を希望してないんだったな。
フィールドプロパティをひとつひとつ開いて確認してください。
952950:2010/02/05(金) 23:20:33
>>951
別の方法を検討してみます。
953名無しさん@そうだ選挙にいこう:2010/02/06(土) 17:31:35
2003で作ったデータベースを2007ランタイムしか入ってない別のPCで開きたいのですが、
OFFICランタイムの薄青い初期画面?のままで何も表示されません。
ランタイムで使用するには何か特殊なことをしないといけないのでしょうか?
今はただmdbをコピペして移動しただけなのですが。
954名無しさん@そうだ選挙にいこう:2010/02/06(土) 19:25:10
>>953
ランタイムは自分で設定しないと何も表示されないよ。
起動時にフォームまたはデータ アクセス ページを表示する
http://office.microsoft.com/ja-jp/access/HP051885011041.aspx

表示したいフォームが複数あるなら、フォームを開くフォームを自作するか、
下記の方法でメニューフォームを作成すれば良い。
メニュー フォームを作成、カスタマイズ、または削除する (MDB)
http://office.microsoft.com/ja-jp/access/HP051887321041.aspx
955名無しさん@そうだ選挙にいこう:2010/02/06(土) 20:20:57
>>954
そうなんだ。もっと作りこんだ形で持ってこないと駄目ってことか。ありがとう。
956名無しさん@そうだ選挙にいこう:2010/02/06(土) 20:58:50
>>955
2007持ってないからわからんが
2003形式のファイルを2007に変換すればいいのではないか?
おれぜんぜん違う話してる?
957名無しさん@そうだ選挙にいこう:2010/02/06(土) 23:03:15
>>955
オレはマクロのautoexecで対応したよ
958名無しさん@そうだ選挙にいこう:2010/02/07(日) 08:10:04
データシートフォームの項目名いわゆるカラムヘッダーの色は指定できますか?
959名無しさん@そうだ選挙にいこう:2010/02/07(日) 09:50:37
あれこれ装飾を施したいならデータシートは用途に合ってない
960名無しさん@そうだ選挙にいこう:2010/02/08(月) 12:09:15
【 システム環境  . 】 Windows7pro, Access2007
【 VBAが使えるか .】 いいえ
【 VBAでの回答  】 可
【 検索キーワード 】 access2002ランタイム access2007 併用

ご存知でしたら教えてください。
仕事でaccess2002ランタイムを利用するソフトを使っています。
最近access2007を勉強したいと思っているのですが、
access2007を起動する度、エラーが出てofficeの設定が書き換えられます。
時間もかかるし、SSDを使っていることもあって、毎回書き換えられるのがちょっと不安です。
かと言って、access2007用のwindowsログインIDを使うのも気がひけます。

access2002ランタイムを利用するソフトとaccess2007を共存させる良い方法はありますでしょうか。
どうかよろしくお願いします。
961名無しさん@そうだ選挙にいこう:2010/02/08(月) 16:22:55
ヒント Virtual PC
962名無しさん@そうだ選挙にいこう:2010/02/08(月) 16:52:33
>>961
レスありがとうございます。
やっぱりそういった手が妥当なんですね。
2chブラウザを使うときXP modeを使っています。
ソフトをそちらにインストールし直さなくてはいけないので、
できれば仮想PC等ではなく、同PCの同OS上(言い方正しいでしょうか?)で使えればありがたいのですが…。
963名無しさん@そうだ選挙にいこう:2010/02/08(月) 17:37:15
2002ランタイムを利用するソフトというのは2007では走らんの?
964960:2010/02/08(月) 18:46:06
>>963
走らないみたいです。
ついでに「access2002以外のバージョンと併用すると何か起こるよ」
的なことがHPに書いてあった気がします。
965名無しさん@そうだ選挙にいこう:2010/02/08(月) 19:57:55
質問です。
Excelのデータをテーブルに取り込んで
そのテーブルのデータを追加クエリで他のテーブルに移しているのですが

追加クエリを使うと前のデータの並びではなく順番が狂ってしまいます。

前のデータの並び順で追加したいのですが、方法はありますか?

追加するテーブルはいじれないのでオートナンバーとかができません。
966名無しさん@そうだ選挙にいこう:2010/02/08(月) 20:23:06
「他のテーブル」とやらには行番号があるのか?

あるんならVBAで順番に追加しな。
967名無しさん@そうだ選挙にいこう:2010/02/08(月) 20:44:08
>>966
他のテーブル(メインとします)には
番号などはなく、セルを読み込んだデータを順に入れているのみになります。
968名無しさん@そうだ選挙にいこう:2010/02/08(月) 20:55:05
>>967
じゃあ無理。

Accessは順番なんて覚えちゃくれないよ。
969名無しさん@そうだ選挙にいこう:2010/02/08(月) 21:06:24
しかしこの質問も定期的に来るな・・・
970名無しさん@そうだ選挙にいこう:2010/02/08(月) 21:07:00
>>968
なるほど、了解しました。

SQLかADOでINSERTする場合もそうなってしまうのでしょうか?
971名無しさん@そうだ選挙にいこう:2010/02/08(月) 21:26:16
>>970
INSERTする場合だけじゃなくって、いつ何処で順番が変わるかわからない。
だから番号でも振れ。
972名無しさん@そうだ選挙にいこう:2010/02/08(月) 22:13:39
>>971
なるほど、ありがとうございます。

了解しました!
973名無しさん@そうだ選挙にいこう:2010/02/08(月) 22:56:41
レポートで明細行を印字する時に用紙に10行印字するとして、
実データが10件ない場合は罫線のみの空白行を出したいとします。
me.nextrecordsetで制御する方法をしたら、プレビューでは正しく見えているのに、
実際に出力すると、ページ数がかなり多くなってしまいます。
何故でしょうか?
974名無しさん@そうだ選挙にいこう:2010/02/08(月) 23:10:23
上記追加。OSはXP。Access2002使用です。
レポート開く時にjをDcountで総行数を数えています。
レポート詳細でVBAでiを現在の行としてカウント。gyoを頁ごとの行としてカウントしています。
サンプルと同じようにしているつもりなのに、どうしておかしいのかさっぱりわかりません。
975名無しさん@そうだ選挙にいこう:2010/02/08(月) 23:13:27
そのカキコを分析してサンプルとの違いを推測しています・・・
しばらくお待ちください・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
976名無しさん@そうだ選挙にいこう:2010/02/08(月) 23:31:01
自己解決しました。
開く時ではなく、レポートヘッダーでカウントしたらいけました。
正直理屈はわかりませんが。。
977名無しさん@そうだ選挙にいこう:2010/02/09(火) 19:12:55
次スレ立てたお
Access総合相談所 其の23
http://pc11.2ch.net/test/read.cgi/bsoft/1265710293/
978名無しさん@そうだ選挙にいこう:2010/02/10(水) 00:47:20
暫時埋めて行く方向で
979名無しさん@そうだ選挙にいこう:2010/02/10(水) 10:31:41
>>977
ありがとぉ
980名無しさん@そうだ選挙にいこう:2010/02/10(水) 17:03:05
相談です。Access97使用しています。

テーブルA
ID(オートナンバー) 月日 名前 作成数
1 2009/5/1 鈴木 2000
2 2009/5/1 田中 3000
3 2009/5/2 斉藤 1500
4 2009/5/4 本田 4000
5 2009/5/9 中島 2500
6 2009/6/3 田中 1500

テーブルB
ID(オートナンバー) 月日 名前 不良数
1 2009/5/3 鈴木 2
2 2009/5/7 中島 3
3 2009/5/8 斉藤 1

テーブルAは月ごとの個人別の作成数を記録し、テーブルBは月ごとの個人別の不良数を記録しています。
これをクエリで5月のみを抽出してそれぞれ2つ表を作りました。


981980:2010/02/10(水) 17:04:44
2つの表を一緒に表示したいので「名前」のフィールドをリレーションシップで繋いだのですが、

名前 作成数 不良数
鈴木 2000 2
斉藤 1500 3
中島 2500 1

このように「不良数」が入力されている人しか表に表示されなくて困っています。
「'テーブルA'の全レコードと'テーブルB'の同じ結合フィールドのレコードだけを含める」
を選択すると「あいまいな外部結合が含まれているので、SQLステートメントを実行できません。」
とエラーになってしまいました。

名前 作成数 不良数
鈴木 2000 2
田中 3000 0
斉藤 1500 3
本田 4000 0
中島 2500 1

このように不良数が入っていない場合も名前が表示されるにはどうしたらいいんでしょうか?
982名無しさん@そうだ選挙にいこう:2010/02/10(水) 17:52:12
どんなSQLを書いたのか見せておくれよ
983名無しさん@そうだ選挙にいこう:2010/02/10(水) 19:28:34
>>980
テーブルBをオートナンバーにした時点で設計ミスじゃないか?
本来なら社員番号等のユニークキーをテーブルAに持たせて、
それでリレーすればいいわけだが。
そうすればあとは外部結合すればいいだけだったんじゃない?
それでもテーブルBに名前がなければNULLになるだろうから、
どうしても0を表示したければ、一工夫必要だろうけど。
984名無しさん@そうだ選挙にいこう:2010/02/11(木) 11:36:58
ちょっと書いてみたけどこんな感じでどうかな?
select a.名前,a.作成数,val(format([b.不良数],"0")) as 不良の数 from テーブルA as a left join テーブルB as b on a.名前=b.名前 order by a.id
985名無しさん@そうだ選挙にいこう:2010/02/11(木) 11:44:04
五月だけか。where文を入れ忘れたな
select a.名前,a.作成数,val(format([b.不良数],"0")) as 不良の数 from テーブルA as a left join テーブルB as b on a.名前=b.名前 where a.月日 between #2009/5/1# and #2009/5/31# order by a.id
986名無しさん@そうだ選挙にいこう
>>981
集計クエリと結合は出来ないんじゃなかったっけ?
サブクエリにすれば出来ると思うが