1 :
名無しさん@そうだ選挙にいこう :
2011/10/07(金) 19:05:47.93 ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境 】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
Access総合相談所 24
http://hibari.2ch.net/test/read.cgi/bsoft/1287268291/
>>1 乙
前スレ1000だが間違えた。八桁テキストなら
式1:Format(フィールド名, "0000/00/00")
とかになるな。
>>2 ありがとうございます。
式1:Format(フィールド名,"@@@@??/@@??/@@")で日付変換はできるのですが、/スラッシュの部分を-ハイフンで表示出来ないのです。
ちなみに既にご指摘頂いているwindows2000を使用です。円マークをスラッシュに変更すればいけるように思ったんですが。
>>4 Access2000を使っているのなら、素直にLeft、Mid、Rightでつなぎ合わせればいいんじゃないか?
別にバージョン移行したからといって、使えなくなるわけではないし。
たまたまバージョンのせいで使えなかっただけで、別解も得られたわけだろ?
>>5 そうですね。スマートじゃないなと思ったんですが、できるには違いないのでそうしてみます。ありがとうございました。
ほかのユーザーが同じデータに対して同時に変更を試みている ので、プロセスが停止しました。
>>7 ドキッとした。
このエラー出てどうしようもなくなってアプリ作り直したことあるわw
前スレ941解らん突破できん。
もういいやめとけ。あんまり意味ない。 フォームが開けて更新できるっつんならだけど、バックエンドのパスワードが変わっちゃったという状態と同じじゃないか
11 :
941 :2011/10/09(日) 16:10:39.56
明日当たり検証してみる
14 :
941 :2011/10/09(日) 19:50:32.58
15 :
名無しさん@そうだ選挙にいこう :2011/10/09(日) 20:03:26.65
待ってろ、俺が突破してやる。 サーバーじゃないアクセスでテーブル隠匿なんて土台無理だろ。
>>14 追ってたがテーブル見るのは諦めますた、検証後の種明かしキターイイ
それとそのアクセスウインドウ隠すのはどうやってんの?
17 :
941 :2011/10/09(日) 21:40:26.01
>>16 検証有難うございます
Access2010ならフォーム形式でOverLapped(タブじゃない方)を選んで最大化するだけで、
そのまんまWindows標準の OverlapWindowになります
加えてRibbonとNaviPaneを非表示にすれば格好が付きます
ショートカットで最小化起動するとさらに格好良くなります
>>17 ほんまや、APIいらんのやね始めて知ったわ
ありがと
>>前スレ941 金子由香里のメアドはさ、omanko@omanko だね ちょっと品が良くないと思います。つーことで攻略は完了ということでいいかな?
テーブル はほかのユーザーが排他的に開いているか、既にユーザー インターフェイスを介して開いているので、 プログラムによって操作することはできません。 うっかり機種依存文字ごとMySQLに読み込ませてリンクテーブル越しに文字化けした部分を直そうとしたら↑ おまけにレコードごと削除しようとしても↑ 何をどうやっても↑ なんのことはない、MySQLを直接いじったら何の触りもなく消せた。 もうちょっと的を射たメッセージ出してよ…
21 :
941 :2011/10/10(月) 10:57:39.46
>>19 > 金子由香里のメアドはさ、omanko@omanko だね
検証有難うございます
はい、僅か三日で破られました
何か推測しやすくなってるとか、塞げる孔でしょうかね?
破ったヒント頂けたら嬉しいです
22 :
19 :2011/10/10(月) 11:40:56.39
>>21 >塞げる孔でしょうかね?
裏口叩いた的なことは一切してない。仕様だから塞ぐべき孔ということではない。
>破ったヒント頂けたら嬉しいです
検証に付き合ってくれて仕組みが判らないって言ってる人がいるのだから、
仕掛けを説明してその評価を受けるのが先ではないの?
23 :
名無しさん@そうだ選挙にいこう :2011/10/10(月) 12:50:40.74
おおおーーー。 俺は突破法も対策も分かったぞー。 そこ弄られてたら落とすせばいい! だが肝心の仕掛けがまだ分からん。これから。 つまらなくなるから種明かしはしないでね。>>941
24 :
941 :2011/10/10(月) 16:11:19.25
チョッチだけ対策修正しました、なかなか完成しないです…
ユーザーにテーブル見せない方法
http://up1m.ko.gs/src/koups875.zip (相変わらずパス固定、バックエンドは C:\DAT\ に置いてください)
>>14 の家計簿の方も同じ対応で良いと思いますが、ファイル小さいこちらの方で
Q)テーブルに登録されている、藤巻陽子さんのメールアドレスは何でしょうか?
強度検証終わりましたら、これが突破されましたら、ロジックの批評や提案をお願いしたく思います
26 :
941 :2011/10/10(月) 17:47:47.95
なーるほど。。。
穴塞げば行けるんじゃねーの
載せられて種明かしてやんのアフォウだ。
見られて困る内容は暗号化して保存しとけ
>>26 もうちょっと仕込みいれてたんじゃないか?。本題にはならないからまぁいいか。
DAOのBEへの接続は、なんというか共有とか再利用されるって感じだから、
接続された状態にあれば、パスワード知らなくても結構いろんなことができる。
Accessアプリケーション全体の仕様を不足なく捉えていないとこんなんなると思うよ。
とりあえずドドスコ重要ポイントはこれらにつきる。
それなりに効果はあったということだろうけど、まだ硬くすることはできるでしょ。費用対効果は別として。
つーか、Path固定はなんとかしろやと。
それにしても建設的なコメントがついてなくてちょっと残念だね。
>>24 そもそも、全体の種を自ら明かさずに、人をつかって開発する
ってのは、俺のポリシーからするとちょっといただけないな。
俺も似たような実装しているけれど、自分で作り自分でハック
して確かめている。
なによりも、mdbやらaccdbなんかはパスワードハックのソフトウェア
で簡単にこじ開けられるから、はたしていかがなものか。
33 :
941 :2011/10/11(火) 22:01:45.59
>>31 アドバイスおよび度々の検証有難うございます
実は最後の書き込み直後に気づきまして…何という当たり前な って感じです
なんか変えられた場合はquitで、とか
> つーか、Path固定はなんとかしろやと。
それ全然、見当もつきません
>>32 開発とかじゃないんです、名簿管理してただけのシロウトで、知的好奇心のみです
旨く完成したら、実は中身はこうでした!(^^)! くらい
> なによりも、mdbやらaccdbなんかはパスワードハック
mdbは全部一瞬で開けれますが、2010accdbはハック出来てないと思います
2010で作ったVBA用のaccdbファイルが2007で開けない、、、 「認識できない」っていわれるんだけど2010ランタイム以外に手はありますか?
>>34 基本的に仕様だな。
2010からの機能とか全部外して新しいaccdbにインポートして確かめてみれ。
要はCurrentDb.Versionが12.0になるようにな。14.0になったらなんらか制限とか発生する
まぁいろいろ試せ。きっと君ならできる。多分な。おそらく。できるんじゃね?
デコンパイルしてから2007で試せよ。約束だぞ。
>>33 >なんか変えられた場合はquitで、とか
緻密にやらないとあっという間ですわ。
>>35 そこまで面倒なことをしなくても2007でaccdbを作って全部のオブジェクトをインポートしたら読めた。
VBAの参照設定をその12.0とかに変えてやったらVBAも一応動いた。
これでも十分面倒だったけど、、、
とにかくありがとう。
37 :
941 :2011/10/11(火) 23:40:16.52
そのaccdbは、2010の新機能使ってなかったから、それだけで出来た
知らぬが仏、というか2010の機能なんて全く考えずに2003の知識で作ってた。 知ってて2010の機能使ってたらドツボにはまってたなw端末のほとんどは2007だし。 ランタイム使えばいいんだろうけど使ったことないし不自由そうだし。
>>35 只の知ったかだろ
半角数字とか学生の分際で早くも理系気取りかよ
なにを言ってるのかよくわからない
何か優越感みたいなものを持っているのだろう
なにを言ってるのかわかった。 劣等感の塊の人の被害妄想でした。
景気悪くてイラついてるんでしょ
なんだ生理か
45 :
名無しさん@そうだ選挙にいこう :2011/10/13(木) 19:58:46.56
景気悪いですねー。
Win2000 Access2000ランタイム この端末にAccess2003を入れたいのですが、何か問題点や注意点はありますか? また、上記作業はAccess2000ランタイムをアンインストールし、 Access2003をインストールという手順を考えています。 この方法で大丈夫でしょうか? よろしくお願いします。
他の方法があるとは思えない
〉〉47 回答ありがとうございます。 Windows2000にAccess2003をインストールするのはどうでしょう? よろしくお願いします。
〉〉47 回答ありがとうございます。 Windows2000にAccess2003をインストールするのはどうでしょう? よろしくお願いします。
>この端末にAccess2003を入れたいのですが だから >Windows2000にAccess2003をインストールするのはどうでしょう? 必須事項です。
ありがとうございます。 Windows2000環境でのAccess2003の使用は問題無いか知りたかったのですが、 大丈夫と言うことでしょうか?
Access2003 です 宜しくお願いします。 Access 2003 です テーブル名 omoikane 主キー: datetime 並び: 昇順 フィールド名 datetime ymdhm eur usd jpy chf gbp 実際のデータ: datetime ymdhm eur usd jpy chf gbp 1221440400 2008.09.15 01:00 0.1409438 -0.5596544 0.1994319 0.06646993 0.152808 ymdhm の値で探索し、そのレコードが先頭テーブルから、何番目のデータかを知る、クエリを教えて頂けませんか。
<=datetimeの条件でカウントすればいい
>>54 Thxです
>>53 です
もう少し詳しく教えてもらえませんか
1. ymdhm を検索をおこなう
2. 1.で探索成功した場合、その時のdatetime の値を取得する
3. 2.で取得したdatetimeの値をもとに、<=datetaime になる行を求める
こんな感じでしょうか?
やってから聞けよ
ROWNUM 使えば?
ひとつのMySQLのDBに対し2拠点(部門A,B)から接続。 端末側はAccessで作ったプログラムaccdb。ここからリンクテーブル越しに接続しています。 部門AからはテーブルA、部門BからはテーブルBへ。テーブルA,Bは同じ構造で、本来 一本化してコードで分けるはずがいろいろ不備があってとりあえず別々にすることに。 今後も制作が続くので部門AからXというリンク越しにテーブルAに、BからもXというリンク越しに テーブルBに繋ぐ、というように接続先の違いをリンクテーブルの名を変更して揃えることによって 吸収してしまえばプログラム自体は一つで済む、と思いますが考え方間違ってますか?
設定ファイルを忍ばせて置いて、それによってテーブルAだのBだのを制御させれば、プログラムは1本で済む
>>58 リンク先を変えるほうが一般的じゃないのかな?
リンク先のテーブル名を変えれるのか?
リンクの名前を同一にしてリンク先のテーブルを変えるんだろう
変えれるの?
テーブル名は変えれないかと…
66 :
名無しさん@そうだ選挙にいこう :2011/10/22(土) 00:04:49.26
ACCESS2003です。よろしくお願いします。初心者です。 クエリの抽出条件のところで、 @>500 A>[何以上?] (500を入力) @とAで結果が異なるんですが、なぜでしょう? @だと正しく抽出できるのですが、Aだと500より大きい値と 100より小さい値が抽出されます。なおかつ1000以上は抽出 されていない・・・・。
>>66 めんどくさいから試してないが、クエリのデザインビューで
右クリック>パラメータ
[何以上?] 数値型
と定義するといいと思われ。
68 :
名無しさん@そうだ選挙にいこう :2011/10/22(土) 07:06:27.69
>>67 ありがとうございます!
さっそく今日試してみます!
次期アクセスはVBAが廃止になって、ドットネットで操作します
シンガポール軍は、作戦級C4IシステムとしてACCESSを使用してるそうです。 詳細、お願いします。 あの、Microsoft Office ですよね?
WindowsXPSP3+Access2010+Access2000ランタイム 上記PC環境で、Access2010のモジュール内で CreateObject("Access.Application")したら エラー429(ActiveXコンポーネントを作成できません。)が発生したので よくよく調べてみたら、どうやらランタイムに対してCreateObjectしようとしてる感じでした。 PC環境を変えずにAccess2010をCreateObjectする方法ってありますか? ご存知でしたらアドバイスください、よろしくお願いします! ちなみに、インストール順を2000ランタイム→Access2010としてもダメでした。。
>>72 CreateObject("Access.Application.14")
を試してみれ
ダメだったら、混ぜるな危険ってことじゃね?
74 :
72 :2011/10/26(水) 20:00:55.72
>>73 なるほど、その手が!
どうもありがとうございます、なんかいけそうな雰囲気です!!
後日結果報告します!
>>69 ソースは?
無いなら、Microsoftに問い合わせる。
お前が訴えれるまで、何かを続けるつもりだ。もうプリントアウト(7/7)は済んだぞ。
次期バージョンにつきましては、公式に公開している情報以外はお答えすることは出来ません。 また、そのような非公式の情報に対して、如何なる根拠も提示することはしておりません。
ACCESS2003で住所をMDBへ入れてるんですが、 クエリの作り方がわからないのでお知恵貸してください。 テーブル(myaddress)には、ID,住所1,住所2,住所3,住所4,使用回数があります。 住所1に都道府県が入っています。 別の処理で、住所の場所と取引があると、住所回数へ1をプラスしています。 都道府県だけを、重複なし かつ 使用回数の多い順番でソートして取り出したいです。 SQLビューでDISTINCTを使って重複なしはできたのですが、 ORDER BY を入れると「DISTINCTと矛盾しています」となりうまく行きません。 できれば一回のクエリで抽出したいのですが、どのようにしたら実現できるでしょうか?
ORDER BY 句 <句> が DISTINCT 句と矛盾しています。(エラー 3093) ALL 述語、DISTINCT 述語、または DISTINCTROW 述語と、SELECT ステートメントに含まれていないフィールドを含む ORDER BY 句で、SQL ステートメントを作成しています。DISTINCT 予約語を削除するか、示されたフィールドを ORDER BY 句から削除してください。 c 2010 Microsoft Corporation. All rights reserved.
>>77 SELECT 住所1 FROM myaddress GROUP BY 住所1 ORDER BY SUM(使用回数) DESC
>>78 情報ありがとうございます。
DISTINCT と ORDERの使い方がまだわかってないです。
>>79 おぉ!ぜんぜん思いつかなかった方法です。
ORDER BY の所に SUM(使用回数) を持ってくるのですね。
自分のMDBへ入れたら希望通りの動作になりました
ありがとうございました
81 :
名無しさん@そうだ選挙にいこう :2011/10/29(土) 22:19:29.36
XPでACCESS2000のデータアクセスページをウィザードで作ろうとすると 「データアクセスページを作成できません」とエラーがでます どうしたらよいのでしょうか?ご存知の方がおられれば教えてください
83 :
81 :2011/10/30(日) 00:20:44.30
>82 はい、フルインストールしてます
▼━質問テンプレ ━━━━━━━━━━━━━━━━━ 【 システム環境 】 Windows7, Access2003 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 access 別データベース テーブル フィールドサイズ 変更 本体mdbとデータ用mdbに分けて、リンクテーブルで繋いで運用中です。 本体mdbからデータ用mdbのテーブルのフィールドの追加やサイズ変更をしたいということで 「ALTER TABLE テーブル ALTER COLUMN フィールド TEXT(10)」をExecuteしましたが 「リンクされているデータソースに対してデータ定義ステートメントを実行することはできません」 と言われてしまいました。 リンクテーブル先のフィールドサイズなどを変更させたい場合、何か別に方法はあるでしょうか? ちなみに strSQL = "ALTER TABLE " & "テーブル " _ & "ALTER COLUMN フィールド TEXT(10) " _ & "IN '' [Ms Access;PWD=" & strPass & ";DATABASE=" & CurrentProject.Path & "\データ用.mdb;] " を試しましたが構文エラーでした。
【 システム環境 】 Windows xp, Access2002 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 access パスワード 解除 vbaのパスワードかけられるらしいですが なんか巷のツールで簡単に解除できるらしいのですが 強力なパスワードのかけかた知っている人いませんか?
86 :
84 :2011/11/03(木) 16:15:04.64
自己レスですが、DAOを使って何とかなりました。 参照設定をしなくてはいけなくなるので、DAOの使用は避けたかったのですが 他に方法がなければ仕方ありません。 解決してませんが解決しました。
>>85 そもそもMDBだから問題が発生するんだろ。MDEにすればいいじゃん。
MDBは自分だけで管理。
Access2010です。 acCmdUndo は、マクロビルダからどれを選べば良いですか? 結構探しましたが見つけられなくて困っています。
>>88 アクションカタログに検索窓あるでしょ
「戻す」とかで検索しなよ
なるほどmdeという手段があるのですね やってみましたが編集できなくなるようですね これでオレのたいしたことない技術も盗まれずにすむ
>>90 さらに意地悪をしたいのなら、名前の変更で.mdeを.mdbの拡張子に変えて渡す。
アイコンが変わらないから、初歩的な知識しか持たない人にはまずわからない。
>>89 有難うございます
確かにVBAに変換したらacCmdUndoになるものがありました
(マクロをVBAに変換操作すると、50%以上の確率で二度とaccdbを開けなくなる、2010SP1バグかな)
なんか勘違いしてました
目的は、Undoメソッドに相当するマクロを探してました
ないんですよね
結局、コントロールの更新前にUndoするにはマクロじゃ無理ですね
93 :
名無しさん@そうだ選挙にいこう :2011/11/04(金) 00:36:49.88
>>86 参照設定が嫌ならレイトバインドすればいいんじゃない
>>93 おっしゃるとおり、今回は下のように処理をしようと思っています。
ただ、DAOのバージョンを、これから先も末永く気にしなくてはいけないのが
ちょっとネックなのです。
このデータベースの管理は、いつか誰かに引き継がなくてはならないものですから。
(ひょっとしたら、データベースのコトをあまりわかっていない人に)
Private Function GetDAO() As Object
On Error Resume Next
Set GetDAO = CreateObject("DAO.DBEngine.36")
If Err.Number <> 0 Then
Set GetDAO = CreateObject("DAO.DBEngine.120")
Else
'DAOのバージョンが増えた時のために
End If
On Error GoTo 0
If GetDAO Is Nothing Then MsgBox "『DAO』のバージョンが想定外のため処理を中断します。"
End Function
>>94 処理が増えることを見越してのコーディングなら、条件分岐はcase文のほうがいいと思うよ。
別に間違いだとかそういうわけではないけど。
96 :
名無しさん@そうだ選挙にいこう :2011/11/04(金) 01:33:48.88
>>94 想定外で処理を中断するのなら結局コードの手直しをさせるってことだよね?
だったら参照設定にしておいて参照を変更させてもいいような…
まあ
>>84 はこうやれば出来ちゃうんだけどね
strSQL = "ALTER TABLE [" & CurrentProject.Path & "\データ用.mdb].テーブル " _
& "ALTER COLUMN フィールド TEXT(10) "
あ、ごめんsageてなかったわ
98 :
72 :2011/11/04(金) 11:58:09.83
>>74 遅くなりました、すみません、ダメでした。。。
やはり混ぜるな危険のようです、無念...orz
99 :
96 :2011/11/04(金) 13:15:23.63
あ、パス忘れてた わかると思うけど一応訂正 strSQL = "ALTER TABLE [Ms Access;PWD=" & strPass & ";DATABASE=" _ & CurrentProject.Path & "\データ用.mdb;].テーブル " _ & "ALTER COLUMN フィールド TEXT(10) "
100 :
84 :2011/11/04(金) 22:21:45.27
>>95 >>96 >>99 おお、ピンポイントアドバイスに感謝です。
ALTER TABLE を使うのがベストと思っていたので、本当に助かります。
今日一日中モヤモヤしてたのが晴れました。
101 :
名無しさん@そうだ選挙にいこう :2011/11/05(土) 11:30:53.14
Accessを中級レベル以上でさらにその上を目指したいんだけど、そのためのいい本はない? 書店に並ぶいわゆる入門書のような解説のしかたはかんべんしてほしい。 あれは少しさわれるようになるだけで、深く勉強したい人向けではない(これはWord、Excelにも言えてる)。 自分はPCは得意と思ってるほうで、ここ1-2年でExcelとかExcelVBAもかなりマスターできました。 なのでAccessもいまは赤ちゃんレベルだけど、AccessVBAもマスターするつもりで勉強したいんです。 ちなみにいままで読んだ本は題は忘れてけど「リレーショナルデータベースのしくみ」についての初心者向けの本(Accessに特化してなく、それゆえデータベースにつっこんだことも書いてあった)。
>>101 製品付属の開発者用リファレンスのみでOK
非常に解りやすい、上級レベルでもまず必要十分
>>101 中級以上目指すというのはどの領域でも一つの壁
書籍で突破するのは難しいよ
理由は書籍書いている奴の売り上げに繋がらないからというだけでなく、肝心の部分が抜けていたり、実践的じゃなかったりするため
なので実践に勝る訓練ナシ
これが一番だよ
バグ大杉でもう疲れたぽ
Access2010SP1 データシートでカラム幅やカラム位置を変更しても保存されない ←バグ!! 一日費やして、読み込み時に並び替えを適用を「はい」にしたらやっと保存された 読み込み時に設定してるんやね
>>106 そんな感じなるっていうこと聞いたことあるけど、私の作った環境すべてで発生しない。
2010sp1で作ったファイルなのかい?accdbなのかい?
つかよ、サポート電話して結果教えてくれ。ここでバグバグ言ってもしゃーないぜ。
108 :
106 :2011/11/06(日) 23:36:57.47
いろいろやってたら、開く時のリクエリつーかレコードソースの再設定を辞めたら大丈夫になった しかし現状それでは運用できない
>しかし現状それでは運用できない うむ。それは大変だ 現象が発生する条件情報があやふやなので問題の切り分けすら始められないという状態は スレの役割としてもちょっと残念じゃね。
ApplyFilter と SetFilter の違いを教えてください
【 システム環境 】 OS:Windows7、Access: Office 2003 【 VBAが使えるか 】 はい 【 VBAでの回答 】 できれば不可 【 検索キーワード 】 同一ページ印刷、レポートフッター、レポート、レイアウト レポートのレポートフッターについて質問です。 問題点: 「レポートヘッダー」「詳細」「レポートフッター」を1ページに収めたいのですが、 詳細が2列表示になるくらいにレコードが増えると、レポートフッターが次のページになってしまいます。 レポートフッターを次のページにせず、1ページに収める方法はないでしょうか? 備考: ・詳細は[ページ設定]-[レイアウト]-[行列設定]で2列表示になるように設定してあります。 ・レポートフッターには[個数]フィールドの合計(=SUM([個数]))が表示されるようになっています。 ・[ページ設定]-[レイアウト]-[印刷方向]で「上から下へ」に設定すると1ページに収まるのですが、 「左から右へ」に設定すると詳細に押し出される形でレポートフッターが次のページになってしまいます。
カスタム書式 カスタム数値書式では、セミコロン (;) で区切った 1 〜 4 つのセクションが設定できます。各セクションには、異なる数値型の書式指定が含まれます。 セクション 説明 1 正の数値の書式。 2 負の数値の書式。 3 0 の書式。 4 Null (Null: 存在しないデータまたは未知のデータを表す値。フィールドに入力したり、式やクエリで使用したりできます。 Visual Basic の Null キーワードは Null 値を表します。主キー フィールドなど、Null 値を格納できないフィールドもあります。) の値の書式。 たとえば、次のようなカスタム通貨型書式を使うことができます。 $#,##0.00[Green];($#,##0.00)[Red];"Zero";"Null" ↑↑ これ機能しません、オイラだけですか? Access2010SP1です
$#,##0.00[緑];($#,##0.00)[青];"Zero";"Null"[赤] これでどうだ
黒 黄 紫 赤 青 緑 水 あと何色があるんだっけか
あ、白 忘れてた
116 :
112 :2011/11/09(水) 18:15:04.94
プロパティシートで設定できない、VBAで設定したら機能はした
おら、青とか赤とかにしてプロパティシートで設定できたよ
118 :
名無しさん@そうだ選挙にいこう :2011/11/10(木) 13:20:00.60
Access2010なんですけど ctr+pでプリントすると合計だけが印刷されないんですがどうすればいいですか?
Access2010SP1 VBAでNavigationControl内の各NavigationButtonを参照するには、どうしたら良いですか?
社員マスターテーブル で結婚して姓が変わった社員の扱いは、良い方法有りますか。
>>120 ACCESSじゃないけど前関わったシステムでは「旧姓」フィールドを持ってたな。
何度も離婚結婚する人の履歴まで把握したいとかならそれでは不十分だろうが
そんなニーズがあんまりあるとも思えない
>>119 NavigationControl.Controls
>>124 コマンドボタンとほぼ同じコントロールだし、できないのはおかしい
できない理由があるはずだから、探ってくれ
つかよ、VBAで何すんだ?
すみません。質問です。 職場にAccess2010とAccess2003が共存して入っているのですが、動作がおかしいです。 Access2000で作成したファイルをそれぞれ開くと、以下の現象が出ます。 これはやはり共存が難しいということなのでしょうか。 ・Access2003 →フォームが開かない(エラーになる) ・Access2010 →フォームは開くが、テーブルが開かない。
127 :
名無しさん@そうだ選挙にいこう :2011/11/17(木) 08:30:50.12
ご質問です。ACCESS2007 SP3 VBAは初心者です。チェックボックスで選択されたフィールド名(A)をExcelへエクスポートする際、既にある(B)というフィールド名にTUREであれば(B)に移動させるような方法はあるのでしょうか?
ACCESSとVSを同じパソコンにいれると、ACCESS-VBAの検索窓で文字化けするのナントカしてほしいよね 慣れたけど
130 :
名無しさん@そうだ選挙にいこう :2011/11/19(土) 14:44:14.12
ACCESS 95(95)→2000(XP)→2010(WIN7) まで来た 2000までは問題なく使えるんだが、2010だとフォームからデータを入力した後 に貼り付けたボタンを押すと(メインフォーム+サブフォーム) 「レコードの更新」が出来なくなってる(マクロでつくったもの) どうしたものか・・・
リッチ テキスト形式で行間調整出来ませんかね? レポートが詰まった感じになって、これじゃ実用に耐えない
クエリさえも技術を盗まれたくない場合 保護する方法ないでしょうか?
>>133 テーブルだけ作成して、あとは全てVBAで
クエリ単体ならVBAでなんとかできたけど クエリAからクエリBを呼び出すような文って簡単に作れないのかな?
136 :
135 :2011/11/23(水) 10:26:10.84
VBAでクエリを作成してすぐ消す手でどうにか 同僚にオレのテクニックをパクられずに すみそうな気がしてきました クエリを作る cat.Views.Append strName, cmd 終わったらけす cat.Views.Delete strName
137 :
名無しさん@そうだ選挙にいこう :2011/11/23(水) 11:04:34.82
そこまでして手法を隠したいってどういう状況だ
そのささいな技術が オレの存在価値を高める事ができるからです。
じゃクビな、ささいな技術を共有する社員を雇うよ
クエリに技術もクソもない
クエリはたしかに たいしたことないけど とっかかりのヒントさえ与えたくないからなぁ ヤル気の入り口へは導きたくない
142 :
名無しさん@そうだ選挙にいこう :2011/11/23(水) 15:48:22.78
Access 2000を使っています。 フィールドを設定して、データを入力したテーブルは一見エクセルっぽいですよね。 で、そこで、データを直接入力しなくてはいけないのですが、 エクセルのように、一回コピーして、それを複数のセルを範囲指定してペーストするとそのデータが一気に貼り付けられる、 という風にはできないのでしょうか? もしあればやり方を教えてください。お願いいたします。
143 :
142の母 :2011/11/23(水) 16:01:11.52
142の母です。 いつも娘がお世話になってます。 わたしからもお願いします。 よろしくです。
144 :
142の母 :2011/11/23(水) 16:03:37.13
娘は特に データベースのくせにデータをいちいち一個ずつしか入力できないことに大いに不満を持っているようです。 これはインポートと言うんでしたっけね? よろしくお願いします。
142です たとえば、エクセルで10行入力しておいて、それをコピーして アクセスの該当のフィールドに貼り付ければ一気に貼り付けられますね。 こうするしかないのかな
>>136 そして俺はaccess password recoveryでパス解析して、悠々自適にコードを読み、堂々とパクるのであった。
無駄な努力はやめたまえ
>>142 つexcel
お前にaccessは100年早い
失せろ小僧
>>147 更新クエリで解決しました。ありがとう。
access password recovery ってMDEでも解析できるの?
150 :
名無しさん@そうだ選挙にいこう :2011/11/24(木) 13:29:01.70
クエリとは、テーブルから取り出す条件を指定(つまりフィルター)して、 それを見かけはテーブルのように取り出すこと(でも実態はフィルター自体)だと理解してます。 しかし、こんなクエリもあることを知りました。 (1) 重複クエリ (2) 不一致クエリ (3) テーブル作成クエリ (4) 更新クエリ (5) 追加クエリ (6) 削除クエリ これらは何ですか? まさかテーブルのレコードのデータを追加・変更・削除してしまうの?
>>150 SQL文をAccessのネイティブにコンパイルしたものがクエリです
152 :
150 :2011/11/24(木) 13:52:42.94
何を言ってるのかさっぱり分らん しろうとに分かる言葉で教えていただけんか?
>>152 SQLって解る?
Accessが理解できるコードに変換してから実行されるんだけど、変換済みなのがクエリ
154 :
名無しさん@そうだ選挙にいこう :2011/11/24(木) 14:14:46.32
>>150 そのままやん
(1)重複を抽出してくれるクエリ
(2)不一致を抽出してくれるクエリ
(3)テーブルを作ってくれるクエリ
(4)データを更新してくれるクエリ
(5)データを追加してくれるクエリ
(6)データを削除してくれるクエリ
クライアントOSはXPでAccess 2003 サーバーOSは2003 server データベースがSQL Server 2005 Accessでデータベースのテーブルへのリンクテーブル作るんだが、 そのテーブルを読取専用にすることってできるんかな。 読取専用のクエリを作るのはできるけど、テーブルそのものを 読取専用にする方法が分からない・・・
一方俺は さっさと他人にクエリを教えて 先に進むのであった 知識を共有せずに、 自己満足の保身人間 そんなクズは総じて評価が低い リスク管理ができる人間であれば、そんぐらいわかるだろ 知識なんて、人一人が持てる量なんて限られてる オリジナリティーなんてもんは、たいていの場合意味が無い この手の技術は特にだ 知識より人間を管理できなきゃ出世できんぞ
>>146 それ、データベースパスワード解析するだけで、MDEコード読めないから
つーか、mdbは誰でも一瞬で解除できるし
accdbは総当たりしかないからaccess password recovery とか使っても桁数多ければ1万年後だし
質問です。 クエリA から 帳票形式のフォームと単票形式のフォームを作成しました。 帳票形式のレコードをダブルクリックすると該当の単票形式のフォームを開く ってのをやりたいんですけどうまくいきません。 クエリAにはオートナンバーの「ID」というフィールドが設けてありますので、フォームのプロパティから「ID」のフィールドをダブルクリック したときに該当フォームとレコードを開きたいんですけど マクロを設定するときに フォームを開く→レコードの検索 というマクロなのかな?と思っていますが、設定の仕方がわかりません。 教えてくださいよろしくお願いします! Access暦2ヶ月ほどの初心者です。 VBAはわかりません。
やっとVBAからマクロへの移行終わったよ、keyCode拾うとき以外は全部マクロ、時代はマクロだね
160 :
名無しさん@そうだ選挙にいこう :2011/11/26(土) 09:35:14.48
どういう意味だ? VBAとマクロは同じものじゃないのか?
Accessの場合別なんだよな 内部的には一緒みたいだけど
VBAとマクロの関係はSQLとクエリの関係と一緒 マクロはGUIなだけ
んなこたーない
VBA→マクロって珍しいな 逆はありがちだけど
わざわざマクロに移行する理由って何だろう
166 :
名無しさん@そうだ選挙にいこう :2011/11/27(日) 22:46:37.96
【 システム環境 】 Windows 7, Access2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 不可 【 検索キーワード 】 ACCESS 関数、演算子 コントロールボックス 初心者的な質問ですみません。テーブル1、2、3があります。 メインフォームとサブフォームで構成されています。例えば料金合計でデータの ところで数式に=SUM([料金])または、=sum([料金]*[数式])と設定しても実際には#エラーと 出てきてしまいます。ちなみに、フォームからオブジェクトの依存関係でこのオブジェクトが依存する オブジェクトでちゃんとテーブル1,2、3が関連付けられています。また、単純な式、フォームヘッダーに 数式が=count([顧客名])と入力しても、フォームビューでは#エラーとなってしまいます。 いったい何がいけないのでしょうか?ご教授お願いします。状態的にはテキストボックスを作る→テキストボックスを選択し、 プロパティからデーターソースで色々と数式を書き換えるとうまく更新できなかったりします。 よろしくお願いします。
167 :
名無しさん@そうだ選挙にいこう :2011/11/27(日) 22:48:35.25
>>166 訂正===>3行目=sum([料金]*[数量])です。
メインフォームとサブフォームの関係がよくわからん
複数依存関係がフォーム?にあるならこんな感じか?
=フォーム2.Form!料金*フォーム3.Form!数量
とりあえず、↓を見れ
http://www.accessclub.jp/actips/tips_70.htm ちなみに「サブフォーム 集計 access」でググった
意味が分からんのなら
メインフォームとサブフォームの関係と
フォームのレコードソースとコントロールソースを下に晒せ
今日は気分がいいので、優しいオッレッ!!
169 :
名無しさん@そうだ選挙にいこう :2011/11/28(月) 20:03:59.02
【 システム環境 】 Windows 7, Access2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 不可 【 検索キーワード 】 ACCESS 関数、演算子 コントロールボックス アクセスあまりよくわからないし、別にさらしてもいいデータなので、晒します。 テーブル1===>項目CD,項目名、料金 テーブル2===>受付No、顧客ID、項目CD,数量 テーブル3===>顧客ID、顧客名、〒、住所、連絡先、申込日、開催日、キャンセル日 メインフォーム===>顧客ID(2)、〒、顧客名、住所、開催日、連絡先、申込日、キャンセル日 サブフォーム====>受付No(2)、項目CD(2)、項目名(1)、数量(2)、料金(1)
170 :
名無しさん@そうだ選挙にいこう :2011/11/28(月) 20:10:04.99
>>169 ですが、昨日色々調べて今まで自分が知ったこと。
合計とかの計算式を記述するのは、詳細フォームではなく、フォームヘッダーか、
フォームフッターに記述する。サブフォームの合計をメインフォームに記述したいなら、
サブフォームのフッター部分に記述して、メインフォームにF001SUB.form!合計料金というように
記述する(サブフォーム名がF001SUB,コントロールの名前が合計料金)
だが、実際にはうまくいかないサブフォームの時点で簡単な数式が反映されない。
171 :
名無しさん@そうだ選挙にいこう :2011/11/28(月) 20:14:58.34
>>169 ですが、()内はテーブルです。後、わかったことですが問題はフォームとサブフォームが
うまくリンクしていないかも知れないということです。ちなみに作成はフォームウィザードでテーブル3をメインにして
一気にメイン、サブを作るという方法です。・・・・・色々と調べてみましたが、リンク親フィールド顧客ID,リンク子フィールド顧客ID
となっていますが、この部分がまったくわかりません。どこをどうすればこの要件を満たすのでしょうか?
お願いいたします・・・・・m(_ _)m
172 :
名無しさん@そうだ選挙にいこう :2011/11/28(月) 20:36:35.45
>>169 リンク親フィールド、リンク子フィールドの設定はわかりました。
=SUM([料金]*[数量])をビューで確認するとコントロールボックス内は真っ白です。
もう、わけわかりません。
教えてください。 【 システム環境 】 WindowsXP, Access20003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 グループ化 空白セル 除外 (ID)(A) (B)(C) 001 10/1 2 2 001 10/4 1 3 001 10/5 _ 5 002 10/1 4 1 002 10/8 3 _ 003 10/6 1 2 003 10/7 3 1 ※_は空白 『学籍番号001は、10/1の試験でB科目の評価は2、C科目は2。 10/5はBは受けずにCのみ5。002番は・・・』というようなテーブルを作り、 各学籍番号のデータを @日付が一番新しいものでグループ化 かつ A一番新しい日付で空白だったレコードは、直近の数値をもってくる 例だと (ID)(A) (B)(C) 001 10/5 1 5 002 10/8 3 1 003 10/7 3 1 と、したいのですが、フィールドAを「最大」でグループ化し、BとCを「最後」で くくったのですが、うまくいきません。 BとCに「is not null」をいれたりして試してみたのですが、今度は何も抽出されないのですが・・・。 何かいい方法ありませんか?
>>173 テーブル名はT1、クエリ名はQnで表記するぞ。
Q1 ID、A。Aを最大で抽出。
Q2 ID、A、B。BをIs Not Nullで抽出。
Q3 ID、A、C。CをIs Not Nullで抽出。
Q4 Q1のコピーを元にQ1とT1のIDとAを結合。
B(フィールド名は適当に変える)に、B_: IIf(IsNull([T1]![B]),DLast("B","Q2","ID = " & [Q1]![ID]),[T1]![B])
C(フィールド名は適当に変える)に、C_: IIf(IsNull([T1]![C]),DLast("C","Q3","ID = " & [Q1]![ID]),[T1]![C])
Q2、Q3はID、Aは昇順ソートを指定したほうがよさ気。
>>169 =サブフォーム名!参照テキスト名(
>>170 の例ではF001SUB!合計料金)でいけないか?
176 :
174 :2011/11/29(火) 00:54:43.03
補足 Q4はクエリのデザインビューの上部で右クリックすると「テーブルの表示」って出るからそこからT1を追加する。 あとはリレーションの要領で。
http://support.microsoft.com/kb/208190/ja > First()、Last()、DFirst()、および DLast() 関数では、
> 並べ替え順、インデックス、および主キーが無視されます。
> これらの関数は、指定された並べ替え順での先頭または最後のレコードではなく、
> レコードがテーブルに入力されたときの順序に基づいて、
> 削除されていない先頭または最後のレコードを返します。
気をつけてね
178 :
名無しさん@そうだ選挙にいこう :2011/11/29(火) 22:52:32.85
データで資料の見やすさはExcelとAccessどっちが向いてる? データベース管理はAccessの方が断然見やすいと思うのですが、それらをデータ上で表示させて編集するのはどっちがやりやすいですか? 今のところマスターデータ作ってVLOOKUP関数とIF関数を駆使してExcelでデータベースの構築を考えてるのですが素直にAccess使った方がいいのかなと思いまして聞きました。 ただ、Accessはこれから勉強するのですが他は何となくできそうなのですがレポート作成が難しそうで苦戦してます。
>>177 First()、Last()、DFirst()、および DLast() 関数
使ったことなかったから知らんかった。勉強になったよ。
B_: IIf(IsNull([T1]![B]),DLookUp("B","Q2","A = #" & DMax("A","Q2","ID = " & [Q1]![ID]) & "# AND ID = " & [Q1]![ID]),[T1]![B])
まどろっこしいけどこっちのほうがまだ安全?
>>178 最終的にはフォームとレポートをどこまで作りこめるかじゃないの。
面倒だったらデータ管理はAccess、印刷とかはExcelみたいに使い分けてもいい。
181 :
名無しさん@そうだ選挙にいこう :2011/11/29(火) 23:37:22.89
Accessの汎用性は異常 どこぞのだれのせいで社内で要求される開発スピードが変わっちまった こっちが将来を見越して要求や設計に時間を割いても 評価されない現状がそこにある あとでメンテナンスでグダグダになって・・・こっち見んな たしかにいつもお前のケツ拭いてやってるのは俺なんだが・・・なんだよ、その笑顔 いつも偉そうにほざいてやがるくせに、もっとしっかりしてくれよ、糞上司 いつも言ってるだろ、最初にちゃんと時間とリソースを割けと お前の仕事は、システムを理解できない人間から要求された時間内に、 己が作れるレベルのものを作ることじゃなくて 無理なものは無理、できないことはできない、 待ってもらう必要があるならば、時間が必要だと断ることなんだよ と、それはさておき・・・ 設計も頭の中にあるような小規模・個人で作るならいいんだが、 チームとなるとお勧めしない ユーザーベースとして考えればエクセルもだけど、とてもよくできたソフト だが、データベースとして考えれば全然足りない それぐらいすごいそふと
>>178 桐にしとけ、キー入力とレポート出力は秀逸、Excelの比ではない
>>183 どう考えたってビジネスユースだろ。選択権なんかあろうはずもない。
ネタのつもりならいい加減古すぎ。スレタイから【桐にしとけ】がはずれたのもわからんのか。
しかし知恵袋のボンクラ回答は、いつみても笑えるな ヒマつぶしに最高だ
186 :
名無しさん@そうだ選挙にいこう :2011/12/01(木) 22:27:31.12
リボンを最小化したらせいせいした これ必要ないんじゃないかなー
要らないんなら非表示にもできるよ(最小化とは別)
リボンガー星人
189 :
名無しさん@そうだ選挙にいこう :2011/12/03(土) 15:40:53.21
>>187 そうだね
リボンを非表示にしてクイックアクセスツールバーをカスタマイズしたほうが
画面を広く使えるね
SQL-SeverやMySQLを操作する場合、フロントエンドのaccdb を複数ユーザで共有 しちゃダメ?
>>189 QATはデータベース毎のカスタマイズができないけどね
えっ?
抽出条件にワイルドカードを使用してある言葉に関係したセルの表示はできますが その言葉を含まないセルの表示の際の式はどうなりますか?
すみません、NOTを文頭につけるということをぐぐりました メモして明日再度試してみたいと思います
visualC++でEXEファイル作ったんだけど需要有る? コマンドライン引数から目的のAccessファイルパス・ファイルネーム取得して、 パスワード付Accessファイルをバックアップしてからさらに起動するだけだけど、絶対にパスワード知らせずに起動させられる 1件3000円で希望のパスワードをEXE内に設定して作ってあげるけど 1.外部バックアップだから安全確実、起動Accessファイル内でバックアップファイルをさらに日付付きとかにコピーしてください 2.AccessファイルのパスワードはCネイティブコードに暗号化して埋め込んでありますので、絶対に解読できません
196 :
名無しさん@そうだ選挙にいこう :2011/12/04(日) 21:15:25.99
>>195 手間暇考えますと3千円は安いですね。でもVB6で同じようなものを作って使ってますよ。
絶対解読できない(笑)
案外人いるんだな。回答はまったくつかないけど。
ネイティブコードに相当に複雑な暗号化して埋め込んであれば実質的に解読無理じゃないですか 2,000万円で解読できますか? というか、幾ら掛かるか解らない状況で解読に取り掛かる勇気ありますか?
あっという間にAccessの話から逸れてるし。
>>199 ・Accessファイルを開く時点でメモリ上にはパスが復号化されている
・EXEは無視してAccessファイルを解析するだけでもいい
・2000万円ありがとうございます
>>199 つか、他人にパスを教えいている段階で駄目駄目じゃん。
そんなの危険すぎて使えないよ。
> ・Accessファイルを開く時点でメモリ上にはパスが復号化されている メモリ上に保持してるのは、パスワードをハッシュ展開した後の暗号化キーじゃねえの それからパスワードを復元するのは無理ぽ、しかもハッシュ関数の組み合わせも公開されてないし > ・EXEは無視してAccessファイルを解析するだけでもいい 2010のパスワード解析は総当たりしかないから、2000年以上掛かるんじゃね 2000年後にMSから2000万円貰ってください
普通に Set Ntothing してると思うが、ダミーで別の値を代入しといても良いな
後からクリアしたって全然意味ないから あとC++って言ってるのにSet Nothingとか何なの
いや、俺C++の人じゃないし
>>204 そんなことが可能なら全てのパスワード意味なくなるでしょ
Accessモドキを作ってそのEXEに起動してもらえばパスワード教えてもらえるんじゃね?
>>207 なんでそれが可能なら全てのパスワードの意味がなくなるって思うの?
冷静によく考えてみてね
可能だし、意味はなくならないよ
EXEにパスワードを埋め込むメリットて何? パスワードなくても結局開いたファイルの中身見放題なんじゃね?
>>204 が言ってるのは、パスワード付AccessやExcelを開くときにパスワード打ち込むから、それをメモリから見れるだろ
と言ってるのと同様
当然パスワード使った瞬間に削除される、アホらしい
そんなの無理だからキーロガーとかある
212 :
当日商品を出しました :2011/12/06(火) 00:59:32.55
>>211 が言ってるのは、
パスワードを入力し終わった瞬間にはキーを離してるんだからキー入力が読める訳ないだろアホらしい
と言ってるのと同様なんだけどね〜
戦国時代やもっと古い時代を舞台とした火葬も悪くはないが そいつが活躍したせいで、その後の歴史にどのような影響を与えたのかが気になるからなぁ。 やるなら太陽ぐらいはやって欲しい。 もちろん、現代までは概要みたいな感じで流しても構わないから。 あ、当然その後主人公が暗殺されたりして結局歴史は変わらず、真実は闇の中へ的なBADENDでもいい。
215 :
214 :2011/12/06(火) 23:53:33.63
大誤爆w
>>213 Hey boy !!
Do not save sensitive data in RAM, the file system, or the registry. Instead, cache the data to process memory.
>>217 Hey boy !! You're so Stupid.
You can't see process memory,and there are only hashed strings, not password.
ハック可能ならMSに売れよ、数億になるだろ。
ならんよ(笑) 例えばさ、パスワードダイアログの入力中に「*******」とか表示されている間、 エンターを押す前、パスワードはもうハッシュ化されててメモリに存在しないとか思ってるの? それともプロセスメモリにあるから外から見ることはできないとか思ってるの? おめでたいねえ 話にならない訳だ
じゃあハックしてみろよ ネットで理論入手したから何時でも核弾頭作れる、と豪語してる中学生並みだな
セキュリティ求めるなら桐のが良いじゃん。アクセスじゃ無理。
>Cネイティブコードに暗号化して埋め込んであります 復元方法も埋め込んでるんだろ?
逆アセンブル解析するには君の人生は短すぎる
225 :
名無しさん@そうだ選挙にいこう :2011/12/08(木) 14:36:40.29
みなさんレベル高いですね。
C++もVB6も持ってない私がVBAで作ってみましたよ。
target.accdb のpasswordをhackしてください。
豪語している達人の方がhackできなければ、私はこれで行きますよー。
1週間以内にhackの報告なければギブアップしたという事で。
http://up1m.ko.gs/src/koups1041.zip
226 :
252 :2011/12/08(木) 14:50:55.28
不具合合った削除
227 :
名無しさん@そうだ選挙にいこう :2011/12/08(木) 18:26:52.62
うpする奴は2000万円も用意しとけよ
228 :
252 :2011/12/08(木) 18:35:18.80
229 :
252 :2011/12/08(木) 18:37:23.81
C++やVB6とは別の人ですのでAccessVBAです。御褒美は誉めてあげるだけです。
230 :
名無しさん@そうだ選挙にいこう :2011/12/08(木) 21:01:52.58
パスワードを可視化するだけで数億円で買ってくれるスレはここですか?
俺はギブ、無理だ、ところで 252 じゃなく225 だろ。
チャレンジしたんだが、2003なのでな
>>232 これでpasswordをhackされなければ
>>195 を買わなくても良いかなっと。
CriptAPI使ってませんでvba基本機能のみ。mdeですのでPcodeです。
ショートカットに最小化指定してカッコ良く起動してくださいませ。
accdb、mdb同梱版に差し替えましたよー。
mdbは一瞬でパス解除できるから無意味だろ、パス求めるゲームの意義はあるが
235 :
名無しさん@そうだ選挙にいこう :2011/12/09(金) 14:08:41.10
データベース分割ツールなどでデータとフォームが分かれているAccessを作成した場合、 フォームのmdbをローカルに置いておくのと、サーバに置いておくのではパフォーマンスに差が出るかな? どっちの方が良いんだろうか。
フォームはローカルに置いてください、これ原則 LANを流れるデータは最小限に
解らん解けん、これメモリからpass見れるの? 教えエロい人
>>233 ほい
*7J26pe*0jo>7omkIE`A
こんなんで2000万円もらえたらイイネ!
あれ、何だこれ、mdbのパスaccdbと同じじゃないか あまり意味なかったかな
>>238 有難うございます。まんま正解ですね。
さすがわ豪語していた人、凄いですねー。
お陰様で
>>195 を買いませんよ。
ところでhackの概略はどんな感じですかね?
そんなもん総当たりで簡単に求められる 今回のパスワードは記号、数字、大文字、小文字の組み合わせで20桁だから 1秒あたり1000兆回アタックするとして1400兆世紀くらいで全組合せ行ける
最近のブルートフォースは、グラボを使ってやるからな
ヒントplease
もし、
>>226 で一旦削除する前のモノ使われてたら比較的簡単に解析されてると思います。
>>238 だけど、別に大した事はしてないよ
結局
>>201 に書いたとおりで
accdbを開くとき受け渡されるパスワードを抜いただけ
ま、具体的な方法なんてどうでもいいでしょ
要はそういうリスクがあるから
>>195 >>196 >>225 みたいなのはちょっと・・・ってこと
なかなか理解できない困った子がいたから話が長引いちゃったね(笑)
Accessモドキ作ったのかよ
252 :
名無しさん@そうだ選挙にいこう :2011/12/13(火) 09:53:21.20
accessの運用で困っています。 OS:win7 access2010 目的:顧客情の管理(最大レコード数2000程度) 現状:広域地図(accdb1) 詳細地図(accdb2) 見取り詳細図(accdb3) 住所等詳細情報(accdb4) 上記の4データベースをリンクで統合 問題:accdb1 accdb2 accdb3 がフィールドの最大値制限に引っ掻かかる1GB寸前状態になっている。 理由はOLEオブジェクト挿入でbitmapを使っている為。 上記の解決方法を教えてください>< 今のところ、SQLsarver 2008 R2(無料)にDBを構築して、アップサイジングウィザ等を実施するも、OLEのデータだけなぜかエクスポート出来ない。 次に、OLE上のbitmapデータそのものが1MB近いので小さくす方法が無いか探したが見つからず。 データ容量の最大値が地図データで2000件(2GB?程度)の予定なので、これをクリアできる方法なら何でも良いです><
253 :
名無しさん@そうだ選挙にいこう :2011/12/14(水) 07:46:27.23
【 システム環境 】 Windows XP Pro, Access 2007
【 VBAが使えるか 】 多少
【 VBAでの回答 】 可
【 検索キーワード 】 MYSQL ストアド ODBC
ODBC接続にてMySQLに接続しています。
MySQLのストアドを実行した結果(レコードセット)をACCESSで利用したいのですが、
どのようにコーディングすればよいですか?
ストアドプロシージャの呼び出し例(SELECT系、パラメータあり)
ttp://www.tsware.jp/tips/tips_447.htm を参考にしたのですが、できませんでした。
お力添えをいただければと思います。
>>252 テーブルに保存するのは画像ファイルのpathだけにしたら?
255 :
名無しさん@そうだ選挙にいこう :2011/12/15(木) 21:36:24.61
★ OS、ACCESSのバージョンを明記してください。 ●環境 ・WindowsXP SP3 ・Access2003 SP3 ●質問内容 ある測定データのデータベースを作成しようとしています。 はじめてデータベースを作成するので、検索しようにもキーワードがわからずに悩んでいることがあります。 例えば、以下のようなテーブルがあり、 サンプル名 測定項目 測定日 測定データ サンプル名 測定項目 測定日 測定データ1 測定データ2 ・・・ 測定データ100 測定データが100点の数列である場合 下段のように100列のテーブルを作成するのは阿呆らしいのですが、 どのように解決したらよいのでしょうか?
>>255 「Access リレーションシップ」や「データベース 正規化」で検索してみてください。
列の繰り返しはテーブルを分けて1対多のリレーションシップを作成することで解決できます。
例えば下のように分け、測定IDを使って二つのテーブルを関連付けます。
*テーブル名({主キー列名}, 列名)
測定({測定ID}, サンプル名, 測定項目, 測定日)
測定データ({測定ID, データ番号}, データ)
257 :
名無しさん@そうだ選挙にいこう :2011/12/16(金) 00:59:52.59
>255 早速の回答ありがとうございます。 知らない単語や表現があるためじっくりと検索しトライします。
ADODB.Stream ってバイト配列作れないのな、Readで読んでも先頭に変なのが2byteくっ付いてくる 3バイト目から読めばバイト配列になる感じなんだが、マニュアルにないから仕様外ですかね
中高生の頃お世話になりました
>>259 なるほど、バイト配列からハッシュ作ったりするとき別の結果になっちゃうよね
262 :
名無しさん@そうだ選挙にいこう :2011/12/25(日) 00:04:31.24
●環境 ・Windows7 ・Access2003 SP3 ●質問内容 テーブルの作成方法についての質問です。 マスタの内容 A 1 A 2 B 1 B 3 ・・・ あるテーブルのフィールド1はマスタのA/Bjから選択し、フィール2はフィールド1の内容により選択内容を変更する場合にはどのようにしたら良いのでしょうか? 例) フィールド1 | A | B ----------------------- フィールド2 | 1or2 | 1or3 よろしくお願いします。
>>263 Ctrl + G、Alt + F11、ツール→マクロ→Visual Basic Editorのいずれかの方法でVBEを起動。
>>262 サブフォームの典型的な使い方じゃないか。
質問があります。某入門ページにて、アクセスのVBAを学習していたのですが。 アクセスからクエリなどで条件指定して出来たフィールドをエクセルのセルに順序よく転写するという 作業がしたいのですが。 以下、DAOを用いて、あるテーブルからレコードを参照しているのですが Do until 〜 loopの間で、エクセルのセルにレコード情報を書き込むという作業をやりたいのですが、 どうしたらいいのでしょうか? 以下アクセスVBAで使用しているプロシージャなのですが。 Sub dispData() Dim db As DAO.Database Set db = CurrentDb Dim mySql As String mySql = "SELECT * FROM 某テーブル ORDER BY 某フィールド ASC" Dim rs As DAO.Recordset Set rs = db.OpenRecordset(mySql) x = 1 Do Until rs.EOF Workbooks("現在開いているエクセルファイル").Worksheets("sheet1").Range("A" & x).Value = rs.Fields("某レコード") rs.MoveNext x = x + 1 Loop End Sub 以上のようなイメージで簡単に転写できればと思っていたのですが、知識不足なのでしょうが全然できません。どのような行程を行えばできるのでしょうか? こういうやり方が解説されたページを教えていただくのでも構わないので教えていただけないでしょうか?
WorkbooksはExcel.Applicationのプロパティだから GetObjectかCreateObjectが必要かな
>>267 お返事が送れて申し訳ありません。
CreateObjectで一度エクセルを開いてから、オブジェクト指定した変数を文頭に
つけることで、自由に操作できるのですね。ありがとうございました。
【 システム環境 】 Windows7, Access2003 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 主キー、transferdatabase、sqlserver sqlserverのテーブルをエクスポートしようと transferdatabaseを利用したのですが、 エクスポートしたテーブルの主キーが設定されてない状態になっていました。 VBAを利用して主キーを引き継いだ状態で エクスポートする方法は無いのでしょうか?
>>268 そうそんな感じ
ちなみにExcelのCopyFromRecordsetメソッドを使うと楽ちんコピーできるよ
>>270 ありがとうございます。エクセル側からも。あるいは、オブジェクト変数で
エクセルを動かしたときに、それは便利そうですね。
>>252 自分は同じようなシステム作ってますが、こういう運用はしてません。
DB SERVERはMYSQL使ってます。BLOB型指定しておけば、添付ファイル型に対応もできますが、速度的にもメンテナンス的にもよくないので、ファイルのアップロード昨日を追加してDB SERVERの特定フォルダにファイル類は格納。
そしてファイルのパスだけを格納して逐次ロードさせるようにしてます。これならまず限界など来ませんしね。
それとデータをBMPってのはトラフィック考えると良くないので、画質100%の圧縮率最高のPNG, jpgを使います。
accessの体験版って再インスコしたらずっと使えますか? 基本を勉強できるぐらいの機能はありますか?
274 :
名無しさん@そうだ選挙にいこう :2012/01/03(火) 10:28:45.77
質問です。わかる方教えてください。(Access2010です) 以下の作業を行いました。 @フォームを作成して、そこにチェックボックスとボタンを一つずつ配置しました。 Aチェックボックスに「chkSelect」、ボタンに「btnButton」を名前を付けました。 Bボタンにイベントプロシージャを作成して、以下のVBAコードを作りました。 (チェックボックスにチェックがついていたらフォーム1、ついていなかったらフォーム2を開くというマクロです) Private Sub btnButton_Click() If Me.chkSelect.Value = True Then DoCmd.OpenForm "フォーム1", acNormal, , , , acDialog Else DoCmd.OpenForm "フォーム2", acNormal, , , , acDialog End If End Sub ボタンを押すと、「メソッドまたはデータメンバーが見つかりません。」と表示されます。 なぜこのようなエラーになるのでしょうか。
>>274 valueなら
0か-1で判断すればいいんじゃね
276 :
名無しさん@そうだ選挙にいこう :2012/01/03(火) 15:44:45.66
アクセスインストールしたけど、超初心者には何が何だかさっぱり判りませんね。 そんなに便利な物なのですか?
>>276 使い道がないなら、なんだろうとゴミ以下だよ。
CGをやりたい人にWordなんか無用だし、小説を書きたい人にフォトショなんて無用の長物だろ。
>>276 巨大ファイルのリレーションが便利なんだよ
279 :
名無しさん@そうだ選挙にいこう :2012/01/03(火) 16:07:31.50
280 :
名無しさん@そうだ選挙にいこう :2012/01/03(火) 16:10:09.23
好奇心でいろんなソフトを試してみようって気は良い事だろ。 CGをやりたい人や小説を書きたい人が、それしかしない、ってワケじゃないし。
>>274 2002だけど、そのコードで問題なく動く。
参照設定を見直してみてはどうか。
>>284 エスパーしてやってんだから当たり前
答えもしていないおまえに発言権はないよ。
このスレから消えろよ
回答者にもエラーメッセージ読めないアホがいるんだな
すみません、チェックボックスに「chkSelect」 ↑ [ec]が抜けていました、check
>>286 ごめんごめん。
あまりにもトンチンカンだったからさ。
>>288 どうせそんなことだと思った。
やっぱり質問者の良識を当てにしてはいけないということか。
エスパー()ならそのくらいわかれよ
292 :
名無しさん@そうだ選挙にいこう :2012/01/03(火) 20:43:35.25
ExcelのデータベースよりAccessのデータベースのほうが ファイルサイズがなんと100倍くらいaccessのほうがおおきくなる。 職場でそうなってる。 だから誰もAccessはいじろうとしなくなった。 原因はなんだと思う?
インデックス無しのテーブルだけでも100倍になるのか?
> だから誰もAccessはいじろうとしなくなった。 なーんかうそくせー
>>292 多分周りの人間が馬鹿なのが原因だと思うよ
最適化していないだけとかのオチなんじゃねーの。
サイズなんか気にするってどんな職場? メールに添付でもしてるの?
質問があるのですが。 2012/01/01 山田太郎 20歳 のように、日付と名前と年齢をあらわすフィールドがあって、これが結構何万件とかの数のレコードがあるのですが これに新たに生まれ年のフィールドを作りたいのですが それを作ったあと、日付の年引く年齢みたいな形で、産まれ年のフィールドに自動的に対応するレコードを 挿入ってできるんでしょうか?できるならばどうしたら良いのでしょうか?
>>298 選択クエリでDateDiff関数を使って計算フィールドを作る。
300 :
298 :2012/01/06(金) 01:10:14.12
>>299 なるほど、それはすばらしい方法ですね!
ところでいくつか質問があるのですが、
選択クエリって何ですか?
DateDiff関数って何ですか?
計算フィールドって何ですか?
>>299 あの、
>>300 の人は私ではないです。
試行している途中なのですが
>>298 の例でいうと
式1: DateDiff([yyyy],[日付],[年齢])
このイメージは間違ってますよね?二つの日付を出してその合間をとるみたいな
関数のようですが、一つは年齢のように整数を表す場合は
どのように表記するんでしょうか?
>>301 年齢を求めるのと勘違いした。
Year(日付)-年齢
でいいじゃね。
>>302 ああ、そんな簡単でよかったんですね。初歩的ですいません。
ありがとうございました!
式1: Year([日付]) - [年齢]
質問があるのですが、あるフィールドの上から5つまでのレコードを 取り出したいのですが、以下のようなやり方でもできるのですが 直接「.EOF」の部分をレコードの終わりまでではなく 上から五つのレコードを指定するみたいな メソッドはあるのでしょうか? Do Until データーベース.EOF Or x = 5 Debug.Print rs.Fields("情報") rs.MoveNext x = x + 1 Loop
>>305 SQLのTOP値じゃ駄目か。
SELECT TOP 5 * FROM 〜
みたいに。
ORDER BYを指定したTOP 5だと5レコードじゃなくて5位まで (同点がいるとレコード数が増える) というような意味の事がヘルプに書いてあるけど、 やってみたら5レコードまでだった。 どゆこと?
ORDER BY すっところが間違ってんじゃね
【 システム環境 】 Windows7, Access2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 なんて検索すればいいのかわからない ※フィールドをFと表記します。 テーブルには文字列型のフィールドがF1,F2、数値型のフィールドがF3,F4とあります。 クエリでF1の集計をグループ化、F3の集計を合計にします。 ここまでは思い通りにできるのですが、F2とF4が問題です。 やりたいことはF2がAの時のF4の合計から、F2がBの時のF4の合計を引いた数値を表示したいです(F2の値はAかBの2種類しかない)。 どうやればいいのでしょうか?
IIf([F2]="A",1,-1)*[F2]) これを合計すればいいのでは?
あ、最後の)は余計だった
314 :
308 :2012/01/07(土) 19:56:00.78
>>309 フィールドが1つだけしかないテーブルを作って試したので間違いようがないんだ。
>>314 で、レコード内容や結果を書かない理由はなんなんだ?
ここの住人にどうしてほしいの?
ま〜たレス読めないアホが出てきたか
317 :
308 :2012/01/07(土) 23:07:15.78
わかった。5位までっていう解釈が違ってた。 5レコード。ただし、5レコード目の値と同じ値のレコードが他にあればそれも返す。 という、なんか変な仕様だ。
5位タイがいた場合、6レコードまでということでしょうか?
ちなみに作業中で、あるフィールドのレコードの上からいくつか
欲しいというときは、
>>305 のように回数用の変数も同時に指定する
というのは、ポピュラーなやり方といえるんでしょうか?まぁ
出来れば何でもいいといえばそうなんですが、普通ならこうする
というのがあれば、知りたいと思いました。
>>318 おれは、件数が決まっているのならFor文を使う。
ループ回数上限は、その前にレコードカウントなりを使って取得すればいいわけだし。
Do文は一般的に件数不定の場合に使う。
>>317 至極真っ当な仕様
みんなそのつもりで使ってる
なんか初心者の日記帳になってるな
>>318 5位タイじゃなくて、5レコード目タイ。
例えば
1 1 1 2 2 2 2 2 3 4 5
というようなデータだったら、5位の値は5だけど、5レコード目の値は2。
で、値が2までの8レコードが帰ってくる。
>>322 なるほど、ありがとうございます。確かめながら使って慣れていくしか
ないですね
>>318 俺ならForループにしてループの先頭でEOFチェックするかな
まあDoでもForも結局カウンタ変数を使うって点では同じだね
>>320 なるほど、そんな仕様になっていないSQL Serverって真っ当じゃないんですね
例えば、1年間で100回ぐらい筆記テストとかやるとして、 そのデーターがアクセスにはいってて、例えば1ヶ月分の平均点だったり 中央点だったりを出していきたいときって、そのままアクセスで 何かして、出せるんすかね? なんとなく、エクセルに出力してからやっちゃいがちなんですけど、アクセスで やったほうが手っ取り早くできるんでしょうか?
>>327 Accessで可能。
ただ、50年テスト受けるとしても5000件しかないうえ、あなたには
Accessの知識が全く無い。
この状態ではExcelで処理するのが吉。
>>328 ただそれを複数人分管理するとなると死ぬだろうね
access使う最初のメリットはデータを3次元以上で扱えることだから。
excelじゃ縦横の二次元にvslookupの擬似が精一杯。
3次元? 何言ってんの?
>>330 言ってる意味がわからないならレスや質問しなくていいよ。
excelでやってりゃいい
excelを使いこなせないやつに限ってexcelを見下す
>>329 とすると、例えば100人分の100回のテスト1年にわたって小刻みに
行われるデーターだったら、圧倒的にアクセスということでしょうか?
その場合、おもにクエリの式ビルダや、集計項目などを活用して
様々な平均点、あるいは偏差値や中央値などを出していくという
作業でしょうか?
そういうところを解説しているサイトとかご存知ないでしょうか?
>>329 >>331 Accessが多次元データベースだとは知りませんでした。
それで、それはどこの世界のAccessなんですか?
>>333 もちろん
それくらいの簡単なものであれば、商品台帳のようなものをテンプレートとして少し改造するだけで作れる。
テーブルは2つで十分。
学生マスタと得点マスタの2つ。さらに科目毎であれば、得点マスタに科目別のフラグとなるフィールドを1つもうけるだけでいい。
フラグは後でも拡張できるからやってみると、excelとの違いがわかるよ。
>>333 ちなみに集計値や偏差値などはこのテーブルに対して後からでもクエリで作れるよ。
ここまでは一切コーディングなしで構築出来る。
>>333 今はデータをAccessに置いてその解析をExcelでやってるんでしょ?
それって適材適所でいい使い方だと思うよ。
無理してAccessでやることないって。中央値とか面倒だよ。
>>335 >>336 ありがとうございます。クエリにおいてあまり細かな関数や集計について
説明されたページを見つけることができなかったので、大体その辺を使って
クエリで用意すれば、人数の多いテストなどの各人ごとの詳細なデーターも
作れるようですね。その内勉強してみます。
>>337 そうです。現在簡単な日付や点数などで細かく区切ったものをそのままエクセルにはりつけて
エクセルから計算とかいう形にしています。
もっと高度にアクセスを使えるのかなと思って質問しました。
ただ、アクセスは、一度データシートで画面を出して、そこで直接計算というのが出来ないというか
バージョンが2002なので、新しいバージョンなら多少できるのかもしれないですし
ピボットテーブルとかで出来そうな雰囲気はしそうですが、難しそうですから
エクセルに貼り付けて、そこで計算というのが、今現在私にはわかりやすいです。
クエリでこのような物を作りました。 1番目のフィールド…テーブルのフィールド1をグループ化 2番目のフィールド…Sum([テーブルのフィールド2]-[テーブルのフィールド3]) 実行結果は2番目のフィールドが空白になってしまって、思った結果になりません。 テーブルのフィールド2と3は通貨型で、空白のレコードもあります。 どうすればいいのでしょうか?
nz()
初歩的な質問ですまない。 自宅のPCがaccess2010で、職場のPCがaccess2003なんだわ。 VBAの知識とか全くなくて、イベントを全て埋め込みマクロで作ったんだが、これを2003の環境で動かすにはどうすれば良い?
343 :
名無しさん@そうだ選挙にいこう :2012/01/11(水) 15:39:42.87
>>342 「動け〜、動け〜、ちちんぷいぷい、ちちんぷい。あぶらかたぶら、柿の種」
と祈ってください。
>>342 mdb形式で作るのは当たり前として、2003にない機能は使わない。
最終的には2003がインストされたPCで最終調整あたりじゃないの。
345 :
310 :2012/01/11(水) 20:15:25.97
レスありがとうございます。 埋め込みマクロを旧バージョンで動くよう変換できると聞いて、質問してみたのですが、もう少し調べてみます。
>>345 > 埋め込みマクロを旧バージョンで動くよう変換できると聞いて、
じゃ、その人に聞いてみてね
無理だと思うけど
コマンドラインから、/RO 付きで起動すると読み取り専用になります 起動した後で、読み取り専用になってるかコードで確認する方法はありませんか
>>347 ADOのConnectionのModeを使ってみたら。違うかもしれないが。
有難うございます DAOの方でいけました、CurrentDB.Updatable
初歩的な質問なのですが。 クエリで日付や名前などで、色々と限定してから、sqlを見ると WHERE (((DB.名前)="佐藤") AND ((DB.日付)>2011/1/1)); のように()がいっぱいあるんですが、これ全部消しても同じように動いてくれるようですが これは何か意味があるんでしょうか? 作業によっては()があったほうが良い場合もあるんでしょうか? 後からsplに現手要素を付け加えたいときは、()が凄く邪魔になるようなのですが……
>>350 括弧は+や-と同じ演算子。大抵は優先順位が一番高い。これは数学でもそうだったと思うが。
計算の順位に自信があるのであればいらないだろうが、個人的には可読性を上げるため
大いに用いるべきだとは思う。
ところで手直ししても、結局は元通りになるんじゃなかったっけ?
クエリはあまり使わないからうろ覚えでスマン。
>>351 ありがとうございます。数学のと同じ意味というので、なんとなくわかったような
気がします。複雑な命令だと、文のどこからどこまでの塊を読むのかということが
おそらくパソコン側でわかりにくくなるので、はっきりさせるみたいな意味。でしょうか?
単純な命令ばかりだったら、あまり意味はないと。
アクセス君がコンパイル済のクエリをSQLに変換するとそうなるってだけ
>>353 クエリのクセみたいなもんすかね。あまり気にしなくてもよかったんですね。
どうもどうでも良いところを気にして迷うことが多いですわ。
VBAやりたてのころは、hogeってなんだろうってしばらくわからなかった時期が。
ACCESS2010のナビゲーションウィンドウですが、 2000と比べて1つのテーブル表示領域が大きすぎて非常に使いづらいのですが、 テーブルの更新日や登録日を非表示にして、 表示をすっきりさせるにはどのように設定したらよいのでしょうか?
タイトル 全てのアクセスオブジェクト とかいう場所を右クリック、表示形式を選ぶ
15年分の色々な人間の色々な点数をまとめたスコアブックのようなデーターベースが あって、レコード数が70万件ほどに達しているのですが。 例えば2010年の鈴木さんの試験回数と点数の比率などをVBAでエクセルなどに書き出すときに とても重くなり、結構何十秒もかかってしまうのですが。 2010年の分だけのデータを切り出したテーブルを作成して、そのテーブルから行うと数秒で済みます。 当面はこのやり方でスムーズな作業はできるのですが、 例えば年度の意味もあらわす重複しない主キーとなるフィールドがあって そのフィールドをインデックスとしているのですが そのフィールドでbetwenn 20100101***** and 20101231***** のようにsqlで範囲を 指定すれば、多量のレコードのあるデータベースでも速度があがるということは ないようです。 これは私の知識不足なのですが、インデックスに指定したレコードが重複しないフィールドで あらかじめ範囲を指定すれば、その範囲のみのテーブルと同様の速度になるのではと 期待していたのですが、 そのようなインデックスフィールドを使ってデータ探索範囲を限定して速度を引き出すというようなことは できないことなのでしょうか?
359 :
名無しさん@そうだ選挙にいこう :2012/01/16(月) 09:24:53.90
カーディナリティ度が低いんでしょうな 登録されている人間の数がわからんから何とも言えんが むしろ「鈴木さん」を条件にしてそのカラムにインデックスつけたほうがいいと思うんだが あとは、日付型を使うとか?
インデックスって 完全一致か前方一致の時にしか 使用されないって 本当ですか?
本当です
362 :
360 :2012/01/16(月) 10:03:47.12
364 :
360 :2012/01/16(月) 10:46:46.19
ISAM形式のindexじゃねえの? 原理的にそうなってるだろ
366 :
360 :2012/01/16(月) 11:19:04.02
>>365 理由も必ず書いて教えてもらえませんでしょうか。
大変申し訳ありませんが、理由も無く「そうなってる・そうなってない」だけの回答は控えてもらえると助かります。
言うだけなら九官鳥でもできます。
>>366 バカですか?
だから、indexの構造が原理的にそうなってるちゅーの
368 :
360 :2012/01/16(月) 11:39:32.11
371 :
358 :2012/01/16(月) 16:39:25.30
>>360 の人は私ではないです。
>>359 ありがとうございます。人間の数は数百人に及びます。なので
その人間ごとにインデックス用のデータを作るのは逆にその手間が
かかりすぎてしまって。
日付型というのも、同じ日のデーターも結構あるので、やはり子の状況ではテーブルを
区切るというのと同じ速度にまでインデックス指定では難しいのかもしれないですね。
ありがとうございました。
アクセスVBAからエクセルの保存ってできないのでしょうか? (エクセル指定オブジェクト変数).ActiveWorkbook.Save でエラーみたいなのになるのですが。
373 :
名無しさん@そうだ選挙にいこう :2012/01/17(火) 10:12:20.35
できるよ。
エラーみたいなのにならないのでしょうか?
>>373 >>374 (エクセル指定オブジェクト変数).ActiveWorkbook.Save
この形で普通にされるんでしょうか?私の場合
oApp.ActiveWorkbook.Save
なのですが。
「オブジェクトはこのプロパティ、メソッドをサポートしていません」
となります。普通にエクセルに何か文字や数値をいれることはまともに
できるのですが。バージョンが、アクセスもエクセルも2002なんですが
その辺に関係あがあるでしょうか?
>>376 それ、レイトバインディングで、oAppが定義されてねぇとか、そういうアレなんじゃね?
>>377 Dim oApp As Object
は宣言してありますが。ダメなようです。どうもバージョンか
別のところに問題がありそうですね。
…
主導の上書き保存でも問題はないので それでやってみますね。ありがとうございました。
Access2003から2010へ移行する際、気をつけなければならない点などはありますか?
>>378 もう一度、参照関係見なおしてみれ。
エクセルのバージョンが違うとかそういうささやかなミスだろうから。
俺の予想ではoAppにSetされてるのがWorkbook
>>381 バージョン間互換性をあてにしない
共存インストールしない
我が子を見守る気持ちで接すること
>>383 dim oApp as object
Set oApp = GetObject("C:\・・・・・\Exceldata.xls")
のような形で宣言し、事前にExceldataに当たるファイルは
開きっぱなしの状態なのですが、間違っているしょうか?
>>384 なるほど、愛しの我が子を見守る気持ちで居ればいいのですね
ちなみにプログラム的に使えなくなった関数やら何やらはないと言う考えでOKですか?
(2003のmdbを2010で開いてそのまま使える的な意味です)
>>385 あーやっぱり
それWorkbookオブジェクトだから
oApp.Save
でどうぞ
まあその前に変数名を変えておいた方がいいだろうねえ
>>387 そういうことだったんですね!できました!ありがとうございます!
変数名を変えたほうがいいというのは
Set oApp = GetObject(, "Excel.Application")
のようにクラス名だけででエクセルアプリを指定しておくということでしょうか・
これならば、oApp.ActiveWorkbook.Save で保存できましたが。
普通に使う場合はこの方が便利につかってらっしゃるかたが多いんでしょうか?
>>388 あ、いや、WorkbookオブジェクトをSetする変数の名前は
oAppじゃなくて例えばoWBとかにした方がいいんじゃないの
ってだけの話
>>389 ああ、なるほど、ありがとうございます。
すいません、ACCESS97を使っていたXP PCが先ほど天昇してしまいました。 一応、Windows7(今使用)があるのでネットは困りませんが ほとんど毎日ACCESSを使用してるので至急2010を購入しなければいけないのですが MS OfficeXP Personal版(エクセルとワードが2002の)を持っている場合は アップグレード優待版でいいのでしょうか?いのでしょうか?
昇天な
>>392 ありがとうございます。
さっそく、在庫あり明日発送可能の店で注文したいと思います
>>393 そうですね、あわてていたので(笑)
質問です。Access2000で作成したShell関数を含むコードが、Access2007で動いてくれません。 具体的には以下のコードで、WindowsXPのFAX(画像)ビューアーを起動させようとしています。 ShellArgs = "rundll32.exe " & Environ("windir") & "\system32\shimgvw.dll, ImageView_Fullscreen " & ImageFilePath rtnval = Shell(ShellArgs, vbNormalFocus) rtnvalにはタスクIDが返ってくるのですが、FAXビューアーが起動してくれません。
>>396 失礼しました。ImageFilePathに空白を含んでいることが問題でした。
撤回します。
398 :
名無しさん@そうだ選挙にいこう :2012/01/29(日) 01:18:13.28
質問があるのですが、毎週2回行われるあるテストの、期間別に平均点やトップの点数などを出す作業を割りと頻繁に行うのですが。 クエリで、日付のところで、例えば2010年1月から3月までで、100点が何回あったかというのを調べたいときに 集計項目を出して日付を「グループ化」し、点数を「合計」というのにしてだすと、3ヶ月間ではなく、1月10日に2人いて、2月15日には3人いた。のような出方をしてしまいます。 一応ざっくりと2010年という1年単位であらわす日付もあるので、それを指定すると、まとめて100点が何人か出してくれるんですが。これだと、2009年12月から2010年2月までとかのときにまた漏れがはっせいします。 こちらで指定したい日付の期間内で、ある点数が何人と確実に決めるやり方ってあるんでしょうか? そういう期間をあらわすフィールドを新たに設置してそこをグループ化するしかないのでしょうか?
>>399 最初にwhereで間引いて、カウントするんじゃダメなん?
SELECT Count(テーブル1.点数) AS 100点の人数
FROM テーブル1
WHERE (((テーブル1.日付) Between #1/1/2012# And #2/29/2012#) AND ((テーブル1.点数)=100));
>>400 ありがとうございます。クエリの集計の中のWHERE条件というのであらかじめ
絞っておくのですね。私はまだまだ理解できてないようです。
この辺の機能を解説されたページなどもしご存知なら教えていただけないでしょうか?
質問したいのですが。 アクセスから、エクセルを動かすさいに。そのエクセルのワークブックにある VBAのプロシージャを動かすことはできないのでしょうか? 単純に Set oWb = GetObject("C:〜\book.xls") oWb.call hoge ではエラーのようになるだけなのですが。やはりそれは無理ということなのでしょうか?
>>402 実行環境:Access2002+Windows7
'変数の宣言
Dim objExcel As Excel.Application
Dim s_ExcelPath As String
'オブジェクトの宣言
Set objExcel = New Excel.Application
'「excel.exe」のPathを取得
s_ExcelPath = objExcel.Path
'既存のブックを開く
objExcel.Workbooks.Open ("ファイル名")
'開いたブック内から、特定のワークシートを選択する
objExcel.Worksheets("ワークシート名").Select
'プロシージャ実行
objExcel.Run "プロシージャ名"
'EXCELブックを開く
Shell s_ExcelPath & "\excel.exe " & "ファイル名", vbNormalFocus
>>403 ありがとうございます。わかりました。ワークブックを指定した変数ではなく。
エクセルアプリケーションそのものを指定した変数で
プロシージャをrunするとできるようですね。
とても助かりました。ありがとうございます。
すみません、よろしければ教えてくださいませんか? フォームを非表示のままデザインビューで開いた後に 非表示のままフォームビューに切り替えるVBAを組んでいるのですが .visible=flaseにしていても、フォームビューに切り替える時に 一瞬表示が見えてしまいます。 それならと思い、application.echo falseを付加してみましたが、 やはり一瞬切り替え時に表示が見えてしまいます。 切り替え時に一瞬表示されるのが煩わしいので なんとか回避したいのですが、何か良い方法はないでしょうか? WinXP,Access2003です。
>>405 試してないからできるのか解らないが、最小化にしておいて後にリストアしてみたらどうか。
Access 2007からできた複数の値フィールド みなさん使い心地はどうですか?
409 :
407 :2012/02/05(日) 10:12:41.76
>>408 後出しで済みませんが、
具体的なご意見をお待ちしております。
複数の値フィールドとか言うから、複数フィールドを1つにパックするようなことかと思ったら(意味無いけど) ほんとに複数の値が入ってるのか。使える場面はいろいろあるのかもしれんが、あえてこの機能を使って 実装する必然性を感じないな。
複数の値/添付ファイルは、SharePointリストを扱えるようにする機能のひとつなんだろうよ。
accessに関する資格とかあって、就職とか有利だったりすることって あるんすかね?エクセルまではそこそこでも、アクセスは使える人は 結構少ないのでは?
>>412 accessよりoracleとったほうがいいよ
アクセスの資格なんて評価のしようが無いだろう 一応検定等はあるみたいだが、学んだところで とても実務で使えるレベルになるとは思えん
Access2002から2010にアップグレードしたところ。 現在ヘルプを流し読み中。 Webデータベース猛烈プッシュでウザいわぁ。 別途SharePointないと使えないじゃん。 しかも「この機能はWebデータベースでは使えません」ばっかり。 データアクセスページで懲りてないんでしょうか・・・。 テンプレートもビジネス用ばかりで、 個人用ユーザーは切り捨てっぽいね。
>>415 まぁぶっちゃけ
Webじゃ絶対使わないしね
それだったらSQL SERVERとのクラサバにする。あれはいらん。
share pointもな・・・
そういうのに向いていると思えない
もともとテンプレも昔からショボいものばかりだし
417 :
415 :2012/02/07(火) 21:36:36.62
あらら。 オンラインの開発者用リファレンスが表示されない。 オフラインもリンク切れいっぱい。 Access 2007の表記のままのも沢山あるし。 よくこれで発売GOサイン出したな。 頑張ってバグ取りしたけど不具合あって 「大変申し訳ございません。 すぐに修正いたします」 みたいな感覚もう無いんだろうな。 「100%バグ取りはムリですから。 フィードバックしてくれれば、要望の多い順に直しますよ」 みたいな感じか。
418 :
415 :2012/02/07(火) 21:58:30.90
>>416 初めての頃は
ビデオ管理のテンプレートとか見て、
「こういうのが作れるようになるんだ」と
ワクワクしながら勉強したんで、
切り捨てはちょっと悲しいかなと。
プロからは「しょぼい」と言われ
アマからは「難しい」と言われ
どっちつかずの中、
まだプロになびいちゃうのかぁと。
せっかくExcel感覚で入力しながら
テーブル作れるようになったのに。
複数値フィールドも
プロからは
>>408 ,410 みたいな冷たい反応だし。
>406 試してみたのですが、解決できませんでした。 色々調べた結果、原因と解決方法が導け出せました。 原因:フォームのポップアップが有効。 そのため、application.echoが効かない。 対策:WinAPI32を利用し、Accessのウィンドウそのものを デスクトップ外に追いやり、開くフォームは.move 0,0,0,0で 画面外に追いやる。 デザインモード終了後、フォームを表示するときに改めて .moveで座標とフォームサイズを指定し、表示する。
vistaでaccess2007を使ってるのですが IME入力モードの設定になぜか全ハングル、ハングルという全く必要のない項目が表れて困っています。 どなたかこれらを消去する手段をご存じの方はいらっしゃいませんでしょうか?
帰化して下さい
423 :
420 :2012/02/12(日) 11:44:24.96
当方生粋の日本人でありハングルなど全く理解不能であり ましてやそんなものをインストールした覚えもなく いったいどこから混入したのかさっぱりわかりません。 IME入力モードを設定する時にハングルという文字列がいちいち視野の中に入るのが不快なので消去したいのです。
真に受けるなよ
>>423 言語パックや、IME2010などのほうで、登録があるのでは?
前者は、コンパネからアンインスコして、後者はIMEの設定側で削除するとか。
IMEStatusとか調べてみるといいと思うよ
427 :
名無しさん@そうだ選挙にいこう :2012/02/14(火) 13:44:18.78
Microsoft Office Access 2003 を使っております。 ACCESSにエクセルを加えて表を出したいと考えてますが、可能でしょうか。 可能なら、どのようにしたらいいかアドバイスお願いします。 例 ACCESS Excel 3月10日 欠席 結果 遅刻 山田 太郎 山田 1 0 1 日にち 2011/3/10 佐藤 0 0 0 欠席 1 戸田 0 0 0 遅刻 1 をACCESSに打ち込んだら自動にエクセルのシートに行くようにしたい。 【 システム環境 】 WindowsXP, Access2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 否(勉強します。)
自動的といっても、なにかのイベントにひっかける必要があるから、最終項目のafterupdateでクエリとプロシージャ利用したらいいんジャマイカ 全部ウィザードでできるよ 要するに魔法使いだよ
>>428 ありがとうございます。
試しに使ってみます。
今、ACCESSを始めましたw
良く分からないけど、本があったので、使って作ってみます。
430 :
名無しさん@そうだ選挙にいこう :2012/02/14(火) 23:05:23.06
【 システム環境 】 Access2007-2010 Windows7 【 VBAが使えるか 】 授業で習っている程度です 【 VBAでの回答 】 可 検索フォームにチェックボックスを5つ配置して、チェックのついたものに関して抽出をかけ、サブフォームに結果(フィールド)を表示させたいと思っています。 チェックボックスはch0,ch1,ch2,ch3,ch4という名前にしています。 Private Sub ch0_Click() Call ChangeData() End sub Private Sub ch1_Click() Call ChangeData() End sub Private Sub ch2_Click() Call ChangeData() End sub Private Sub ch3_Click() Call ChangeData() End sub Private Sub ch4_Click() Call ChangeData() End sub Private Sub ChangeData() Form_[Qアレルギー検索結果表示のサブフォーム].RowSource = "SELECT * FROM [T定食] WHERE Section1 = " & Me.ch0.Value & _ " AND Section1 = " & Me.ch1.Value & _" AND Section2 = " & Me.ch2.Value & _" AND Section3 = " & Me.ch3.Value & _" AND Section4 = " & Me.ch4.Value End Sub しかしサブフォームには結果が抽出されません。どこをどうしたら結果のフィールドだけが抽出され、サブフォームに表示されるのでしょうか?わかる方いらっしゃいましたらお教えください。
>>430 Me.Form_[Qアレルギー検索結果表示のサブフォーム].Form.RowSource =
だとどう?
あと、AfterUpdateのほうがよくないか?
都度、ワークテーブルに書き込んだらどうよ 結果も見やすいし 解決してからテンポラリ化したらいいよ
FormにRowSourceってどうなんだっつーの。
RecordSourceだなw
436 :
a :2012/02/16(木) 15:24:59.55
age
Win98, ADT2.0 (レガシで維持されてる専用ソフト) 納入先システム管理者の立場。VBAは理解できるが、修正権なし Win3.1の頃はMacいじってたので、この世代のOfficeの知識は乏しい ある(主な)レポートはA3横なのだが、 主なプリンタの設定(OS)をA4にすると、どうやってもA3横なのを覚えてくれない 主なプリンタの設定(OS)をA3横にするとそこは突破できるが、 別のレポートがA4縦で、こんどはこいつがきちんと打てなくなる チェックすべきポイント教えて 印刷設定、Access 2.0 などでぐぐると、バージョン違いで、 "名前の自動修正情報をトラックする"をいじってみろと出たが、、
付け足すと、この世代のAccessベースのソフトを使用するにあたって、 レポートの用紙設定をきちんと記憶させる「当時の(?)作法」が知りたい、と。
エンドユーザが特に操作しなくても、Accessアプリ(?)が用紙設定を記憶してるように見えるとき、 レポート毎にオペレータが用紙設定をする方法があるのではなく、 実際には開発側がReport.PrtDevMode を毎回埋めてあげてることが多い、って認識でいい?
Win98ならプリンタをコピーして増やせるだろ
Accessの使い難さったら…桐に戻りたい
443 :
名無しさん@そうだ選挙にいこう :2012/02/22(水) 18:26:16.38
自分で直接質問して来いよ。俺も知りたい。
解りません。ってかそれだとアクセスで直接動かないでしょ。
別に直接動かなくても結果として動いてるように見えていればいいんじゃないの
448 :
名無しさん@そうだ選挙にいこう :2012/02/23(木) 13:06:17.52
すげー、動いた
VBAの柔軟さでもって、どとねとの機能を呼び出せるんだよ。 地味にすごいことなんだけどね
今日再び実機を触れる時間ができ、保守マスタぽい画面の奥に、設定画面を発見した。 めぐりめぐって、もっともベタな解決を見たわけだが、 このスレで、用紙設定はアプリ側がやってる。って確信した後でなきゃ、 不慣れなAccess相手に、保守要員専用画面みたいな、 下手に触ったらDBが壊れそうな(気がする)画面を開く勇気はなかった まじありがとう
【 システム環境 】 WindowsXP, Access2003 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 Access リストボックス 最後 表示 バーコードでデータを読ませてます。 読ませたデータはINSERTで毎回テーブルに保存してます。 読ませた分だけリ全てストボックスに表示させてます。 やりたい事は 最後に読ませたレコードのデータに カーソル(?)を持ってこさせて表示させたいです。 100件とか読ませるとリストボックスでは収まらず見えなくなってしまうので・・・ お願い致します。
最後に追加したデータってのはわかるんだろ? リストボックスのValueプロパティに代入したればいいんじゃねぇの
あげ
特定のフィールドだけを、レコードごとにファイル出力(txtやHTML)をする事って出来ますか?
457 :
名無しさん@そうだ選挙にいこう :2012/02/26(日) 23:52:47.92
何が出来ないと言ってるのかがよくわからん 単にクエリを書き出せばいいだけの話じゃないのか
【 システム環境 】 WindowsXP, Access2003 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可だが、なるべくVBAを使わない方法で。 Accss2003 クエリやテーブルで 選択した行をテキストエディタにコピペすると フィールド名も一緒にコピーされてしまいますが、 選択した行だけコピーされるようにするには どうすればいいでしょうか。
無理でーす dataobjectってのを介すると出来るかもよ、でもメンドイ コピーじゃなくペーストの方で工夫したらどうよ
461 :
名無しさん@そうだ選挙にいこう :2012/02/29(水) 22:29:56.16
>>458 例えばクエリでタグくっつけてhtml生成させる。
そのレコードを吐き出すとく、別フィールドの20120229.htmlってファイル名のテキスト文書で保存したい。
生成したテキストを、取得したファイル名でテキストファイルに書き出してやればいいんじゃないの 書き出しにはファイルシステムオブジェクトを経由してもいいし、昔ながらのPRINT#でゴリゴリ書いてもいい 前者について知りたければMicrosoft Scripting Runtimeで調べれば参考になる
463 :
名無しさん@そうだ選挙にいこう :2012/03/01(木) 20:11:42.60
アクセスのデーターと、エクセルのデーターを行きかうVBAプロシージャを作って いるのですが。 アクセスのあるレコードにある「0.0001」のような小数点以下の数値と エクセルのあるセルにある「0.0001」を if フィールド("数値") = エクセルの数値 then のようにifで判定して数値が同じか否かでそれ以下のプロシージャを分岐させ、実行するか否かの文をつくりたかった のですが、小数点が混じると、数値が同じでも、イコールと認識されないようです。 これはなぜなのでしょうか?数値を文字列の変数に変換してからなら、行えるのですが 二度手間でもあるので。できれば、数値でそのまま判定したいのですが、これは無理な ことなんでしょうか?
465 :
名無しさん@そうだ選挙にいこう :2012/03/02(金) 09:08:52.33
>>464 エクセルが文字列になってるってこと?
StrComp使えば?
>>465 ありがとうございます。一応は解決したのですが、よくわからないです。
例えば
Dim x As Double
Dim y As Double
x = 0.002
y = 0.002
Do Until x > 1
If x > y Then
MsgBox "大きい"
ElseIf x = y Then
MsgBox "同じ"
End If
x = x + 1
Loop
の場合、「同じ」となってくれるんですが、例えばこの場合のxとyを
duex = owb.worksheets〜.cells(1,1)
duac = rs.Fields("数値")
のように、エクセルとレコードからとってきて、その値がともに0.002と上の文と変数の数値は同じだとして、どちらの変数型もDoubleにしてあるのですが。その場合。「大きい」も「同じ」も実行されません。
ただ
duex = owb.worksheets〜.cells(1,1) + 1
duac = rs.Fields("数値") + 1
のようにプラスして小数点を超えた数値にしたりすると、同じと動作してくれて、さらに小数点以下の数値の大小も判別してくれます。この同時プラスとかで対応できるんですけど。なぜこうなるのか。わからないんです
467 :
466 :2012/03/02(金) 21:08:30.97
ちなみに、小数点が0.001のように、第三位までの小さな数だとこの現象が 起こるのですが。数値が第二位より大きいと起こらないです。 ただ、普通にxとyのように数をプロシージャないで。宣言するのであれば 問題ないんですよね。まぁ、バグみたいなものでしょうか。こういう細かなことで 上手くいかないと、凄い面倒くさくなるんですよね(^^;
*1000とか*10000とかすれば
469 :
466 :2012/03/02(金) 21:50:19.23
>>468 ええ、そのようにしてやってみることにしますね。ありがとうございました。
既出過ぎて面倒なんで「浮動小数点数 誤差」あたりでググってください
>>470 要は誤差なんですね。なんとなくわかった気がします。
ありがとうございました。
472 :
名無しさん@そうだ選挙にいこう :2012/03/03(土) 16:22:57.45
【 システム環境 】 Windows7, Access2010 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 ACCESS CSV インポート データ型の変換エラー 下記の手順でCSVファイルをインポートする作業をしようとしたところ、正しく取り込まれない(テーブル上で空欄になる)データがありました。これを正しく取り込ませるにはどうしたらいいのでしょうか。 取り込もうとしているCSVファイルは費目と金額のデータで、ひと月につき1つのCSVがあります。金額データは最大13桁あり、負の場合もあります。 中身は下記のような感じです。 [1行目] 費目,金額 [2行目] S47010,9999999999999 [3行目] S48000,9999999 作業手順 (1) 1件目のCSVを、新しいテーブルにインポートする。金額フィールドには『通貨型』を指定。 (2) 2件目のCSVを、(1)で作ったテーブルにインポートする。 結果 ・ (2)で、 "[テーブル名]_インポート エラー" というテーブルができました。エラーフィールドには「データ型の変換エラー」と表示されていました。 ・ (2)で取り込んだ分に、金額フィールドが空欄のレコードがありました。 (2)をする前に、(1)で作ったテーブルの金額フィールドが『通貨型』であることは確認しています。 よろしくお願いします。
473 :
472 :2012/03/03(土) 16:27:29.28
追記です。 (1)でも(2)でもCSVをインポートするときは、「先頭行をフィールド名として使う」にチェックしています。
該当レコードの金額が元のデータでどうなってるかがわからないと何とも言えん 値が変なのは間違い無いからどこかの段階で直してやる必要がある
はい、VBA終了です Microsoft Bringing HTML5 and JavaScript to Office 15 By Klint Finley / August 3, 2011 2:00 PM / 7 Comments Enterprises have long customized Microsoft Office, using Visual Basic for Applications (VBA) and Visual Studio Tools for Office (VSTO). Now it appears those technologies will have to make room for HTML5 and JavaScript. ZDNet's Mary Jo Foley reports on a new job listing from Microsoft that indicates that the company is adding JavaScript and HTML5 support to Office. The good news for legacy shops is that, as Foley says, there is no indication that Microsoft is dropping support for VBA and VSTO. But this development advances JavaScript's supremacy in the development world and demonstrates Microsoft's seriousness about the language.
Microsoft to focus on HTML5 and JavaScript for Office 15 extensions By Mary Jo Foley | August 3, 2011, 10:13am PDT
どう読んだらVBA終了になるんかえ? つーか、いつの記事だっつーのw
ポップアップフォームを前面表示した時に 後ろのフォームのウィンドウサイズが勝手に変わるのが激しくウザいな
どうやったらそうなるの
>>475 >there is no indication that Microsoft is dropping support for VBA and VSTO.
テーブル ・国 ・人 ・会社 人と会社には国IDフィールド有り。 人と会社に繋がりはない。 リレーションシップの張り方はどっちが良いんでしょうか 1.人─国─会社 2.人─国とは別に会社─国_1
後者です
【 システム環境 】 Windowsxp 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 access オートフィル 2010ver. です。 住所録データの中の電話番号が記載されていないもの(空欄)をクエリで抜き出しました。 そこにダミーの電話番号(一桁からOK)を入れたいと考えています。 抽出されたデータの空欄の電話番号欄に、ダミーの番号を、任意の数字から、 エクセルのオートフィルのような簡単な方法で、入れる方法はないでしょうか。 (たとえば5555555から昇順にスタートなど) ちょっと検索すると、コード入力などが必要そうに思うのですが、そのあたりがまったくわからないので、困っています。お助けください。
484 :
481 :2012/03/06(火) 16:27:45.20
>>482 ありがとうございました。
でも2で保存しても再度開くと1になってしまうみたいです。
人IDフィールドを2つ使う関連人物テーブルだと
人─関連人物─人_1
でちゃんと保存されるんですけど・・・。
>>483 まったく意図が解らないな
ユニークな番号が欲しいのならば別にキーを設けた方がいいんじゃないの
>>483 Excelで件数分のオートフィルデータを作ってセルをコピー、
Accessのクエリ結果で電話番号フィールドを選択して貼り付け、
みたいな。
487 :
482 :2012/03/06(火) 16:38:48.54
>>484 ああ、クエリでの結合設定じゃなくてリレーションシップか・・・
リレーションシップなんて使わんから分からん
要らんw
488 :
481 :2012/03/06(火) 16:52:39.97
>>487 リレーションシップ張ると壊れやすいとは聞いてるんですが、
連鎖削除が便利なんで使っちゃうんですよねぇ。
ついでに質問ですが、
人や会社テーブルで国IDを使う場合、
コンボボックス使いますか?
テーブルではIDむき出しでフォームでだけコンボボックス?
489 :
482 :2012/03/06(火) 16:56:35.82
俺はテーブルは剥き出しでIDじゃなく文字で見たいならクエリでやれ派だわ 連鎖削除なんてDBの定期最適化(手動なのか仕込みなのかは知らんが)の時にお互い精査して死んでるレコード消すようにすりゃいいべ
490 :
481 :2012/03/06(火) 17:10:45.55
>>489 参考にします。
ありがとうございました。
491 :
483 :2012/03/06(火) 17:44:17.82
>>486 素晴らしい! 頭がいい! ありがとうございました。
>>485 >まったく意図が解らないな
そのようですね
なんだかなぁ
もしかして「日付/時刻型」だと2038年を乗り越えられないですか?
ちょっとした小ネタを 保存ボタンを押したときだけデータを登録・更新させない方法 ・フォームのプロシージャー外で変数 (例 Dim UpdateCheck As Integer) を宣言 ・フォームのロード時イベントでUpdateCheck = 0 を代入(念のため) ・保存ボタンを押してデータの更新をするイベントの前の行を UpdateCheck = 1、データの更新イベントの後ろの行をUpdateCheck = 0で囲む ・フォームのBeforeUpdateイベントでif文 UpdateCheck = 1 でない場合はme.undo とする 保存ボタンを押してデータの更新をするイベントを通過するときだけUpdateCheck = 1となり更新が許可される、それ以外のケースでの更新はme.undoされるのでデータの更新は行われない どうですか?結構便利ですよこれ
訂正ね × 保存ボタンを押したときだけデータを登録・更新させない方法 ○ 保存ボタンを押したときだけしかデータを登録・更新させない方法
496 :
名無しさん@そうだ選挙にいこう :2012/03/09(金) 04:31:30.25
なんか物凄く昔にやったような記憶があるわそういうの 他者に使わせる目的で組む事をしなくなって久しいからすっかり忘れてたけど
Booleanを使わない理由を知りたい。 領域は同じだけどさ。
>>494 これ大丈夫なの?
データが残っちゃうケースありそうだけど?
accessで作りたいのに会社は販売王を導入してる。 販売王は融通きかないから使いたくないのに。
>>500 そのくらいでイラついちゃいけない
仕事なんてそんなもの
>>500 融通の利かない環境で
うまく業務を切り盛りするのが君の役目。
その苦労に報いるために給料が出る。
何もかも自分好みに環境を整えてもらって
かつ給料までもらおうなんて甘いよ。
汎用ソフトはあくまで汎用なんだからしょうがないさ
販売王より良いものを作って置き換えれば。 今ないなら仕方ない。
>>502 使いづらいソフトで業務に支障が出たらそれこそ意味ない。
君は社会経験が無いのかな?
506 :
名無しさん@そうだ選挙にいこう :2012/03/14(水) 18:31:23.61
末端の作業員の立場でそんな事を言ってもしょうがないだろう
>>505 のほうがよっぽど社会人経験がなさそうな発言な件について
普通はといえるほどいろんなところで働いてはいないが、融通が利くのは社長の顔が見える中小だな。 大企業になると1〜2世代前のPC環境なんてザラだし、ソフト一本入れるだけでいろんな申請をしなくちゃならんし。
1事業所だけの会社でかつ小規模だったら・・・・いや無理だな 仮に誰かが自作の業務プログラム組んだとしてそいつが辞めちゃったら誰がサポートするのよ? まあ、自分の範疇で収まる仕事でしか使えないよなフツー
510 :
名無しさん@そうだ選挙にいこう :2012/03/15(木) 01:28:48.82
数年で200億の売り上げ達成 考え方は個人商店なのだが、人数が700人オーバー 正直もう管理しきれん
【 システム環境 】 Windows7, Access2010 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 可 【 検索キーワード 】 表 Dlookup |まとめて検索 表表示 エクセルからaccessに乗り換えました。 一つのデータに管理コードが二個あり片方のコードを 表に入力しvlookupを呼び出すと作業を一個ではなくまとめて行うには accessの場合フォームにて作るのでしょうか? 下記様に作りたいのです。 コード1は自分で貼り付けてコード2・型番は自動的に出てくる。 コード1 コード2 型番 555 / 565 A 898 / 469 E 355 / 215 DF ・・・・・ エクセルやテキストで用意したデータを一括まとめてコピペで確認出来る様に作りたいです。 そもそもコピペが出来るのかすらよくわかってませんがよろしくお願いします。
変な所にとが入ってました、失礼しました。 >表に入力しvlookupを呼び出す「と」作業を一個ではなくまとめて行うには 修正>表に入力しvlookupを呼び出す作業を一個ではなくまとめて行うには
513 :
名無しさん@そうだ選挙にいこう :2012/03/15(木) 09:10:19.08
まず、テーブルを作ろう それには入力用のテーブルとマスタ用のテーブルを作ろう ここで重要なのはマスタ用のテーブルのコードを主キーにしておくこと 次に、クエリを作ろう 先ほど作ったテーブルを追加し、コードで結合するんだ フィールドは入力用のコードとマスタ用の型番にしよう 結合が同じ行だけ含めるになっているとマスタに無い入力ができない それでいいならそのままで 間違っても入力したいのなら、 入力用の全レコードとマスタの同じ結合レコードを含めるにすればいい ちなみに、テーブルはエクセルのデータがコピー可能だし、 上のクエリなら入力用フィールドのみコピー可能なはず これで分からないとかいうなら、 こんなテキスト主体のところで聞かずに本読め貸す
>>513 「本を貸していただけるのですか、連絡方法は」とかレスがあったら笑う。
>>513 とても分かりやすい回答ありがとうございます。
× 本読め貸す ○ 本読めカス
そんな蛇足なレスせんでも
>>514 のオチで充分だったのに
Access15ではデータ型増えるのか? 改行無しテキストと改行可テキストに別れる
Access Bolg のジャン佐藤さんは日本人には見えない件。
【 システム環境 】 XP, Access2000 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 不可 Excelのワークシートをテーブルにインポートするマクロを作りたいんですが キー違反のため削除となってしまいます。 以下のエラーメッセージの意味が分かりません。 「対象となるテーブルに既に存在する主キー値がはりつけたレコードに含まれているか、 テーブル間に設定されているリレーションシップの参照整合性に違反しています。」
空文字列を許可する
問題点がズバリと書いてあるのに意味がわかりませんというのは質問としてどうなのよ
>>521 ありがとうございました。その部分と、テキストを数値に直したら通りました。
しかしうまく行きませんでいた。
1はAとB、2はAとC、3はAという場合
ワークシートだと
1A
1B
2A
2C
3A
こんな感じで並びますけど
一列目を重複しない主キーとしてインポートするにはどうしたいいんでしょうか?
524 :
名無しさん@そうだ選挙にいこう :2012/03/25(日) 20:25:45.14
上の説明じゃ、フィールドの区分けがいまいちわからんが もし、数字と文字が別のフィールドだとするのなら キー重複してるけど・・・・
なんか無茶苦茶言ってるな 初球で三振を取りたいと言ってるのと同じぐらい無茶な話だ
>524 すいません、数字と文字は別のフィールドというか列です。 やっぱり一度に取り込むのは無理ですか。 試行錯誤してるうちなんとなくそんな気がしてました。 毎月上記のようなワークシートでデータを渡されるので それを見やすいように変換したいんですが どうしたらいいのかさっぱりわからなくて・・
527 :
名無しさん@そうだ選挙にいこう :2012/03/26(月) 11:33:06.22
主キーを消せばいいじゃない 重複許可すればいいじゃない 必要なら後でテーブルからテーブルにインポートすればいいじゃない 主キーとかインデックスを理解していないように見えるだけど ほんとにいるの?
1,A 1,B 2,A 2,C 3,A ここからまず 1 2 3 のマスタ(名簿)を作ろうと思いました。 そのまま主キーになると思ったんですが・・
数字だけだとなんだかわからないですね 1,いろは,A 1,いろは,B 2,にほへ,A 2,にほへ,C 3,とちり,A ↓ 1,いろは 2,にほへ 3,とちり
その程度ならワークシートだけで十分な気もするが 要はユニークなメンバを抜き出して履歴なりを参照したいというだけだろう
最終目的は売上管理して請求書発行です。
それなら尚更重複していたらダメだろう そして重複を解消するのはワークシートの段階でやっておくべき仕事だ
>>532 そうなんですか。
どうやったらできるのかで丸一日潰したので、
これが分かっただけでもすっきりしました。ありがとうございます。
名簿の方は、ワークシートの方で「重複レコードは無視」フィルタ使って
別のワークシートにコピペすることにします。
なんかスマートじゃないですけどしょうがないですね。。
重複しない親テーブルと重複する子テーブルに分けるという手段もあるけどね と言うか分けずに1テーブルで済ませるのならば、無理してAccessを使う必要は無いかと
主キーとか必要ないかも 重複排除はACCESSに持ってきてからでもクエリーでできる
536 :
名無しさん@そうだ選挙にいこう :2012/03/26(月) 20:12:19.93
1,2,3・・は何だろうか? A、B、C・・は何だろうか?・・
もしかしてこれで請求書が作成できるなんて、ものすごいシステムなのでは、、、
いろは、にほへ、、なんてのは無くても読めるが123とABCの二列だけでとは斬新だ
1 A B
2 A C
3 A
だとしても、123が請求先? ABCが金額?Aが百万、Bが二百万、Cは三百万だったりするのだろうか
まだ他にフィールド(項目 Excelなら列)あるんだろ? 勝手に端折るから回答来ないんだ
そうでなくてマジで二列しか無い 上記のとおりだ ってんなら、まんまインポートして集計クエリで済むはなし
まぁ、
>>526 での、「見やすく・・」ってのも意味不明だが
俺の見方がすっとこどっこいなんかな? だとしたらありったけ俺を叩いてくれ 凹んでみせるから
2列なのはワークシートをインポートする方法だけが趣旨の質問だったから。 実際は500行x20列ぐらいある。
質問です。 Access2007で フォームを通してでしか ユーザーがデータを見ることができないようにするにはどうしたらよいでしょうか? リンクテーブルなどでそういったことは可能でしょうか?
MDEにしてオートでフォーム開けばいいじゃん
デザインやモジュールなどを・・ でなくて、データを だからな Excelの達人とか居たら引っ張っちゃえるだろうし 数値なら係数を、テキストならなるたけ分類しといてその定型文を とかをフォーム辺りに 埋め込んで(実際にはAccessじゃなかったからFormじゃないけど) テーブルの内容は そのフォームを見なきゃ絶対判らない ってなブツは見たことある そのテキストボックスの名前とか、テーブルのフィールド名とかも記号化されてて 何の数値なのか、テキストなのかの判別も付きにくかった 解読用の対比表作るのにフルタイムで一週間を要すほどだったから断念したけど、ちょっと狂気を感じた つか、後々のことまで考慮すれば、データはせめて吐き出せたほうがいいかと
541 :
538 :2012/03/29(木) 00:32:53.64
>>539 やったことないのでやってみます。
>>540 大量の蓄積データを社外に持ちだされて簡単に利用させないようにしたいんですが、やっぱり難しそうですね。
レスくださった方、ありがとうごまいました。
542 :
名無しさん@そうだ選挙にいこう :2012/03/29(木) 00:46:45.46
一応ロックをかけたりも出来るけどね 自分自身も開けないという事故が無いとも限らないので あまりおすすめは出来ないが
544 :
名無しさん@そうだ選挙にいこう :2012/03/29(木) 10:57:39.41
リンク非表示MDEでFA?
リンクテーブルはなく、フォームやレポートのレコードソースに、 IN句で外部テーブルに接続するSQLを書くのは?
こういう要望はたまに出るけど、正直言って管理が面倒なわりにはメリットが少ないと言うか、 むしろメンテナンス性が悪くなって邪魔になる事の方が多い気がする
まあ、本気でデータを持ち出す奴は、 プリントアウトしたり、やデジカメで画面を撮ってでも持ち出すからねぇ
access2000から2010に変わったら浦島太郎状態だ…色々手探りですが、 オブジェクト(フォーム)のショートカットをデスクトップへって出来なくなったんですか? 何か良い方法ないですかね…ググっても出てこない;;
549 :
548 :2012/03/30(金) 15:57:05.43
自己解決すいません
解決したら、結果なり、その方策なりを書きなさい
魁傑
552 :
名無しさん@そうだ選挙にいこう :2012/03/30(金) 21:29:37.97
そんなやりかたがあったのか、逆に目から鱗だった つうかフォームのショートカットて、それは起動時の諸々が効くんかな? ・・・・・ ダメじゃん、、、 DBウィンドウ隠すと起動しない、、、、
553 :
名無しさん@そうだ選挙にいこう :2012/03/31(土) 09:27:06.15
フォームをポップアップでその他もろもろを最小化すれば、でけたような気がするけど
2010ならオーバーラップフォームで良いじゃん
>>554 オーバーラップちゅーかスタックちゅーか、タブドじゃない方ね
こちらで聞いていいかどうかわからないんですが、わかる方教えてください。 accessでSQL編集したり、クエリのフィールド名を変更したりする際によく起きる現象なんですが、 ひとつの単語の間にカーソルを置いて編集しようとすると、カーソル置いた右側がすべて選択状態になり、 入力しようとすると全部消えてしまいます。 気がつくといつのまにか治ってることが多いのですが。。 関係ないかもですが、Accessは2003でも2007でも起こります。 例えば SELECT T社員名簿.社員番号, T社員名簿.社員名 FROM T社員名簿 WHERE (((T社員名簿.[社員名]) Like '*[藤野]*')); Likeを編集しようとすると後ろの全部が選択されてしまいます。VBAのコード画面ではそうならないんですが。。。
自己解決しますた^^
>>547 なんとなく
どんなコピーガードを施しても再生しているところを別のハードで録画されたら流出させてしまう。
これの対策として再生データをディスクに含めず空きディスクとすることでこのディスクからの映像流出を100%回避することに成功した。
を思い出す
559 :
名無しさん@そうだ選挙にいこう :2012/04/11(水) 17:27:01.97
【 システム環境 】 Windows7, Access2007 【 VBAが使えるか 】 初心者ですが何とか。 【 VBAでの回答 】 可 【 検索キーワード 】 レコード、取得、行 あるクエリを元にした複数レコードを表示させるフォームが有ります。 そのうちのいくつかのレコードの表示色を変えたいのですが、 「条件に合う複数行を取得する方法」が分かりません。 DLOOKUPでは1レコードしか取得できないし。 考え方や使う関数のヒントだけでもいいので教えてください。
561 :
559 :2012/04/11(水) 19:42:13.93
>>560 条件付き書式の設定でできました。
ありがとうございました。
【 システム環境 】 WindowsXP, Access2000 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 可 テーブル@には品名と在庫量(品名の種類は約8000件) テーブルAには品名と入荷日、入荷数量が入ってます。(約90000件) テーブル@品名の在庫量に対し、 テーブルAよりその在庫がいつ入荷したものなのかを表示したいのです。 (現在の在庫量に見合うだけの入荷数量を入荷日が新しい順から拾う) 例 テーブル@ リンゴ/在庫10 テーブルA リンゴ/3月/5個 リンゴ/4月/6個 リンゴ/5月/8個 結果⇒ リンゴ10個 5月/8個 4月/2個 クエリとビルド式で出来そうな気がするのですが、手詰まりになってしまいました。 お助けください・・・
>>562 クエリじゃ無理じゃねーの、直感だけど。
仮にできたとしても応答時間がとんでもないことになって、とても実用的ではなさそう。
VBAなら降順でソートしたものをレコードソースとし、あとはループさせて条件式でごにょごょする感じだな。
564 :
名無しさん@そうだ選挙にいこう :2012/04/25(水) 09:17:30.97
c
565 :
名無しさん@そうだ選挙にいこう :2012/04/25(水) 10:01:54.57
クエリとビルド式で出来そうな気がする根拠がわからん せめて、何をどうすればできそうかを言えよ 素直にロット管理して消込が正解だと思うけど それをやらない糞環境は、たいていダメダメだったな。
クエリで入庫件数分のレコードを作ってその結果に対して集計をかければ出来なくもないな 要は集計されてる入庫テーブルを1個数/1レコードに展開したものから在庫件数分を新しい順に抜き出して 再度日付毎に集計するという事だけど これならクエリだけで出来るはずだが面倒だから具体例は書かない
▼━質問テンプレ ━━━━━━━━━━━━━━━━━ 【 システム環境 】 Windows7, Access2010 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 アクセス クエリ エクセル VBAはそこそこ読めますが、SQLはまださっぱりです。 アクセスで作った住所録を、エクセルで読みこんで(アクセスのデータ→Accessデータベースよりクエリを選択)データをを利用したいと思っています。 そのためのクエリが、アクセス上では問題なく抽出ができているのですが、エクセルでは一部の絞り込みができていません。 例 目的…福島・宮城以外の30歳以上の男性を抽出したい。 方法…アクセスで住所「not (*福島県* or *宮城県*)」、性別「男」、年令「>=30」でクエリを作る。 結果…アクセスでは問題ないが、エクセルでは全国の30歳以上の男性が表示される。 クエリを作った時は、 フィールド:住所に抽出条件 not (*福島県* or *宮城県*) とあったのですが、一度保存して再度開くと フィールド ([名簿].[住所]) Like "*福島県*" Or ([名簿].[住所]) Like "*福島県*") 抽出条件Falseとなっています。 このあたりが問題なんでしょうか。 住所であれば郵便番号で大なり小なりの絞り込みをすれば不可能ではないのですが、not(*hoge1* or *hoge2*)という「hogeを含まない」という抽出をよくするのでなんとか解決したいと思っています。 よろしくお願いします。
クエリがおかしいのなら抽出条件の書き方を改めるか あるいはフィルタで弾けばいいのではないか
windows xp access 2000 まず名簿を作ります。50人ほどの名前をうちこみます。 それから、その一人一人が、何日にシフトかを打ち込みます 例 Aは3日6日9日 Bは3日5日7日 Cは5日のみ それに加えて、各人にいくつかの補足情報をいれます。 最終的には、その当日を指定すると、その日が当たっている人物の一覧と 加えて、補足の情報が一覧できる。そんな風にしたいのですが これはアクセスで可能でしょうか?また適切なのでしょうか? 当方、エクセルワードパワポはそれなりに使えるのですが アクセスはまったく不勉強で、この処理にアクセスが適切なのかが まず判断できずにいます。 特に、日付から、メンバーをソートして一覧する・・というのができるのかが疑問です。 素人質問で申し訳ないのですが、お助けいただけないでしょうか。 お願いします。
その程度の事は造作も無いが、その前にまずテーブル設計の基礎から勉強すべきだな
>>569 に無慈悲な懲罰を下すのは容易だ、数日で焦土と化すだろう
>>569 可能です。まずは、試用版をダウンロードして、解説を読みながら試しに作ってみると良いですよ。
Excel のフィルタやデータベース関数では手に負えなくなったら、Access の出番です。
人が居るんだか居ないんだかよくわからんスレだな
>>569 桐で可能です。まずは、試用版をダウンロードして、解説を読みながら試しに作ってみると良いですよ。
Excel のフィルタやデータベース関数では手に負えなくなったら、桐 の出番です。
Excel からAccessは不自由過ぎてアホらしいです。
>>570-2 どうもありがとうございます
勉強不足と言われるのは承知のうえでしたが
可能と一言いただけただけで充分です。
とにかく休日もなく仕事で、アクセス覚える時間もことかくありさま・・
アクセス使えばできる・・はず・・と思いつつ、
初心者には結構むずかしく、質問しました。
とにかく、作成入門の本は準備してあるので、一から勉強させてもらいます。
どうもありがとうございましたっ!
一つ助言を与えるならば、名簿と履歴は別テーブルにすることだな 逆に言えば、テーブルを分けないのならばRDBを使う必然性はあまり無い
そこで桐です、そのままで自由自在
桐とかNEC版しか持ってないわ 機械が無いけど
このメンバーの説明は、Office 14 の最終リリースに表示されます。
2007/01 Access2007 2010/06 Access2010 で、次はAccess15(仮)か。 JETじゃなくなってから3つ目。あっという間だ。 Access2003、あと2年でサポ終了なんだな、はぁ〜。
立ち寄ってみた 桐って体験版あるのね それはそれでいいこときいた 遊んでみようかな …関数名がたいがい日本語…w
ジャストもデータベースなかったっけ?
五郎 いまはないらしい(Wikiより)
ACCESS2010のADP形式でSQLServer2008に接続しているのですが、 しばらくフォームを開けっ放しにしているとコネクションが切断されちゃいます。 これって2008からの仕様でしょうか・・・? (ACCESS2003+SQLServer2005では起きなかったので不思議に思っています)
>>577 桐使うくらいならファイルメーカーお勧める
桐使うくらいならファイルメーカーを勧める →ファイルメーカー使うくらいならAccessを勧める →Access使うくらいならMySQLを勧める →MySQL使うくらいならOracleを勧める
→Access使うくらいならMySQLを勧める これはない
MySQLはいかんですか?
MySQLは、Accessのバックエンドで使う
オラクルは、桐のバックエンドで使う DOS時代からオラクル専用桐があったくらい相性良く作ってある
592 :
名無しさん@そうだ選挙にいこう :2012/05/07(月) 15:38:02.52
最近はローカルDBはもっぱらsqliteだな
access使い始めてみたけど難しすぎ(+д+) 積算がしたいだけなのに
accessって楽しいね。
あくせくコード書くのがね
>>593 ボリュームのあるデータの処理や、ルーチンで頻繁に使うようなものはAccessが
向いているが、そうでないものは、Excelで十分よ。
ただし、Excelで関数を死ぬほど使っているような馬鹿なシートを作っているものを
頻繁に見かけるが、あれは話にならん。5重6重で入れ子にするなら、自分で関数
作れと言いたい。
VBA不可な互換ソフトでも走るように…かな
USBメモリで持ち歩いて別のPCで使うのってやっぱダメ?
600 :
名無しさん@そうだ選挙にいこう :2012/05/09(水) 18:52:24.68
MDBを? いいんじゃない
Access ランタイムで作業できるようにしとけば、文句いう人は少ない
>>599 ぜんぜん問題ない。
同じDBでもSQL SERVERはUSBメモリで持ち歩けないから簡易DBとしてアクセスの本領発揮だよ
やったー
AccessもランタイムなしのEXEファイル作れるようにしてくれたらいいのにね
vbだってランタイム要るんだぜ javaや.netも形を変えたランタイムみたいなもんと言えなくもない。 かもしれない
【 システム環境 】 XP、access2000 か2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 否 クエリを作成していますが、テーブル内の抽出条件で悩んでいます。 テーブル内の[F1]に「1234-20120512-1234」などの数値が入るとして、 先々月のデータのみ抽出したいのですが、どのように抽出したら宜しいでしょうか? ※10番目11番目の文字を先々月(今月であれば'03')で抽出したいです。 下記で試したところ、Dateに""が付き、 無視してクエリを実行すると「抽出条件でデータ型が一致しません。」とエラーが出ます。 【フィールド】 式1: Mid([F1],12,2) 【抽出条件】 IIf(Month(Date)=1,11,IIf(Month(Date)=2,12,Month(Date)-2))
逆じゃない? 先月、先々月をテキスト化("04"、"05"など)してデータを文字列関数で抽出すればいいのでは?
>>606 F1はそのまま
【抽出条件】
Mid([f1],6,6)=Format(DateAdd("m",-2,Date()),"yyyymm")
609 :
608 :2012/05/12(土) 04:13:21.86
あ、2000だとFormatがやばいかもしれない。
>>606 結論から言えばDateのあとに括弧がないからDateという文字列だと認識されたんじゃないの。
あと文字列関数(Mid)を使っているから暗黙の型変換で式1は文字列なっている。
対して抽出条件が数値型であるから、抽出結果は常になしになるぞ。
ま、がんばって。
書き忘れた。 大文字で書いてあるからって、大文字は使うなよ。常に小文字で書け。 エンター押して大文字にならなかったらスペルミスしているということだから バグ取りに役立つぞ。
その都度年月入れてフィルタすりゃいいじゃんかよくだらねぇ
お世話になります。Access2000で以下のようなコードを書いて、Application Echoを設定しても、画面のチラ付きが消えません。テキストボックスに.SetFocus()する度にカーソルのちら付きを抑えるには、どのようにすればよいでしょうか。 Application.Echo False For l = 0 To .Controls.Count - 1 Select Case .Controls(l).ControlType 'テキストボックス Case 109 'acTextBox .Controls(l).SetFocus End Select Next l Application.Echo True
exit for しろよ
>614 いや、フォーム上の全コントロールを舐めて、値をチェックしたいのですが、やはり無茶でしょうか(;´∀`)。
値をチェックするのになんでフォーカスを移す必要があるんだよ
617 :
名無しさん@そうだ選挙にいこう :2012/05/16(水) 20:52:14.95
hoge
618 :
613 :2012/05/17(木) 09:03:48.52
>>616 ありがとうございます。うまくいきました。
しかし、ExcelのScreenUpdatingみたいに、テキストボックス.SetFocus()時の画面描写一時停止というのは、うまく行かないですねぇ。
【 システム環境 】 WindowsXP, Access2007
【 VBAが使えるか 】 いいえ
【 VBAでの回答 】 否
【 検索キーワード 】 テーブル 設計
ttp://s1.gazo.cc/up/s1_23443.jpg 上のような商品ごとの行程表テーブルを作りたいです
商品は数万種類あります
商品によって行程が1つから多くて20ほどあるので列で分けています
行程1のテーブル、行程2のテーブルと分けた方がいいのでしょうか
620 :
名無しさん@そうだ選挙にいこう :2012/05/17(木) 17:35:12.27
いくつテーブルを作るつもりだよw 工程数が固定なら画像のこれでいいかもしれないが そうじゃないなら最低必要なのは商品、工程番号、工程 正規化以前の問題だな
621 :
名無しさん@そうだ選挙にいこう :2012/05/18(金) 00:08:07.85
VBA覚えないとできない処理ってAccessであるのでしょうか? とんなことがきっかけでコードを書くようになりましたか? あと、熟知するのに近道はありますか?
>>621 いっぱいある
出来ないことをしたいからコードを書くようになった
近道は実際に必要なDBを作ること、特に必要でないDBを練習のために作ろうとしてもモチベーションが続かない
あとは根気よく出来ないことを調べて出来るようになること
VBAがどうのっつーか、Accessを使う一番の動機は強力なフォームだろう フォームが充実したなら機能も充実させたいというのは至極当然の流れじゃないのかね クエリだけでも欲しい結果は得られるかもしれんが、恒常的に作業をするなら 自動化というのは避けては通れないだろう
楽しようと思ったら、VBAを使わないと出来ない処理が出てきてって言う感じだな。 自分の場合、蓄積データを毎月さまざまな角度から集計して、グラフなりリストなり作成して 上司に提出するんだが、グラフは、ボタンおしたらエクセルに自動出力されて、 リストは、アクセスで必要なレポートすべてが印刷される。 エクセルのグラフの今月のみ値を表示させるとかも、全部アクセス側で処理してる。 上の人と同じような意見になるけど、必要もないのにコードを書く必要はないし、 それだと、なにから勉強していいかさっぱり分からないと思う。 マクロが使えているなら、マクロをモジュールに変換して、中身を確認して それを、フォームのボタンに割り当ててみるとかいいかもね。
>>621 Access2010なら全部マクロで良いよ〜ん
626 :
名無しさん@そうだ選挙にいこう :2012/05/18(金) 09:40:34.39
× 良いよ〜ん ○ 良いです 正しい日本語を使え
627 :
名無しさん@そうだ選挙にいこう :2012/05/18(金) 11:07:17.74
Access2010なら全部マクロで良いですよ〜ん
>>621 マクロだけでできることは限られているので、すこしづつ必要な分だけVBAを覚えると
良いですよ。
何も、全部覚える必要はないし、Win32 APIや、.Net Framework APIなんてものま
で手を伸ばさなくていい(伸ばせばやれる幅は広がるけれどね)。
超基本であるプログラミングスタイルと、関数。これだけでいい。
あとは人がつくったクラスなんかをそのまんま拝借して使うとかね。
プロパティプロシージャとキーボードイベントのKeyCode/KeyAscii拾うの以外は、全部マクロでOK
最近は、プロパティプロシージャもマクロで作ってる マクロ最強だよ
脱VBAを意識しておけば、ゆくゆく予算カットで、 互換ソフトでの開発・運用に甘んじることになっても、 なんとかつぶしが利く…ような気が最近する。 VBAに、できること。VBAでなくても、できること。
OS WindowsXP ACCESS2000 基本的なことかもしれませんが、検索しても見つからなかったので相談させて下さい。 例えば テーブルA *人名,郵便番号 テーブルB *郵便番号,住所 クエリA 人名,郵便番号,住所 としたい時、テーブルAの郵便番号フィールドに テーブルBの主キーに存在しない郵便番号が入力された場合クエリAに出てきませんでした。 テーブルBに存在しない郵便番号の人は住所不明としてクエリAに載せたいのですが、どのように処置すればよいですか?
結合線をダブルクリック
634 :
名無しさん@そうだ選挙にいこう :2012/05/18(金) 18:02:56.81
小さなWebショップをやっていて在庫管理と売上管理のためにAccessを使おうと思っています。 Windows7 64 Access2010なのですが、最初からデータベース作る時間と気力が無い為 ノースウィンドウを初期化して使おうと考えているのですが テーブルでデータを消そうとするとリレーションの関係で消せませんでした。 上手い事サンプルデータベースを初期化する方法ありませんか?教えて偉い人 <(_ _)> VBAは使えません。2003までのAccessで簡単なマクロを少し使える程度のスキルです。 宜しくお願いします。
下げ忘れました。すいません・・
>>631 予算カットされたからAccess使ってんじゃん
>>634 です。
エラーメッセージたどって削除し初期化が出来ました。
思っていたより簡単でした。お騒がせしました。<(_ _)>
>>634 です。
追伸です。マクロに『すべてのデータを削除』がありました;
ボタン一つですべて削除できました。
<(_ _)>
クエリって何の為にあるの?
641 :
名無しさん@そうだ選挙にいこう :2012/05/18(金) 20:16:31.86
選択クエリって、VLOOKUPとどう違うの?
データベースに問い合わせる手段がクエリだろう 選択クエリというのはDBに問う質問の中の一つに過ぎん
VLOOKUPってどっちかっていうと、リレーションじゃないの?
>>640 EXCELと違って、データベースは超大量にデータがあるので全部を対象に処理してたら時間が掛かる
大量データの一部を取り出して、それを対象に処理します
その一部を足り出すのがクエリ
>>636 予算カット後にAccess使えるとかまじうらやま
>>645 あ、やっぱりそういう流れなんですよね。最近のICTは(汗)。
ACCESS2010 テーブルのを開くときに、 コンボボックスを設定した時の「入力チェックプロパティをいいえにできません」というエラー。 問題個所を直してテーブルを開くとエラーは出なくなりましたが、 このテーブルを元にしたクエリを開くときに同じエラーがでます。 元のテーブルを直したのに、なぜクエリでエラーがでるのでしょうか? クエリを作り直してもエラーが出ます。
やっぱりAccessって、VB6に似てますよねぇ。グリッドコントロールとか抜けてるコントロールはありますが。
しかし、今のリッチクライアントの時代、Accessでアプリなんか作られたら、反感買われないかな?
テスト
Access2000です。 既に何百レコードもあるテーブルを単票形式のフォームで表示して編集する、ということを日常的に行っているのですが、目当てのページを開くのに手間がかかってしまいます。 フォーム上にボタンかコンボボックスを配置して、VBAで目当てのレコードに飛ぶように処理しようかと思っているのですが、他にもっと簡単に付属の機能で実現することは出来ますか? クエリの抽出条件で毎回条件を入力して1レコードずつ表示しなおす、というのではなく、フォームは開きっぱなしで操作したいです。
>>652 Accessだと何百レコードしかないという表現のほうが妥当だと思うが。
ExcelでVlookup使っても実用に耐えるレベルじゃないの。
>手間がかかってしまいます
これは「手間取っている」の間違いか? それとも抽出に時間がかかっているという意味か?
>>652 標準メニューバーにレコードの検索ってあるっしょ
クエリにてテーブルの最終日を取得して表示する演算・関数はありませんか。 例えば注文1つごとに追加されていくテーブルに日付フィールドがあって、クエリでAさんの最終注文日を表示したいです。
Dmax
>>652 今試してみたけど、コンボボックスをウィザードで作成し
コンボボックスで選択した値に対応するレコードをフォームで検索する、で作成。
後は最初からフォーカスを当てておくとか、マウスを持たないでいいように、
ファンクションキーに当てておくとか、いろいろやるとかなり楽になると思います。
>>644 クエリーで、名前でグループ化して、日付を最大にすればいいんじゃない?
クエリで何もしなければテーブルをレコードソースにしてフォームを作ってもいいのですか?
なんでお前らは回答されてる質問に更に回答するのか
テーブルとクエリの違いなんて、ソースを物理的に示すか論理的に示すかの違いでしかない
662 :
名無しさん@そうだ選挙にいこう :2012/05/22(火) 20:23:42.61
事務机とかだろ
664 :
名無しさん@そうだ選挙にいこう :2012/05/23(水) 12:16:23.28
はいすべったぁー
は いす べったぁー プッ
666 :
名無しさん@そうだ選挙にいこう :2012/05/23(水) 20:04:10.41
自分の所属しているメンバーの情報だけ情報がみれるように、つくりたいんだけど どう作ればいい?
パスワード入れて検索画面に行かせてクエリ掛けさせればいいんちゃう?
668 :
名無しさん@そうだ選挙にいこう :2012/05/23(水) 20:09:12.33
>>667 パスワードによってクエリを変えるってこと?
あとテーブル、クエリ、レポートをさわれないよーにするにはどうすればいい?
>>666 テーブルとフォームを分けて、フォーム部だけを部署に渡せばいいんじゃないの。DB部とフロントエンド部を分けるということね。
編集等については、使ったことないけどセキュリティーでアクセスレベルを変えられるんじゃないのか。
670 :
名無しさん@そうだ選挙にいこう :2012/05/23(水) 20:23:02.68
>>669 ほとんどないと思うが、それで同時アクセスって耐えられます?
作り方に拠るよ。 連結は同時使用に弱い感じだね。同じレコードに書き込みなんかしたら、最悪DBが飛ぶ。 排他処理に気を使わなくてはいけない感じか。 非連結も同様だけど、連結よりはましだった。 ま、アプローチの仕方はいろいろあるべさ。データ更新ボタンを作って 必要分のデータだけをローカルに落とすとかしてもいいわけだし。
>>670 2002の頃ですが、実テーブルを徹底して分けるとmdbはトバない、というアドバイスを頂いて、
ネットにテーブルだけのバックエンドmdb置いて、利用者20人強にはruntimeでリンクテーブル、クエリ、フォーム、レポート、モジュールだけのフロントエンドmdbを使ってもらう運用を3年ほどやっていました。
バックエンドは一度も不具合ありませんでした。
ローカルの作業用テーブルも別mdbにしてました。
表フォームから詳細を表示した単票フォームを開く時、
http://www.wanichan.com/pc/access/faq/07.htm ここにあるやり方のように
Private Sub F_詳細表示_Click()
On Error GoTo Err_F_詳細表示_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "e_詳細"
stLinkCriteria = "[ID]=" & "'" & Me![ID] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_F_詳細表示_Click:
Exit Sub
Err_F_詳細表示_Click:
MsgBox Err.Description
Resume Exit_F_詳細表示_Click
End Sub
とやると、開かれた詳細は条件抽出されたものなので
他のレコードの詳細情報を見るにはまた元のフォームのボタンを押しにいかないといけません。
条件抽出ではなく、単票フォームを開く時特定のページで開くというのは出来ませんか?
普通に開いてから移動させればいいんじゃないの
675 :
名無しさん@そうだ選挙にいこう :2012/05/24(木) 13:24:14.13
>>674 一覧表示してる表フォームからボタンで詳細表示してる単票フォームを開くんですが、
それを開いた後で別のページの詳細もパラパラと見たい時があるので。
ひとつ思いついたのは
>>657 に書かれている、コンボボックスで選択して単票の目当てのレコードのページに飛ぶ機能を使って
詳細フォームを「コンボボックスが一覧で選んだIDを選択した状態」でオープンできればと思いました。
VBAでフォームを開く時に元フォームで選択した値を変数に入れて、
開かれたフォームに持ち込むことが出来るなら可能ではと思いましたが…どうでしょうか。
だからそういう事を言ってるんだが 要は単票を開いてキーで検索して移動するという手順をそのままコードにすればいいだけだし
678 :
名無しさん@そうだ選挙にいこう :2012/05/24(木) 15:49:31.42
>>672 ありがとうございます。
経験談は非常にありがたいです!
679 :
名無しさん@そうだ選挙にいこう :2012/05/24(木) 15:55:07.40
>>672 あっすいません
ランタイムというのは印刷も正規品と同様にできるのでしょうか?例えばレポートの印刷とか
>>679 Access2007 Runtimeから無償になったので、誰でもMDBやACCDBを実行
できますよ。
ただし、Excelのビューアと違って、印刷はもとよりデータの編集もできる。プログラム
の構築ができないだけ。
>>674 ,677
すみません、やっと理解できました、同じことを言ってましたね。
実際調べてやってみたら出来ました。
Option Compare Database ステートメントに Public strID As String
でコマンドボタンで詳細フォームを開いた時にstrIDに入れたMe![ID]をForms!F_一覧.strIDで参照して飛べました。
ですが詳細フォームはメンテナンスなどで単独で開くことも必要なんですが、
このままだと一覧フォームが開いていないと一覧フォームが見つからないとエラーが出てしまいます。
これはどうしたら回避できますか。
682 :
名無しさん@そうだ選挙にいこう :2012/05/24(木) 17:29:36.70
>>681 適当にエラー処理して復帰すれば
何もしないんだから処理と言ってもトラップするだけだけど
テーブル1 通し番号 人名 郵便番号 テーブル2 郵便番号 住所 選択クエリ 通し番号 人名 郵便番号 住所 となっていて、選択クエリで表示されている住所を編集できてしまうんですが、これは正常ですか? テーブルの中身も、編集したセル以外の同じ郵便番号の住所も変わっていないんですが…。
>>682 そう。
ただ、2007と2010とではどちらが良いのか?は、作ったDBがどちらなのか?
による。基本互換があるといっても、2007用と2010用とでは違いがあるので
そこは注意。
いままで無償じゃなかったので難儀していたのが、これによってAccessは、
配布しやすいプログラムになったよ。
686 :
名無しさん@そうだ選挙にいこう :2012/05/25(金) 12:56:13.86
主にマクロとキラキラshadeプロパティ
stringとvariantってどう違うんですか?
>>688 そんなのACCESSの質問じゃないぞ。
一般論として、variantは、「適当に何か」的なモノ。 (BSTRでなく)VARIANTを受ける関数があるなら、その場所には、型は何でも適当に渡してくれって意味になる その実態は、なんでもつっこめる箱(カプセル)であって、 渡されたものを、中身の種類によってどう処理するかは、相手に任せることになる 渡せても、こんなもん食えるか!ってエラーになる場合だって当然ある
691 :
名無しさん@そうだ選挙にいこう :2012/05/26(土) 18:40:43.87
>>685 テーブルって本当に一つずつmdbを作るんですか?
692 :
名無しさん@そうだ選挙にいこう :2012/05/26(土) 19:21:38.14
Access2000のMDEを2007とか2010のランタイムで動かした時の互換性はどの程度のもんでしょうかね? 試してみれば早いんだろうけど、元のシステムが大規模なのと、個人的な趣味で組んでた関係で 設計を見直してコンパイルを通すまでにかなりの時間を要します(主にデータ型を宣言する作業で)。 元はMDBでWin2000上のAccess2000で動いていて、実行環境としてはWin7、ランタイム2010あたりを 想定してるのですが(ちなみにテスト環境はVistaのランタイム2007)、2000のMDEを後継バージョンのランタイムで 動かしたという経験談や注意点があったら聞かせて欲しいです。
どんな症状だったか忘れたけどうちで試したときは全然ダメだった。 2000のmdbを2003、2007、2010のランタイムでそれぞれ試したんだけど それぞれでエラーが出てダメだったような記憶がある。 vbaのコード(起動時に実行するものとか)やdaoかadoかとかで違うのかもね。
回答ありがとうございます。 やはりコードを一つ一つチェックして問題点を潰してゆくしか無さそうですね。 本来ならばランタイムとバージョンを統一するのが良いのでしょうけど、開発ソフトのバージョンを 上げる気にはならないし(一応WinXpとAccessXpの環境もあるけど使わなかったので)、 だからと言って今さら2000のランタイムを入れさせるのも抵抗あるので、エンドユーザーの Officeに合わせたバージョンのランタイムで動いてくれれば一番良いと思った次第です。 作業を進めて新たな相談や報告すべき発見が有ったらまた書き込みたいと思います。
695 :
名無しさん@そうだ選挙にいこう :2012/05/27(日) 15:11:09.93
adoの勉強したいのですが、皆様はどうやって学ばれたのでしょうか? こちらでバックエンドと繋いだほうがdaoよりアップサイズしやすいですよね?
>>695 ADOはAccess以外に接続する場合に威力を発揮するんじゃなかったっけかな。
アップサイジングが本格的なDBを使うことをさしているのならその通りだと思うよ。
勉強方法はMSに騙されたとしかw
697 :
名無しさん@そうだ選挙にいこう :2012/05/28(月) 23:38:04.29
ひとつのフォームに入れられるサブフォームの数っていくつかな?ヘルプで調べたけど分からなかった。
実用上の限界はあるだろうがコントロールが置ける限りはサブフォームだって置けるんじゃないのか
699 :
名無しさん@そうだ選挙にいこう :2012/05/29(火) 21:59:10.50
やってみた 1,000 ヶまでなら おk それ以上はエラー
700 :
名無しさん@そうだ選挙にいこう :2012/05/30(水) 15:04:17.62
>>699 千個も入れるのどのくらい時間かかった?
1秒も掛らん
スクリプトでやったから1分掛からなかったよ
1000個で一度フォームを上書き保存すれば、更に1000個
, -- ── -- 、 _ /  ̄`ヽ、 スクリプトを作成? / \ たったの1分で? / | _,. -‐-、 \ ば、化け物かぁ { ∧ ,/´ ヽ \ < / ヽ、 ,/ ヽ ヽ ヽ /  ̄ J ) l 〈 l / ̄ < | l l , r 、__'、ヽ、 /⌒ヾ l __ l ', ', ' '、_ ・_7 r'´゙く_’,ノ j | / ヽ / { ,'  ̄ノ { | ∨) | / i`ー-'´/ l 、 ノ } /,/ト、 ,>、 l (_, -‐‐'ヽ、 ー=´ レ'‐< __,ノ\ l´l> } l (__,.. --─' ー=、 ノ,-'"´ \ _/ _,.-'´ヽl (-─ '"´ ̄`ヽ、 ,>'´ _,.-‐'"´//´ ヽ ヽ ,-‐-、_ ) ,.-、'"´ // ヽ、 l´┴‐‐'-----'´ { ヽ ‐/ < ,r‐‐〈 ⌒ ー- ,/´}ヽ ヽ `ヽ、\ / ', ヽ、 / / ヽ ヽ \ \ / ヽ `ー / / ヽ ヽ
707 :
名無しさん@そうだ選挙にいこう :2012/05/30(水) 21:17:40.22
ふむふむスクリプトってなに? Vbaでコード短いコードかくってこと?
まぁループしてコントロール置くだけだしな
だから、途中で上書き保存のコード噛ませるんだ
710 :
699 :2012/05/31(木) 19:16:12.70
すまぬ 目的が判らんかったから単純にサブフォーム貼り付けてコピペペペペ・・・ 10ヶを10回 それをコピペペペ・・・11回目にエラーになったっつーだけ 確かに一分と掛かってない むしろエラーメッセージ100ヶ消すほうが難儀だった 因みにAc2kだし 上のバージョン試そうと思って忘れたし サブフォームのサイズは0.02cm×0.02cm 上書きしたらもっと行けたのか? なんつったってAccessだしな ダメだろ
コンボボックスのプロパティ[入力チェック]をいいえにして、 このコンボボックスにドロップダウンに無い文字列が入力されているかって VBAで判別つくのかな。プロパティか何かで分かる?
>>711 テーブルかクエリがソースなら見に行って、eofなら存在しないと判る。
accessの根本的なところを理解するための導入書でおすすめの本ってないでしょうか? accessを一から勉強しようとFOM出版の「よくわかるmicrosoft access2010 基礎」を 購入して一通りやってみたのですが、 書かれている作業は順を追ってできるもののいまいち全体像がわかりません そこでネットでaccessの勉強について調べてみると、 作業を学ぶのとは別に、 データベースについての理解が伴わないとaccessの習得は行き詰まると書いてありました。 そのための本を検索してみたのですがどれが良いのかわかりません もしおすすめの本があったら教えてもらえないでしょうか
フィールド名で()を入れるのってやっぱ良くないかな?
「やっぱり」と書くぐらいなら、使わないよな。
フィールド名で()を入れるのって良くないかな?
フィールド名は、最初に数字を入れるのがいいよ
フィールド名で英語使うのは良くないかな?
>>719 なんとも言えないね。
普通は英数が推奨されるが、予約語とか禁則事項を知らないのなら
なにをフィールド名にしても危険性は同じ。
テーブルやフォームの名前変えたら VBAで記入した名前も変えてくれる機能ってないの?
検索、置換
VBAのコードまで勝手に変えたいならマクロで十分だろ
むしろクエリとかで勝手にテーブルの名前変えられてて 「チッ」ってことが良くあるんだが。 もう設定で変わらないようにしてる。
Me!とMe.って何が違うの?
>>725 Me!はレイトバインドだからクエリに変数含んでたら使えない、つーか実行時に結果が変わっちゃう
Me.はコンパイル時に確定する
727 :
名無しさん@そうだ選挙にいこう :2012/06/10(日) 02:07:49.21
728 :
名無しさん@そうだ選挙にいこう :2012/06/12(火) 18:43:08.75
729 :
728 :2012/06/12(火) 19:22:13.79
つか、対象ページをhtmlファイルで保存して、 それを、外部データ→インポート→その他→htmlドキュメント、でとりこめました。 お騒がせしましたw
730 :
名無しさん@そうだ選挙にいこう :2012/06/18(月) 17:35:15.69
Windows XP Access 2003 フォームに対してクエリが設定されており、そのクエリでソート順が指定されている ため、フォーム上でユーザーがカラムを右クリックしてもコンテキストメニュー の「昇順で並べ替え」が選択できない状態です。 この状態で、ユーザーにソート順を変更させることはできますか? あるいは、VBAでソート順を変更するようなことはできますでしょうか?
少なくとも2000で作ったフォームでは選択出来るはずだが2003ではそうなのか? 何にせよどういう設計で組まれているかがわからないと何とも言えない
単にフォームのプロパティでソートが禁止されてるとかその程度の問題な気がする
右クリックメニューが変えてあるだけかと
>>730 クエリを書き換えてrefresh、という手も有ります。
735 :
730 :2012/06/19(火) 13:16:59.62
フォームのプロパティは探してみましたが、どの項目でしょうか? もともとこのファイルを作ったのは別の人なので、完全に把握していないんですが… 右クリックメニューは普通に出るんですが、昇順(降順)で並べ替えがdisabledになってるんですよ。
>>735 演算フィールドって言うことはないよな。
中区5丁目 3番 1号 〜 3番 3号 田 中区5丁目 3番 4号 〜 4番 5号 田 中区5丁目 4番 6号 〜 4番 9号 田 中区5丁目 5番 1号 〜 5番 2号 畑 中区5丁目 5番 3号 〜 7番 4号 畑 中区5丁目 7番 5号 〜 7番 9号 田
これをクエリを利用して 中区5丁目 3番 1号 〜 4番 9号 田 中区5丁目 5番 1号 〜 7番 4号 畑 中区5丁目 7番 5号 〜 7番 9号 田 といった抽出は可能でしょうか。わかりづらい質問で申し訳ございません。
テーブル構造はどうなってんのよ? 中区5丁目、 3番、 1号、 3番、 3号、 田 みたいになってんの? 要は連続データの最初と最後を纏めたいということでいいのか。 クエリではどうだか知らんが、構造によっては可能だと思う。
740 :
名無しさん@そうだ選挙にいこう :2012/06/19(火) 21:55:52.99
やろうと思えば出来なくはないがあえて不可能と答えておく
>>739 おっしゃるとおりです。
>>740 やはりむずかしそうですね。
中区5丁目 3番 1号 〜 7番 9号 田
中区5丁目 5番 1号 〜 7番 4号 畑
という結果にはしたくないんです・・。
SELECT文でレポートのブレイクポイントを使うようなことってできるのかな ( ゚∀゚) (ヽ□=□)) > >
743 :
名無しさん@そうだ選挙にいこう :2012/06/28(木) 21:44:29.87
アクセス2007です。 ・テーブルにデータを入力する時に、半角数字を入れたいのに、ひらがな入力になってしまいます。 どこをいじればいいでしょうか? ・フィールドに上から300個ほど2005という同じ数字で埋めたいです。 excelだと1つ入力してマウスで角をつまんでビーと簡単にできたのですが、accessではどうやるのでしょうか?
クエリでやれ
745 :
743 :2012/06/28(木) 22:18:12.02
つか、漢字とか入ってるテキスト型のデータを無理矢理、数値型のデータ形式に変更するのは不可能のなのでしょうか?
変更なんかしないで数値型のフィールドを新たに作った方が手っ取り早いだろ
漢字を数値型に? 六→6とか?
748 :
743 :2012/06/28(木) 23:31:54.45
>>747 ではなくて、テキスト型のフィールドに半角0を入力したいのですが、いちいちひらがな入力になるわけです。
そこでお願いですが、
現在、テキスト型のフィールドに300個ぐらいテキスト型のデータが入力されているのですが、
そのデータの頭に半角0を挿入するクリエをどなたか作って下さい。お願いします!
あと、空のフィールドに、上から300個ほど2005という同じ数字で埋めるクリエを作って下さい。お願いします!
>>748 作れも何も更新クエリが解らないなら、Access使う意味があるのか。
Excelでいえば、Sumぐらい基本的なことだと思うが。
「レコードの更新」に "0" & フィールド名、抽出条件に Is Nullと
「レコードの更新」に 2005、抽出条件に Is Not Null の二本立てで行かんか。
750 :
749 :2012/06/28(木) 23:54:15.54
抽出条件が逆だわ。
751 :
743 :2012/06/29(金) 00:15:56.23
>>749 昔、ほんのちょこっとだけexcel2003を使ってて、
今回access2007を初めて使ったので、ユーザーインターフェイスからしてわからない。
で、今現在テーブルは開いてます。
そのテーブルに新しいフィールド「西暦」を追加しました。
で、↓をするにはどこをクリックすればいいの?
「レコードの更新」に 2005、抽出条件に Is Null
752 :
743 :2012/06/29(金) 00:19:15.36
つか、クリエウイザードとクリエデザインを発見しました。 どっちをクリックすればいい?
753 :
749 :2012/06/29(金) 00:29:05.05
>>752 ウィザードのほうが簡単だよ。自分で作れるのなら、どちらを使っても同じ結果が得られる。
とりあえずはテーブルと同じでいいと思うぞ。つまり、全フィールドをメンバーにしていい。
しばらく付き合ってやるから、ゆっくりやるといいよ。
あと、俺は2002なんでインターフェースのことは聞くなw
754 :
743 :2012/06/29(金) 00:49:56.19
>>753 どうもです。
では、
・クリエデザインをクリック
・テーブルの表示が出る
・〜〜テーブルをダブルクリック→フィールド名一覧が出る→西暦フィールドをクリック
・下の欄のフィールドのところに西暦と入る→更新ボタンをクリック→レコードの更新欄が現れる
・で、
・レコードの更新に2006と書く
・抽出条件には、Is Nullと書く
で、実行ボタンを押しても何も変わりません。
で、無効モードのため、アクションまたはイベントはブロックされました。
と表示されます。
どうすればいい?
755 :
743 :2012/06/29(金) 00:54:01.24
つか、変だと思うのは、 西暦フィールドに2006を書き込むはいいけど、 どこのレコードからどこのレコードまで、を指定していないのが変だと思うんだよねw
>>754 現状では「選択クエリ」といって、テーブルと同じものを表示するだけになっている。ここで計算とかができる。
デザインモードでフィールド名とかがあると以外で右クリックすると「クエリの種類」とかが出てこない?
出てきたらそこから「更新」というのを選んでくれ。
>>755 詳しい条件を書いてくれ。漠然と上から300件ぐらいじゃ判断できないよ。
あと気をつけて欲しいのは、Accseeに限らずDBっていうのは基本的に順番はないから。
必要なら自分でソートできるフィールドを用意する必要がある。
757 :
743 :2012/06/29(金) 01:21:40.79
>>756 >デザインモードでフィールド名とかがあると以外で右クリックすると「クエリの種類」とかが出てこない?
来ます。
>出てきたらそこから「更新」というのを選んでくれ。
やりました。
で、↓が出て来て、
フィールド:
テーブル:〜〜〜
レコードの更新:
抽出条件:
または:
↓を書いて、実行をクリックすると、「無効モードのため、アクションまたはイベントはブロックされました」が出るのです。
フィールド:西暦
テーブル:〜〜〜
レコードの更新:2006
抽出条件:Is Null
または:
>詳しい条件を書いてくれ。
現在レコードが375個あります。
で、西暦フィールドはすべて空欄です。その空欄すべてを、2006で埋めたいのです。
760 :
743 :2012/06/29(金) 01:47:57.26
じゃ、新規で10個のレコードの西暦フィールドを2006で埋めるクリエはどうやりますか? 空のデータベース→西暦フィールドを作る→データ型は数値型、表示形式は数値とする。 ・クリエデザインをクリック ・テーブルの表示が出る ・〜〜テーブルをダブルクリック→フィールド名一覧が出る→西暦フィールドをクリック ・下の欄のフィールドのところに西暦と入る→更新ボタンをクリック→レコードの更新欄が現れる ・で、 ・レコードの更新に2006と書く ・抽出条件には、Is Nullと書く で、実行ボタンを押しても何も変わらないんだけど。
横槍だがデータベースで扱うデータは基本的には自分で入力するんだよ クエリというのは既に入力されてるデータを更新するのに用いてるだけで 1件もデータが入ってないなら用いても意味が無い(厳密には色々方策はあるが)
ちょっと待て。既存のデータを弄るんじゃなくて、空になったのか? 空ならテーブルの規定値に2006を設定すれば、レコードが増えるごとに自動的に2006がはいるようになるけど、 クエリで10レコードを作成するとかできないぞ。そういうのはVBAを使うことになると思う。 すまん、睡魔が襲ってきたんでこれ以上は付き合えないかもしれない。
763 :
743 :2012/06/29(金) 02:39:30.56
じゃ、 フルーツフィールドに書かれた、いちご、を、りんご、に変換するクリエを教えてくれ。
>>763 フルーツフィールドのレコードの更新に "りんご" 、抽出条件に "いちご" 。
765 :
743 :2012/06/29(金) 03:04:51.63
>>764 どうもです。これも、
>「無効モードのため、アクションまたはイベントはブロックされました」
これが出たw
766 :
743 :2012/06/29(金) 03:05:40.26
問題はこの辺ですね、どうも。
767 :
743 :2012/06/29(金) 04:00:28.82
つか、 >フルーツフィールドのレコードの更新に "りんご" 、抽出条件に "いちご" 。 これは出来ました、ありがとうございました。 でも、 ・レコードの更新に2006と書く ・抽出条件には、Is Nullと書く これが、まだ、 「無効モードのため、アクションまたはイベントはブロックされました」 なんですよね。 これのデータが汚いデータだからかも知れません。 とりあえず、ありがとうございました。
ググればすぐ出てくるだろ…
769 :
743 :2012/06/29(金) 04:30:50.39
あと、教えて欲しいのですが、 いくつかのフィールドにおいて重複が複数あるテーブルが1つだけある。 この重複の無駄をはぶくため、この1つテーブルを自動で2つのテーブルに別ける。 これは可能でしょうか?
可能か不可能かで言えば可能だろうな ただ作業の手順は自分で決めなきゃならない 手順を決めるというのは、どのテーブルのどういうデータをどんな条件で 振り分けるのかを明確にするという事だ この手順がはっきりしないと作業者は何をやればいいのかわからないし、 コンピュータはバカだからもっとわからない まずは文書でいいからバカでもわかる手順を書いてみる事だな
771 :
743 :2012/06/29(金) 05:32:52.31
772 :
743 :2012/06/29(金) 05:58:20.65
つーか、csvデータで読み込み、一括で、2005→2006に置換しようとしたら、
「このISAMでは、リンクテーブル内のデータを更新することはできません」
と出ました。
で、
http://okwave.jp/qa/q735806.html を見ると、
accessでは、csvデータを読み込んで処理は出来ない、って感じなんですか?
xp sp3 access 2003 vba少々可です。 データ型がオートナンバーをキー(顧客ID)にしたテーブルに、フォームから1レコードずつデータを登録する処理を作成しているのですが なかなかうまくいきません。 データを入力し、保存ボタンが押されたタイミングで、そのテーブルにレコードが登録されるようにしています。 実際レコードの登録は上手くいくのですが、 登録されたレコードの前に空のレコードが勝手に登録されてしまい、結果、実データは顧客IDが飛び飛びに (1,3,5,7.....という感じです)なってしまいます。 データ入力の際、細かい項目チェックをしているので、その辺りが絡んだコーディングミスではないかと思うのですが、 ここ二日お手上げ状態です。 ご教授受けたいのは以下の2点です。 ・ソース上は、xxx.Updateが実行されるのは保存ボタンを押されたタイミングのみなのですが(xxx.Updateが二回実行されることはありません)、 コーディングミス等が原因で、これ以外のタイミングで勝手にレコードが登録される場合があるのでしょうか? ・デバッガでテーブルに空のレコードが登録されたタイミングを特定できるでしょうか? お詳しい何方か、よろしくお願いいたします。
>>772 それ読み込まれてない、参照してるだけ
てかそこのアンサーに書いてあるのがまんま答えじゃん
>>773 何とも言えんけどボタン以外でフォームの変更が確定するケースは無いのかね?
何も対策をしてない場合、初期化したレコードが確定するだけで空白レコードが
保存されるわけだけど
775 :
名無しさん@そうだ選挙にいこう :2012/06/29(金) 09:31:53.50
なんだ?無駄に伸びてると思ったらただの善人かよ
>>773 俺と根本的に作り方が違うんで(RunMacroやRunSqlがてんこ盛り、しかも巨大)修正するぐらいなら作り直しちゃうんだけど、
上司が作ったものにそうなるものがあったな。
その人がやっていたことは、連結フォームでUpdateをかましていた。で、たしか書き込まないときの処理をしていなかったから
空行が登録されていたような記憶がある。参考になるかは知らんが。
777 :
名無しさん@そうだ選挙にいこう :2012/06/29(金) 13:30:00.78
実際更新してないけど更新ロックがかかってる状況ってこと?
778 :
743 :2012/06/29(金) 14:11:36.11
>>774 レスありがとうございます。
> それ読み込まれてない、参照してるだけ
では、csvファイルを読み込むにはどうすればいいのでしょうか?
・access2007を立ち上げる→空のデータベースを新規作成する→オフィスボタン→開く→ファイルの種類をテキストファイルにする→csvファイルを読み込む
と、作業したのですが、この作業ではcsvファイルを参照しているだけなのですか?
開くじゃダメだろ インポートか何かでテーブルに追加しないと
780 :
743 :2012/06/29(金) 14:59:24.31
>>779 おー、出来たw
つまり、
・access2007を立ち上げる→空のデータベースを新規作成する→外部データ→インポート→テキストファイル
で、出来ました、皆さんも参考にして下さいw
しかし、そうすると、
>>778 のやり方は何なんだろ? 紛らわしいですね。
781 :
743 :2012/06/29(金) 15:22:44.98
あと、access2007でも、excel2007でも、むかつくのが、 データとして、 7/13-/15 なら、そのままだけど、 7/13 だと、勝手に 7月13日 に変えるわけです。 これは何とかならないでしょうか?
書式設定しろよ エクセルも同様
783 :
743 :2012/06/29(金) 16:07:16.01
>>782 書式設定は一応やるんですが、ま、この件にありがとうございます。
どうもでした。
784 :
名無しさん@そうだ選挙にいこう :2012/06/29(金) 17:23:50.85
なーんでか、教えてもらう方が偉そうに見えるだろう
785 :
743 :2012/06/29(金) 18:29:25.42
つか、なぜか、手元にあるaccess2000のハウツー本に、 "SN" &商品ID を実行すると、 指定した個々の「商品ID」の値の先頭に「SN」という値を連結します。 と書いてあります。 でも、これを、access2007で実行すると、 商品IDフィールドのデータが、全部「SN商品ID」に変わるだけなんです。 この作業をaccess2007で実現するのは無理なのでしょうか?
786 :
743 :2012/06/29(金) 18:38:01.99
つか、ヘルプを見たら↓で出来ます。失礼しました。 "PN" & [部品番号] 指定した各部品番号の先頭に "PN" を追加します。
787 :
743 :2012/06/29(金) 19:06:57.49
つか、access2007で、 /の左どなりが1桁の半角数字だったら、その頭に半角の0を付ける /の右どなりが1桁の半角数字だったら、その頭に半角の0を付ける って出来ます?
出来ますよ。
789 :
743 :2012/06/29(金) 19:15:25.66
>>789 なんかやたらと面倒くさいことをやっているな。日付型にして書式で一発だと思うが、
まぁ、世の中ままならないこともあるからそれはおいておくとして
Cdateで日付に変換してFormatで体裁を整えるとか。
たぶんレコードの更新のところに
Format(Cdate(フィールド名), "mm/dd")
で行けるんじゃないの。勝手に日付と認識したけど、それでいいんだよな?
/の前に\がいるんだったけか。
おまえらいい加減にしろ チャット・ルームへでも行け それか15,000払ってiStudyでも受けろボケナス 一晩掛かってこんな進度だぞ こいつが習熟するまで何スレ必要となるんだ しかも礼儀知らずなのをのさばらせる遠因を醸成しつつあるだろ 怒れよ 怒るときに怒れないおとこは
週に一件とかしか投稿が無いよりは見てて面白いだろ
クリエに突っ込みたい衝動を抑えるのに必死で読んだ
794 :
743 :2012/06/29(金) 23:57:51.63
>>790 つか、オリジナルデータが、かなりあいまいなデータで、そのフィールドに入っているのは月日だけではないのです。
なので、
>>787 のルールで文字列操作をやりたいのですが無理でしょうか?
普通は取り込む前にデータを修正しておく
796 :
743 :2012/06/30(土) 00:32:38.00
>>795 そこをひとつ何とかお願いしますw
だって、クエリのほかにも、マクロだ、VBAだとあるんでしょ?
>>794 多少複雑な処理になりそうなので、自分で関数を作る。
プログラムの基本といっていい文字列操作だから、それほど難しくはない。
多分実行部は十行程度だろう。
798 :
743 :2012/06/30(土) 00:43:13.58
>>798 だから0を頭に付ける処理をする関数を作って、クエリで使うの。
>>790 の式だって、やりたければ関数化していい。
Excelにだって、ユーザー関数っていうのがあるだろ。
800 :
名無しさん@そうだ選挙にいこう :2012/06/30(土) 01:06:35.66
>>799 関数作るってfunctionでコード書くこと?
そういうこと。 引数でフィールド値を渡して、戻り値で処理済の文字列を返せばいいでしょ。
更新フィールドに その文字列が日付っぽいなら日付の型に変換してmm/dd書式にする、 という式を書く。
IIF,ISDATE,CDATE,FORMATで。
804 :
名無しさん@そうだ選挙にいこう :2012/06/30(土) 13:34:13.59
ここは
>>743 養成スレになりました。
accessでメシが食えるようになるまで見守りましょう。
Accessというか正規化というか…… 一つの主キーが、外部キーを2つ持っている場合の正規化とリレーションシップの貼り方について質問です。 履歴書をAccessで管理しようとした場合、「職歴」「資格」が複数出てきます。 最終的には履歴書の内容をレポートで表示したいのですが、社員番号をキーに職歴テーブル、資格テーブルにリレーションシップを貼って、全て表示しようとすると上手くいきませんでした。 どのようにすれば上手くいくのか教えて頂けませんでしょうか。 テーブル構成は次のように考えました。 −−−社員テーブル−−− −−−職歴テーブル−−− −−−資格テーブル−−− 社員番号(主キー) No(主キー:オートナンバー) No(主キー:オートナンバー) 名前 社員番号 社員番号 住所 会社名 資格名 入社年月日 資格取得日 退社年月日 −−−作成クエリ−−− 社員番号 :社員テーブル 名前 :社員テーブル 会社名 :職歴テーブル 入社年月日:職歴テーブル 退社年月日:職歴テーブル 資格名 :資格テーブル 資格取得日:資格テーブル よろしくお願いします。
あっすみません。 Win7 Access2010です。
リレーションシップなんか使わずともその都度クエリで連結すればいいんじゃないの。 それは余談として、社員1名に対して職歴や資格は複数存在するんだから、 複数レコードが生じるのは当然かと。 テーブル構造自体は問題無いと思う。問題があるとしたらクエリの方かな。 社員テーブルに対して1対多でリンクすれば意図した構造は得られると思うが、 それを1枚のレポートに反映しようと思ったらサブレポートを組むなりの工夫が必要だな。
サブレポート……勉強してきます。 ありがとうございました! テーブル構造合ってて良かった……
済みませんが、SQLについて相談させてください。 Windows 7、ACCESS 2007を使用しています。 (ちなみに、手元にある機器ではありませんので、 確認等が必要であればお時間をいただくことになります。 使うテーブルは次のようなものです。 テーブルA レコードID(Uniqueな数値を持つ主キーで、整数型) 個別ID(個体を識別するためのIDで、テキスト型) 個体名(同一個体でも改名等が考えられるため) 年月(データを収集したときの年月で、テキスト型) …数値データ群 テーブルA2(作業の便宜上、テーブルAを個体名でグループ化して作成したテーブル) 個別ID(個体を識別するためのIDで、テキスト型) 個体名(テーブルAに置ける最終のデータを取得) …数値データ群(集合関数Sumを使用) テーブルB レコードID(Uniqueな数値を持つ主キーで、整数型) 個別ID(個体を識別するためのIDで、テキスト型) 個体名(同一個体でも改名等が考えられるため) 年月(データを収集したときの年月で、テキスト型) 属性フラグA(3値以上のフラグで見やすさのため、テキスト型) …他のデータのフィールド ※テーブルAとテーブルBの個体名は、固体IDと年月が同一であっても別の名前が入っていることがあり得ます。 ※レコード数はいずれも約10万レコードです。 (長くなってしまったため、次のレスに続けます。)
810 :
809 :2012/07/03(火) 01:57:11.85
やりたいことは、テーブルBのデータのうち各個別IDにおいて最後の月のデータを テーブルA2に結合したいと考えています。 質問は次の2つ。 1.テーブルA2に結合するSQLをどう書けば良いでしょうか。 2.テーブルAを元に、1と同様の処理をするSQLはどのように書けば良いでしょうか。 2の趣旨は、1では、テーブルAとテーブルA2の2つが存在してしまって 整理しにくくなるため、中間生成物であるテーブルA2を消したいのです。 (元データであるテーブルAを消す方が手っ取り早いが、 テーブルAは別の用途で必要なため残す必要がある。) よろしくお願いいたします。
811 :
743 :2012/07/03(火) 05:02:31.68
winXP、ACCESS 2007です。とりあえず、
http://www.accessclub.jp/module/01.html をやってみようと思い、
VBEを立ち上げ、イミディエイトに、? Msgbox("こんにちは")、を書きました。
そして、これを実行するにはどうすればいいのでしょうか?
VBEにの上部に実行タブがあるのですが、それはマクロの実行タブです。
イミディエイトに書いた、? Msgbox("こんにちは")、を実行するにはどうすればいいのでしょうか?
812 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 13:19:34.53
select * from B,A2 where 個体名.ID = 個体名.ID select * from B,(select 個体名 ,sum(数値データ群) from A group by 個体名 ) A2 where 個体名.ID = 個体名.ID ってこと?グループ化しているA2に個別IDが入ってるのが意味わからないけど
813 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 13:25:06.26
>>811 時間をかけて書いてる間に解決するようなことだと思うけど
もしかして、レス待ちで正座して待ってるとか?
もしそうなら、「試す」ってことをもう少ししたほうがいいと思うよ
もうできていて、質問したことがあまりにも低レベルすぎて
顔を真っ赤にしているところで、解決したなんて書けないのかな?
とりあえずわかってると思うけど、エンター押してみようね
? が余分じゃねえの
815 :
743 :2012/07/03(火) 15:00:43.52
816 :
743 :2012/07/03(火) 15:02:17.65
しかし、そうすると、イミディエイトで改行は出来ない、ってこと?w
斬新な発想だな
行の最後に _ (アンダーバー)入力すれば改行できなかったっけ
要約するとダイレクトコマンド-ライン上で改行出来ない的な事を言っている
820 :
809 :2012/07/04(水) 01:15:01.87
>>812 >グループ化しているA2に個別IDが入ってるのが意味わからないけど
テーブルAの具体的なデータは次のようになっています。
(説明のためCSV形式で記述します)
1, 10001, 個体A, 201204, …
2, 10002, 個体B, 201204, …
3, 10003, 個体C, 201204, …
…
76, 10001, 個体A, 201205, …
77, 10002, 個体B, 201205, …
78, 10004, 個体D, 201205, … ←個体ID10003の2012年5月のデータはない
…
155, 10001, 個体A, 201206, …
156, 10002, 個体b, 201206, … ←10002の個体名が違う
…
これを、個体ID 10001、10002、10003、…でグループ化して合計します。
なので、個体IDは必須項目です。
同様に、テーブルBもこのような形式でデータが登録されています。
最終目的の質問2は、テーブルAの個別IDごとの合計と、
テーブルBの各IDごとの最終月データを1つのSQLで結合するというものです。
要は住人が入れ替わったから部屋番号を使い回そう的な事だろ 新聞屋とか牛乳屋の契約管理みたいだな
822 :
名無しさん@そうだ選挙にいこう :2012/07/04(水) 19:30:03.27
>>820 なんで、SQLにこだわんの?
select *
from B,(select 個別ID,max(年月),sum(数値データ群) from A group by 個別ID) A2
where B.個別ID = A2.個別ID(+)
823 :
名無しさん@そうだ選挙にいこう :2012/07/04(水) 20:26:49.67
824 :
名無しさん@そうだ選挙にいこう :2012/07/04(水) 21:06:11.65
手入力
今さら言ってもしょうがないけどデータの構造がまずいんじゃね 件数から察するに別のソフトで運用してたデータをそのまま展開して吸い上げた感じか
826 :
809 :2012/07/04(水) 23:43:22.74
>>822 問題のもう一つは、テーブルBは最終月のデータを使うことです。
念のため、したいことを書くと次のようになります。(テーブルAは
>>820 )
ちなみに、最終月は2012年7月とします。
テーブルB
1, 10001, 個体A, 201204, …
2, 10002, 個体B, 201204, …
3, 10003, 個体C, 201204, …
…
72 10001, 個体A, 201205, … ←2012年4月のデータの数がテーブルAと合わない
73, 10002, 個体B, 201205, …
74, 10003, 個体C, 201205, … ←テーブルAにない、個体ID 10003の2012年5月のデータがある
75, 10004, 個体d, 201205, … ←テーブルAと表記が違う
…
151, 10001, 個体A, 201206, …
152, 10002, 個体B, 201206, … ←テーブルAと表記が違う
…
226, 10002, 個体B, 201207, … ←個体ID10001は2012年6月が最終月
227, 10003, 個体C, 201207, … (←今お願いしている1と2の次に質問したいことだが、実は除外したいデータ(除外用のフラグ有り))
結合結果
10001, 個体A, テーブルAのSum、テーブルBの2012年6月のデータ
10002, 個体B, テーブルAのSum、テーブルBの2012年7月のデータ
10003, 個体C, テーブルAのSum、テーブルBの2012年7月のデータ
…
827 :
809 :2012/07/04(水) 23:50:11.17
>>825 >件数から察するに別のソフトで運用してたデータをそのまま展開して吸い上げた感じか
ご明察。
テーブルAとテーブルBのソースは全く別のところから持ってきているもので、
たまたま統一された個別IDが両方に振られているという代物。
これを統合して集計するのが目的です。
なんか単純な事を面倒な手順でやろうとしている気がしてならないのだが 単に過去のデータ(A)と当月のデータ(B)を一つのテーブルにまとめて 当月分として集計すればいいだけじゃないの 先月分が欲しければ6月とそれ以前の合算で出せばいいだけだし
829 :
809 :2012/07/05(木) 03:21:48.78
>>828 確かに、今はそうやっているのですが、
メンテをしているうちに何が何だか分からないくらいテーブルやクエリが出来てしまい、
整理をする必要が生じてきました。
実際には、テーブルAを作成するためのインポートや加工のクエリ、
実は複数あるテーブルBを作成するためのインポートや加工のクエリ、
これらを合計したりサブクエリにすれば足りるかも知れないクエリが計二、三十程度あります。
そういうわけで、余計な中間生成物としてのテーブルやクエリをできる限り消したいのです。
あと、欲しいのはテーブルAの合計とテーブルBの最終時点のデータです。
例えば、テーブルAは商品ごと月ごとの売り上げ、テーブルBはその商品の担当
(変更時のみレコードを登録)を入れていて、
一定期間の売り上げを集計してテーブルAは合計でないと意味がなく、
テーブルBは現在の担当を表示しないと意味がない
(過去の担当や登録がない月で空欄になって貰っては困る)、
というイメージを持っていただけるとわかりやすいかと。
830 :
名無しさん@そうだ選挙にいこう :2012/07/05(木) 17:21:52.42
できてるならいいじゃない 動いてるならいいじゃない これ、うちのばか上司の口癖な
なんだか悲惨だなぁ。 いっそのこと要望を満たすテーブルを設計し直して そこにデータを落とし込んだ方が手っ取り早いんじゃないの。 少なくとも俺ならそうするし、データ追加時の整合性もフォームできっちりとチェックする。
832 :
809 :2012/07/05(木) 23:26:00.19
>>831 それはそう思うのですけどね。
でも、上流の出力形式は変えられないのでどうにも出来ません。
それに、実は元の出力形式は上長の価値観の問題でもっとひどいのですから。
変えられないとあえて書くという事は毎月その処理をやるつもりか それはもうコードで手順化した方がいいんじゃないの
834 :
809 :2012/07/06(金) 01:22:37.92
>>833 それは考えていますが、いろいろな中間処理のテーブル・クエリを少しは整理しないと
変更するときに厳しそうな気がします。
まあ、頻度はどれくらいになるかよく分からない(毎月やる必要はなさそう。)
835 :
730 :2012/07/06(金) 14:16:32.70
ようやく解決しました。 フィールドのプロパティの「使用可能」と「タブストップ」が両方「はい」になっていなければ いけないようでした。
そんな理由かよ…
質問です。会社で受付業務をやってます。 この会社からこういう内容の問い合わせの時は○○部署 みたいなパターンをイントラのweb上で登録して、あとは 会社名 内容 をプルダウンで選んだだけで連絡先の部署名が出てくるようにしたいんだけど 難しいかな?一応、会社の皆が情報を追加できて、少しずつノウハウを記録させて使いたいんだけど Access使えば出来ますか?
メモ帳でOK
Accessでもできると思います。 フリーソフトやシェアウェア、Webアプリで有りそうな気もしますが。
840 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 00:46:04.60
accessってiPhoneで見られないの? せっかくだから持ち歩きたいんだけど。
[暗号化]と[閉じる時に最適化]の両方を設定してると、ある日突然終了時にパスワード聞いてきて何入れても正しく終了できなくなる 一度そうなると修復不可能 VISTA Win7 Access2007 Access2010 、かなり前から継続的に発生してるんだが 同様の報告を聞かないんだけど [暗号化]と[閉じる時に最適化]の両方を設定してる人って少ないの?
そんな信頼性が疑わしい機能は自動では使わないな 暗号化なんてメリットよりもトラブルの方が多いイメージしか無いし
ありがトン、やっぱそんなものか
あくまでもイメージだから実際にトラブルが多いかどうかはわからない パフォーマンスが落ちそうな気はするけど あと手動での最適化はもちろんやる 当然バックアップを取った上でだが
手動ってのは面倒だなぁ
846 :
名無しさん@そうだ選挙にいこう :2012/07/09(月) 13:12:54.68
アクセス2007です。 最初はデータの変更が出来たのに、なんだかんだいじっていると、 "このレコードセットは更新できません" になってしまいました。 いったいどんなことをやると、 "このレコードセットは更新できません" が出るようになるのでしょうか?
847 :
名無しさん@そうだ選挙にいこう :2012/07/09(月) 13:24:53.61
・access2007を立ち上げる→空のデータベースを新規作成する→オフィスボタン→開く→ファイルの種類をテキストファイルにする→csvファイルを読み込む では、csvファイルを参照するだけ。 ・access2007を立ち上げる→空のデータベースを新規作成する→外部データ→インポート→テキストファイル で、csvファイルのインポートが可能になる。
848 :
名無しさん@そうだ選挙にいこう :2012/07/09(月) 13:26:08.39
↑失礼、ごばく。
ACCESSの元からある検索機能って使えないね^^
850 :
名無しさん@そうだ選挙にいこう :2012/07/17(火) 08:27:27.99
office2013カスタマープレビューにAccessが無い件について
851 :
名無しさん@そうだ選挙にいこう :2012/07/17(火) 08:32:56.29
いや、あった 誰か新機能をリストアップして
つぎのofficeは2013なんだ orz 今年中に出ると思ってた
Property InputParameters As String Property MaxRecButton As Boolean Property UniqueTable As String
855 :
841 :2012/07/19(木) 13:22:33.41
2013で治ってた
2007の新機能の添付ファイルフィールドって使いやすいの? たくさんのファイルをmdb内にバインドしてバックアップが楽になる?
2007持ってないけどそれってOLEフィールドにオブジェクト埋め込むのとどう違うんだ
sharepoint関係の新機能の他には 古い形式のサポートを打ち切ったことくらいしか変更点が無さそうなんかな
【 システム環境 】 Windows7, Access2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 可(VBAしかなければ) 【 検索キーワード 】 検索ワードが思いつきません テーブルA(成績テーブル)からテーブルB(ID別履歴)を作りたいのですが、よい方法が思いつきません。 何か良い方法ありませんか?
===テーブルA=== (ID)(受講日) (氏名)(点数) 01 10/1 阿部 70 02 10/4 阿部 80 03 10/5 伊藤 60 04 11/1 阿部 75 05 11/8 伊藤 83 06 11/6 阿部 100
===テーブルB=== (ID)(前回ID)(前々回)(3回前)(4回前)(5回前) 01 02 01 03 04 02 01 05 03 06 04 02 01
まずその表を作らなくてもよい方法が無いかどうかを考えた方がいい
863 :
名無しさん@そうだ選挙にいこう :2012/08/01(水) 09:35:01.44
== 生徒マスタ == (生徒ID)(氏名)(生年月日)(入会日) == テストマスタ == (テストID)(テスト名)(実施日) == テストデータ == (テストID)(生徒ID)(点数)(受講日) テストが一斉に行われるならマスタの実施日 実施日がバラバラならデータ受講日を使えばいい
クロス集計で済んでしまうような気もするけど
>>859 Pivotテーブルで一撃な処理に思えます
ん、違うか テーブルBが理解できない。Pivotは違うかも 適当すまん。
867 :
859 :2012/08/01(水) 23:00:00.19
>862>863>864>865
レスありがとうございます。
テーブルBの利用例として、
前回と前々回の合計点で80点以上だった受講IDの抽出、や過去5回のテスト中1回でも65点以下だった受講IDの抽出(上記テーブルなら05)、
受講IDごとの過去5回の平均点、受講IDごとの10月以前は省いた過去5回の合計
などがあります。
これは
>>863 のテーブルからでは困難に思います。
本来このような作業はACCESS向きではないでしょうが、
EXCELだとデータ量が多くなると重くなりがちで基本的には65536までになってしまいます。
試しにテーブルBを作ってみると(EXCELからのインポート)とても快適なので
受講IDを追加するたびにテーブルBが自動的に更新されないかと思い質問しました。
まず定石としてIDは個人を識別する為に使うべきだし 履歴は個人のテーブルとは別に起こすべき それさえ出来てりゃ抽出条件や演算はどうにでもなる
TRANSFORM Max(T1.ID) AS F2 SELECT Q1.テーブルA.ID FROM (SELECT テーブルA.ID, T1.ID, DCount("*","テーブルA","[氏名]=""" & [テーブルA]![氏名] & """And [受講日]<=#" & [T1]![受講日] & "#") AS F1, T1.受講日 FROM テーブルA INNER JOIN テーブルA AS T1 ON テーブルA.氏名 = T1.氏名 WHERE (((テーブルA.受講日)>=[T1]![受講日])) ) AS Q1 GROUP BY Q1.テーブルA.ID ORDER BY Q1.テーブルA.ID, Q1.F1 PIVOT Q1.F1; 列の順番違うけど。 受講日がダブってるとおかしくなるだろうな・・・ IDが受講日順ならIDでDCountするか・・・
870 :
名無しさん@そうだ選挙にいこう :2012/08/08(水) 18:05:43.46
てs
2013インストールした人います? あんま変わらないですかね
872 :
名無しさん@そうだ選挙にいこう :2012/08/11(土) 10:07:47.89
2013 Preview の自動アプデート来たけど、何か変わった? リビジョンは上がってるんだろうけど
873 :
名無しさん@そうだ選挙にいこう :2012/08/13(月) 23:03:33.70
とあるフィールドに空白(Null)が100レコードあるとして、 その空白を50レコード分だけ抽出するって事はできないでしょうか? 指定した件数分の空白を抽出したいのです。
select top 50 * from table1 where field1 is Null order by ID;
875 :
名無しさん@そうだ選挙にいこう :2012/08/16(木) 16:22:55.24
Win7+Access2010 にてリストビューコントロール(sp6)を使っているんですが、 アップデートされてから?、リストビューコントロールの クリックやダブルクリックが効かなくなった。 こんな症状の方、いませんか?
876 :
名無しさん@そうだ選挙にいこう :2012/08/16(木) 16:54:21.74
つづきです。 ちなみにXp+Access2000の環境では動作します。 ソースは以下の簡単なものなのですが、クリックが効いてくれません。 Private Sub Form_Open(Cancel As Integer) Me![リストビュー].View = lvwReport Me![リストビュー].LabelEdit = 1 Me![リストビュー].GridLines = True Me![リストビュー].HideSelection = False Me![リストビュー].FullRowSelect = True Me![リストビュー].AllowColumnReorder = False Me![リストビュー].MultiSelect = False Me![リストビュー].ColumnHeaders.Clear Me![リストビュー].ColumnHeaders.Add , , "aaa" Me![リストビュー].ColumnHeaders.Add , , "bbb" Me![リストビュー].ColumnHeaders.Add , , "ccc" Me![リストビュー].ListItems.Clear Set itm = Me![リストビュー].ListItems.Add(, , "001") itm.SubItems(1) = "002" itm.SubItems(2) = "003" End Sub Private Sub リストビュー_Click() MsgBox "クリックされました。" End Sub
877 :
名無しさん@そうだ選挙にいこう :2012/08/16(木) 17:08:31.61
すみません、自己解決しました。 OCXの再登録にて解決でした。
>>877 ちゃんとAccess Clubにも解決したってCloseしとけよ
別に放置で宜し
以下のトピックを参照して下さいとか書きに来るぐらいなら最初から出てくるなと思う そのくせ肝心のリンクが切れてたりするし
Windows8RTでAccess動くの? デザインモードは無くても良いんだけど
テーブルのフィールドが多いと動作重くなるんですか? クエリで計算させたフィールド(テーブルには保存しない)とどっちが重いですか?
>>883 RBS原理主義者の原則では、フォームで計算 >> クエリで計算 >>>>> 計算値をテーブルに持つ
表形式フォームでグリグリスクロールして使うなら、計算値をテーブルに持った方がスマート
計算をテーブルに保存した方が早いという事ですか?。 でも計算はテーブルに保存しない方が良いとかよく聞きますがどうでしょうか?
「早い」と「良い」は関係ないだろ
>>877 お盆明けて2日目の今日、WindowsUpdateがきっかけと思われるMSCOMCTL.OCX不具合が数台のPCで発生しました。
regsrv /u MSCOMCTL.OCX
regsrv MSCOMCTL.OCX
で復旧。再登録....がヒントになって解決できました。ありがとう。
regsrv -> regsrv32
クエリで計算して値が出せるものはテーブルに保存しないのがDBの基本とか言うよね それってテーブルに保存すると無駄に容量食うから クエリでその都度計算した方が節約になるって事?
それ、昔の話し 正規化って安直な方法があって、それやると簡単に大体はまともに動くDBが作れる その場合は、テーブルに計算値保存しない形になるから、そうなる 実際は、実務・現場の状況に合わせて色々考えて作るので、計算値をもった方が良い事もある
数量と単価があれば金額はいらない・・・ そういう風に考えていた時期が俺にもありました。 この場合実際に集計などで必要なのは数量と金額なので、単価を消すのが正しい。 ここテストに出るよ!
年齢も計算が複雑だから、ちゃんとテーブルに保存しろよ
893 :
名無しさん@そうだ選挙にいこう :2012/08/21(火) 13:22:27.32
時代はクラウド 正規化なんざあ時代遅れよ
>>893 アタマの悪い人キタ━━━━━━(゚∀゚)━━━━━━ !!!
895 :
名無しさん@そうだ選挙にいこう :2012/08/21(火) 19:54:27.63
はじめまして。WindowsXpSP3+Access2003です。よろしくお願いいたします。 (「改行が多すぎます」と出てしまうので2回に分けます。) 「A」「B」の2つのフォームがあり、 ・フォームAの中にサブフォームZ ・フォームBの中にサブフォームZ という構成になっています。 で、最初は【A】の形で書いていて、エラーも出ず普通に動いていたんですが、 よく考えたらサブフォームZに対する処理は別プロシージャに書いて呼び出せば1つで済むな、 と思い【B】の形にしたところ、「!サブフォームZ」のところが黄色くなって 「コンパイルエラー 参照が不正または不完全です。」となってしまいます。 サブフォームを別プロシージャで参照(?)するには、どのように書いたらいいのでしょうか? よろしくお願いいたします。 (つづく)
896 :
895 :2012/08/21(火) 19:59:07.18
(つづき) 【A】 Sub Shori() With Forms!フォームA 〜フォームAに対する処理〜 With !フォームZ 〜サブフォームZに対する処理〜 End With End With With Forms!フォームB 〜フォームBに対する処理〜 With !フォームZ 〜サブフォームZに対する処理〜 End With End With End Sub
897 :
895 :2012/08/21(火) 20:00:33.05
すいません3回になってしまいました。 【B】 Sub Shori() With Forms!フォームA 〜フォームAに対する処理〜 Call FormZ_no_Shori End With With Forms!フォームB 〜フォームBに対する処理〜 Call FormZ_no_Shori End With End Sub Sub FormZ_no_Shori() With !サブフォームZ ←ここが黄色くなってエラーになってしまう。 〜サブフォームZに対する処理〜 End With End Sub 以上です。よろしくお願いいたします。
FormZ_no_ShoriはFunctionにしてObject型の引数、例えばobjFormでFormの参照を引き渡して with objForm!FormZ とかでどうかな。検証してなくて無責任発言すまん。
899 :
895 :2012/08/22(水) 00:50:55.98
>>898 ありがとうございます。
そんな方法があるんですね。早速トライしてみます。
>>895-897 は職場だったんですが、
会社の回線からは2chに書き込めないんで携帯で書き込んで、
今は家に帰ってきたんですが、こちらは今度Accessが無い・・・。
というわけでトライは明日・・・
何日も悩んでたんで、早くやりたいです。
どうもありがとうございました。
こんにちは。 【 システム環境 】 WindowsXP, Access2003 【 VBAが使えるか 】 ちょこっと 【 VBAでの回答 】 可 【 検索キーワード 】 アクセス クエリ フィールド 式1: すみません、他人が作ったクエリのフィールド名で関数のみのがあるんですが 試しに全く同じようにクエリ作成しても私のフィールド名には「式1:」が数式の前に勝手にくっつきます。 SQLをコピーしてきて貼ってもまた式1がくっつくのですが 関数のみのフィールド名ってなんなんでしょう?データシートビューのフィールド名は「Expr××××」です。 ちなみに関数のみフィールドクエリのSQL見てもAS文句はついてません。 ちなみにフィールド名として入ってた関数→ Format(Date(),"yyyymmdd")には 抽出条件があって→ Between [BEGIN_DATE] And [END_DATE]と入ってます。 BEGIN_DATEとEND_DATEは列の名前でそれぞれyyyymmddの形式で日付のデータがはいってます。 この関数のみ名前フィールドは非表示にしてあって、BEGINとEND列に違う書式とか 空欄とかあった場合にエラーにならないようにつけたのかなって思ってたのですが 関数のみのフィールドに式1がつくのは普通でも、なぜ関数のみフィールド名が存在するのでしょうか。。。 ぐぐってもどうしてもわかりません どなたかわかるかたいらっしゃいましたら教えてください。
901 :
名無しさん@そうだ選挙にいこう :2012/08/22(水) 19:02:30.41
SQLのかっこを外せば消えない?
>>900 sql文貼るわけにはいかないですか文面だけではわからなかった
差し障り無ければ
ビルダを通さず直接AS抜きのSQLを埋めれば同じ現象は再現出来るけどな ビルダを覗いた時点で修正されるけど
904 :
名無しさん@そうだ選挙にいこう :2012/08/23(木) 09:03:12.98
SELECT [hoge].hoge FROM [hoge] WHERE Mid("X",1,1)="X";
906 :
名無しさん@そうだ選挙にいこう :2012/08/29(水) 14:51:01.84
WindowsRT向けOffice2013、VBAやマクロに未対応 2012年8月7日 22:36 THE VERGEは7日(現地時間)、マイクロソフトの計画に詳しい情報源からの情報として、ARMベース端末で動作する「Windows RT」向けの「Office 2013」では、 VBAやマクロ、サードパーティー製のアドインは未対応であると報じています。また、その他 “少数” の機能も削除されているとのこと。
VBA使えないOffice??? カス過ぎだろ
VBA抜きのOfficeなんて、それこそ、Kingsoftので十分みたいなことになるな いまんとこAccess相当品はなかった気がするけど。
USysRibbonsテーブルに
RibbonName: Hide
RibbonName:
<customUI xmlns="
http://schemas.microsoft.com/office/2006/01/customui ">
<ribbon startFromScratch="true" />
</customUI>
で作ってフォームの「リボン名」をHideにすれば普通リボンは消えるのですが
でもデータシートフォームの時だけはリボン名をHideにしても消えません
データシートフォームでもUSysRibbonsのリボン制御を出すにはどうすればいいのでしょうか
データシートをサブフォームにしたフォームとかで凄く煩わしいのです
contextualTabs の子要素 tabSet で個別に非表示とするか、 カレントデータベースプロパティ [すべのメニューを表示する] で 制御しないとだめだよ。
911 :
名無しさん@そうだ選挙にいこう :2012/09/04(火) 12:48:30.43
2013のWebAppsはoffice365のEプランとSharePointOnlineしか出来んの? 無料で使えるのはないですか?
yahoo知恵袋で宿題か卒論かをしつこく質問してる奴が居るな
クエリで計算したフィールドを参照することってできないんでしょうか? 例えば クエリのフィールド1…Hogeの合計: Sum([Hoge]) クエリのフィールド2…Fuga率: [Fuga]/Sum([Hoge]) Sum([Hoge])を2箇所に書くことになって、手間だし、保守の面でも良くないと思います。 Sum([Hoge])は1箇所に書いて、参照する形にはでないんでしょうか?
Accessは2007から変数が使えるようになりました
やっとマトモになった、今までなんだったんだよwww、修行かよ
>>913 変数を使ってください、そういうの自由自在
915 :
913 :2012/09/09(日) 19:36:55.70
>>914 レスthx
持ってるの2003だorz
>>913 選択クエリでは可能だが、集計クエリはムリ。
DSumに書き換えろ。
918 :
913 :2012/09/09(日) 21:38:50.67
マクロで変数って話なのか。 vbaと勘違いして混乱した。
AccessからExcelで作った帳票用テンプレートを操作するロジックをVBAで書いています。 帳票xlsxを保存するフォルダとファイル名は、Accessのテーブルデータにより固定で決めており 該当のファイルが既に存在している場合は、テンプレートのSheetをxlsのシートに追加し 該当のファイルが未作成の場合は、テンプレートファイルをコピーしてxlsxにするという流れです。 ロジックは書いてみて、一応どちらの場合もファイルの作成はうまく行っている様に見えるのですが PCをシャットダウンしようとすると、「○○.xlsxは保存されておりません。保存しますか」という 名前をつけて保存のダイアログメッセージが出てきます。 おそらくVBA上でのExcelの終了処理にぬけがあるのだと思いますが 開いたExcelを閉じるのはどのような構文を書けばよいのかを教えてください。 (今、手元に原本がないのでコピペができません。すいません)
.saveして.quitして=nothingしてる?
>>921 レスありがとうございます。
一応、Save後にQuitして、=Nothingはしておりました。
どうも、Windows終了時に名前をつけて保存が出ていた原因は
デバッグ中にロジック最後のQuitする前にエラーで止まってしまったものが溜まり続けて模様です。
お騒がせして申し訳ございませんでした。
そのデバッグ途中でエラーが出ていた原因がわからなくて困っています。
エラーの原因は「実行時エラー’1004’’cells’メソッドは失敗しました。’global’オブジェクト」というやつで
推測するに、Rangeで指定するセルの絶対参照が不完全で場所が特定できないという類のものだとは思うのですが
指定の仕方がよくわかりません。
ロジックは下記のとおりです。(フォーム上のボタンを押すことで稼動。)
Private Sub cmd検討記録票Excel出力_Click()
Dim myXLS As Excel.Application
Dim myWKB As Excel.Workbook
Dim myWKS As Excel.Worksheet
Dim myXLS2 As Excel.Application
Dim myWKB2 As Excel.Workbook
Dim myWKS2 As Excel.Worksheet
Dim iFilePath As String,oFilePath As String,iFileName As String,oFileName As String
Dim i As String,Dim f As String
oFilePath = Main_FilePath & Me![txt係] & "管理" & "\検討記録票\"
oFileName = Me![txtID] & " " & Me![txt名] & "(" & Format(Me![txt年月日], "ggge年mm月dd日") & "分)記録票.xlsx"
i = MsgBox("ID:" & Me![txtID] & "保存先:" & oFilePath & "ファイル名:" & oFileName & _
"の検討記録票(Excelファイル)を作成しますか?", vbOKCancel, "検討記録票.xlsxの作成")
※続きます
923 :
922 :2012/09/11(火) 20:59:07.23
>>922 の続き
If i = 1 Then
'xlsx存在チェック
If Dir(oFilePath & oFileName) <> "" Then
f = 1
MsgBox "既に" & oFilePath & " の" & oFileName & " は作成済なので、新しいSheetを増設します。"
Else
f = 0
MsgBox "まだ" & oFilePath & " の" & oFileName & " は未作成なので、ファイルを作成します。"
End If
'-----------------------
'---Excelへの処理開始---
'-----------------------
Set myXLS = CreateObject("excel.application") 'Excelオブジェクトの作成
'原紙のExcelファイル(記録票原紙)を開く ※原紙はxltx形式(Excelテンプレート)
iFilePath = Main_FilePath & DataBu_FilePath
iFileName = "検討記録票_原紙.xltx"
Set myWKB = myXLS.Workbooks.Open(iFilePath & iFileName)
Set myWKS = myWKB.Worksheets("検討記録票")
myWKS.Activate
'Excel原紙へのデータ転送処理
myWKS.Range("T01").Value = Busyo_Name
Select Case Me![txt検討領域] '検討記録票の様式の中で、原紙の余分な○図形を削除する処理
Case "A領域"
Call xlsDrawingObjectsDelete("V22:Y22")
Case "B領域"
Call xlsDrawingObjectsDelete("Q22:T22")
Case Else
MsgBox "検討領域がおかしいです。作成された検討記録票は破棄してください。"
End Select
924 :
922 :2012/09/11(火) 21:00:02.28
>>923 の続き
'--------------
'xlsx書出処理
'--------------
'処置検討記録票が既に存在する場合は、そのxlsxファイルの新規Sheetとして出力する。
' 〃 が未作成の場合は、xlsxファイルを作成する。
Select Case f
Case 0 '別名のファイルに保存する
myWKB.SaveAs FileName:=oFilePath & oFileName, FileFormat:=xlOpenXMLWorkbook '2008形式で保存
Case 1 '既存の記録票にSheetをコピーする
Set myXLS2 = CreateObject("excel.application")
Set myWKB2 = myXLS.Workbooks.Open(oFilePath & oFileName)
myWKB.Worksheets("検討記録票").Copy Before:=myWKB2.Worksheets(1)
myWKB2.Close savechanges:=True
Set myWKB2 = myXLS.Workbooks.Open(oFilePath & oFileName)
myWKB2.Close savechanges:=False
Set myWKS2 = Nothing
Set myWKB2 = Nothing
myXLS2.Quit
Case Else
MsgBox "不正な処理です。ご連絡願います。", vbOKOnly, "xlsxファイル書出処理が不正です"
End Select
Set myWKS = Nothing 'Excelファイルを閉じる
myWKB.Close savechanges:=False
Set myWKB = myXLS.Workbooks.Open(iFilePath & iFileName) 'Excelオブジェクトの破棄
myWKB.Close
Set myWKB = Nothing
myXLS.Quit
End If
End Sub
925 :
922 :2012/09/11(火) 21:01:26.74
※924の続き 922のロジックのサブルーチン '----------------------------- 'Excel図形消去サブルーチン '----------------------------- Sub xlsDrawingObjectsDelete(Rg As String) Dim myRng As Range Dim sp As Variant On Error Resume Next Set myRng = Range(Rg) For Each sp In ActiveSheet.Shapes If Not Intersect(ActiveSheet.Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then sp.Delete End If Next Set myRng = Nothing End Sub
926 :
922 :2012/09/11(火) 21:07:48.54
925のサブルーチン上でExcelのテンプレートの中から不要な図形を削除するという流れなのですが これがうまく消えない”時”があるというのが当方を困らせているエラー状況です。 (処理自体はEndまで行き、Excelファイルも出来上がっているのですが、図形が消えていない、ということ) 925のサブルーチン上でアクティブなシートを表示してみたんですが アクティブなシートがなかったので、922のルーチンで自然に掴んでいたアクティブシートが サブルーチンに飛んだときに引き継がれていないのだと思います。 しかし、自分が混乱しているのは このロジックでパソコンを立ち上げた直後に処理を流すと 初回はきちんとロジックが正常に動いて図形がきちんと消えるのです。 (もう一度処理を実行すると、図形が消えない。) こうなると、初回の処理だけはAccessのソフトの力で、省略されていて不完全な参照を 補う働きがおきているような気がして・・・
サブルーチンの引数を追加してシート名引き渡して sheet("シート名").selectするか sheet("シート名").range.......みたいな参照するとどうだろうか
928 :
922 :2012/09/11(火) 23:37:48.48
>>927 レスありがとうございます。
Call xlsDrawingObjectsDelete("V22:Y22")
↓
Call xlsDrawingObjectsDelete("検討記録票","V22:Y22")
に変更して、サブルーチンに引数で渡してあげて、それで直接参照を試みる
Sub xlsDrawingObjectsDelete(Rg As String)
↓
Sub xlsDrawingObjectsDelete(Sheetname as string,Rg As String)
Set myRng = Range(Rg)
↓
Set myRng = sheet(Sheetname).Range(Rg)
に変更するということですね。
明日、職場で試して見ます。
929 :
922 :2012/09/13(木) 01:43:50.34
>>927 職場で試してみましたが、結果は変わりませんでした。
それで色々試したところ、原因は最初のロジック(
>>923 )にある
Set myWKB = myXLS.Workbooks.Open(iFilePath & iFileName)
これにあるようだということがわかりました。
ブレークポイントつけてみて見たところ、myWKBへのセットがうまくいっていないようです。
(カーソルを重ねても何も表示されない)
※但し、Excelファイルはきちんとオープンされます
直後にアクティブブックを確認するロジック
Msgbox "アクティブブックは " & ActiveWorkbook.Name & " です。"
を挿入して処理実行したところ、オープンされたExcelファイルがアクティブとの認識になり、
後続の処理も正常終了したように見えます。(最後の myWKB=nothing も有効であることは確認しました)
しかし、うまくいくのは初回の処理だけで
もう一度同じ処理をすると、今度は挿入したアクティブブックを確認するロジックでエラーがでます。
(.With変数が設定されておりません、とかいうようなメッセージ)
よくわからないのですが、多分、何かのお約束事に違反している構文エラーで
初回処理時には、アプリケーション側が勝手にいいように解釈してくれて処理を通してくれたが
2回目はダメ、みたいなオチになっているような気がします。
(元のロジックのほうに書いてある「myWKS.Range("T01").Value = Busyo_Name」などはうまく処理してくれますが
サブルーチンの方に同じことを書くと「_Globalメゾットがおかしい」とかいうエラーが出ます。同様に図形処理も上手く行きません)
参照設定を確認しましたが、「Microsoft Excel 12.0 Object Library」は入っております。
ここ3日ほど、ずっとこのエラーに悩まされております。
構文の書き方が間違っているでしょうか、是非教えてください
よろしくお願いしますm(_ _)m
随分前に2000で書いた似たような処理のvbaを捜して見てみたけど、 ↓みたいな感じになってた。長いので端折って書くね。 Dim objEXE As Object Dim objWb As Object 'Excelを利用できるように Set objEXE = New Excel.Application 'ファイルのパスを指定 Set objWb = objEXE.Workbooks.Open("開くファイル名") '処理するシート名をSheet1とすると objEXE.Worksheets("Sheet1").Select Sheet1に対する処理 objEXE.ActiveWorkbook.SaveAs FileName:="保存するファイル名" objEXE.Quit 宣言がボタンのクリックイベント内ならイベント終了で変数の値はクリアされるから NEWあたりが臭そうだけどね。 全然違ってたらごめんよ。
どなたか教えてください。 住所入力支援ウィザードで手入力した郵便番号は、 住所に変換しますが、郵便番号をインポートや、 コピペした場合、住所変換してくれないです。 これを変換させるには、どうすればいいでしょうか?
>>931 確か非公開らしいができたはず。ネット検索すれば個人サイトにサンプルがあったと思うが。
金が出せるのなら、YUBIN7(今も同じ名前かは知らないが)を使う。
あとは自分でデータを落としてきて作るかだな。
933 :
922 :2012/09/15(土) 00:06:55.57
>>930 レスありがとうございます。
試してみましたが、結果はうまくいきませんでした。
その後、サブルーチンをCallすることでSETしたオブジェクト変数がおかしくなるのかと思って、
サブルーチン化を諦めてゴリゴリッと直接記述しましたが、それでもダメだったので、もう何がなんだか・・・
アクティブシートの確認用に
myWKS.Activate
Msgbox "アクティブシートは " & ActiveSheet.Name & " です。"
と仕込んでおき、初回の処理では問題なく「アクティブシートは 検討記録表 です。」
とか出る癖に、同じ処理をもう1回行うと今度は「.With変数が設定されておりません」とか。
何で初回の処理では通るんだろう・・・
現状では、初回処理→正常終了、2回目の処理→「ActiveSheet」とか「ActiveWorkbook」とかを受け付けてくれないので
Set myRng = Range(Rg)
For Each sp In ActiveSheet.Shapes
If Not Intersect(ActiveSheet.Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then
sp.Delete
End If
を下記のように「myWKS」を付けたところ、多少は進みましたが
それでもIF文のところで「.With変数・・・」か「Intersectメゾットは失敗しました。_Global・・・」のエラーが出てしまいました。
Set myRng = myWKS.Range(Rg)
For Each sp In myWKS.Shapes
If Not Intersect(myWKS.Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then
sp.Delete
End If
もう実装は無理かと思ってしまいますが、何でも結構ですのでご指摘いただければありがたいです。
スレ汚しすいませんでしたm(_ _)m
>>932 VBAで作成するしかなさそうですね。
ありがとうございました。
業務データが膨大になりエクセルからアクセスで管理することになりそうです。 さわりだけかじった事はありますが本格的にDB構築したいので家で勉強したいと思います。 以前使用したテキスト&データファイルがアクセス2007用です。 会社では2003を使用します、そこで @アクセス2010と勉強本を購入(2007の参考データは問題なく使用できますか?) Aアクセス2007を購入してお勉強。 Bアクセス2003と勉強本を購入 どの選択がよいでしょう?ご教示願います。
まず最初に、データモデリングの勉強だな
>>935 Access始めないでExcel+SQL Server 2010 Expressと言う方向もあります。
勉強するのは触るのと同じ2003がお勧め。買ってもらえるなら2010か数ヶ月待って2013で始めた方がもっと良い。
938 :
930 :2012/09/15(土) 14:54:47.72
>>933 >>922 から順番にコピーして試してみようと思ったんだけど、宣言部から構文エラーや未宣言変数やらで
前に進まない。
例:Dim i As String,Dim f As String → Dim i, f As String、Main_FilePath → 宣言されてないか他所で宣言?
まさかとは思うけど宣言は強制してるよね。→ Option Explicit
939 :
922 :2012/09/15(土) 17:19:54.51
>>938 レスありがとうございます。
変数iとfについては、コピペしたところの直前でDimで宣言してます。
(ボタンを押したときに、まず実行可否をユーザに選択させて変数iに結果を登録し
出力先のExcelファイルのパスを取得して、既にファイルがあるかどうかを変数fに記録する。
ファイルがあればそのファイルの新しいシートとし、なければテンプレートのファイルを名前をつけて保存とする、というロジックを
コピペしたロジックの直前に書いております。)
手元にモジュールがないので、職場で確認しますが
確かOption Explicitは先頭で書いていたと思います。
不確かで申し訳ございません。
940 :
922 :2012/09/15(土) 17:29:36.28
コピペしたロジック内で変数宣言していない「Main_FilePath」 & 「DataBu_FilePath」については Publicで宣言しており、Accessファイルの起動時にテーブルに書かれているファイルのパスを 常に持っている、という形です。
>>939 の解説は
>>922 のコードのことだよね。
こちらの
>>938 での書き方が悪かった。↓のように
例:Dim i As String,Dim f As String → 構文エラー とすれば良かった。
Dim i, f As String と書けばいいって意味で書いたんだけど通じないよね。
それで
>>922-925 のコードを丸写しでiとfの宣言だけ上のように修正して、5つのコントロールには
適当な文字を入れて普通に動いてるよ。そもそも図形は書いてないからこの部分はどうだか分からないけど
何度クリックしても大丈夫だよ。
3つのpublic変数(
>>940 +Busyo_Name)には何も代入してないけどね。
win7pro64bit office2010
942 :
935 :2012/09/15(土) 21:40:35.95
2007よりも2010が安かったのでヨドバシで教則本と 買ってきました、基礎編はすいすい進みましたので この連休中に応用編まで勉強します。
>>920 の症状はエラー発生時に開かれていたExcelが閉じられないまま処理が終了するため。
エラーをトラップして、Excelが開いてたらquite するようにすればいいよ。
>>942 応用なんて使ってりゃ勝手に身につくんで、
基礎編を100ぺん読み直せ。
それぐらい基礎が大事だ。
945 :
935 :2012/09/15(土) 22:52:58.44
accessクラブまだ復帰できないのかなぁ?
947 :
名無しさん@そうだ選挙にいこう :2012/09/17(月) 16:50:44.77
復帰しなくていいよ。 あんなひねくれた連中見たこと無い。 プログラムばっかやってるとああなるんだろうね。
>>922 検証していただき、ありがとうございます!!
正常動作しているとのことですので、ロジック的には問題ないようでよかったです。
自分の環境で動かない原因が良くわかりませんが、頑張って当方の環境でも動かしたいと思います。
当方の環境はWindowsVista32bit&Office2007です
>>943 >>920 の件は仰るとおり、エラーによりExcelが開いたままになっているためですね。
(なので、現状はエラーが出たら、適当なExcelファイルを開いて。保存しないで終了を手動でやってます。)
エラートラップし掛けていないのは、書き方が良くわかっていないということが大きいので
ネットで調べて仕掛けるようにしたいと思います。
ありがとうございますm(_ _)m
949 :
922 :2012/09/18(火) 21:04:37.40
>>938 ご指摘にとおり、宣言強制のOption Explicitが全てのモジュールで抜け落ちておりました。
それによる宣言漏れも2箇所見つかりました。ありがとうございます。
しかし、残念(?)ながら問題のロジックとは関係ない場所だったので、状況に変化はありませんでした。
>>943 エラートラップを仕掛けることができました。
エラーが出た際にはそちらに飛ぶようになり、手動操作が自動になったので少し楽ができるようになりました。
ありがとうございました。
>>941 こちらの環境では、
>>933 の状態で、相も変わらず2回目では落ちるという状況が続きました。
実情は2周目のサブルーチン部分の↓で「「Intersectメゾットは失敗しました。_Global・・・」」がでるのですが、
If Not Intersect(myWKS.Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then
メインルーチン上で「Set myWks = myWKB.Worksheets("検討記録票")」した後に
myWKS.Activate
Msgbox "アクティブシートは " & ActiveSheet.Name & " です。"
をやると、ActiveSheet.Nameが「with変数が・・・」というエラーが出る以上、
2周目でのワークシートのつかみ方に何らかの問題があるようです。
(メインルーチン上でセルに文字を代入する処理までいかせると、うまく代入できるというのが何でかよくわかりませんが)
ちなみに、変数のmyXLS、myWKB、myWKSについては、クラスモジュール内のサブルーチン(xlsDlawingDelete)上でも適用範囲とすべく
プロシージャ内からモジュール先頭での宣言に変えています。
もう、このよくわからない症状は、自分のPC(Vista+Office2007)のせいじゃないか
とかオカルト的な発想になってきて現実逃避気味になってきましたがorz
こちらでエラーが出ないのは図形がないテンプレートファイルを使ってるからで、 今度は図形有で試してみるから、どの範囲にどんな図形があるのか書いてみて。
951 :
922 :2012/09/19(水) 07:45:33.49
>>950 検証していただき、ありがとうございます。
テンプレートファイルには、「A・B」というセルがあって
その”A”と”B”に最初から楕円の図形をかぶせています。
それで、データがAならBのほうの図形を消す、という処理です。
ロジックは
Select Case Me![txt検討領域]
Case "A領域"
Call xlsDrawingObjectsDelete("V22:Y22")
Case "B領域"
Call xlsDrawingObjectsDelete("Q22:T22")
Case Else
MsgBox "検討領域がおかしいです。作成された検討記録票は破棄してください。"
End Select
サブルーチンは
For Each sp In ActiveSheet.Shapes
If Not Intersect(ActiveSheet.Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then
sp.Delete
End If
Next
という感じです。
953 :
名無しさん@そうだ選挙にいこう :2012/09/19(水) 22:23:29.22
ド素人です。ルックアップウィザード機能についての質問です。 フィールドの値を選択肢から選択できるようにする作業。 ルックアップ機能を使って、性別というフィールドの値を(男、女)という選択肢から選択できるようにしたいのですが、 [表示する値をここで指定する。]→リストの列数(1)と入力Col1に、男、女と入力→ラベルは性別のままで[複数の値を許可する。]にチェックをいれ、完了としました。 すると、性別のデータ型を確認してみると、[数値型]に固定されていました。 どうしてこのような事が起きたのでしょう。最初のウィザード画面は、[ルックアップフィールドの値は別のフィールド、クエリから取得する]にチェック入れ進めていくのでしょうか。 作業段階の説明を教えてください。
954 :
名無しさん@そうだ選挙にいこう :2012/09/20(木) 00:02:44.91
Col1に、男 下の行をクリックして女、そのまた下の行をクリックしておかま、 ウィザード途中の画面上では一列三行であればおk 説明とか面倒 そのテーブルをソースにフォーム作ってみればどうなってるか確認でk(ry
955 :
名無しさん@そうだ選挙にいこう :2012/09/20(木) 19:46:31.35
アクセス2010一週間目の初心者です。IIF関数と演算式で抽出する問題があります。内容は、「届出」が「YES」の場合、「時間数」の0.1の値を表示 上記以外の場合「時間数」の0,3の値を表示 という内容です。全く検討もつきません。よろしくお願いします。
956 :
922 :2012/09/20(木) 20:58:14.68
>>952 HP見ました。
原因は正にこれでした。
しかし、色々試してみましたが、絶対参照の仕方がよくわからなず、コーディングが2週間近く進まなかったので
結局、範囲内の図形を一律削除すること方針を諦めて、
下記のような図形をひとつずつ削除することで乗り切りました。
Set myWKS = myWKB.WorkSheet("検討記録表")
myWKS.Shapes("検討楕円A").Delete
多くの方に助けていただき、誠にありがとうございましたm(_ _)m
>>1 ▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━ 以下数行ぐらいちゃんと嫁
IIF(1に即した質問形式=yes,やさしく回答,叩く・ド突く・シカトする)
な風に最初に条件(式) 真ん中に真(True)の場合 右が偽(False)の場合
>>956 ハナからExcel側に書き込まれてる図形をAccess側で処理しようとするからコトはややこしくなる
Excelの処理はExcelに任せたほうが良いのでは?
Accessから渡されたデータを元にExcelVBAで○を付ける消すしたほうが安全な気が ま、自分ならそおするってだけだが
959 :
名無しさん@そうだ選挙にいこう :2012/09/20(木) 21:29:56.05
Accessのデータを保存しようとしました。 すると、入力規則でエラー’CHECK節約の評価でエラーが発生しました。’ という画面が出てきて何もできない状態になりました。 どうすればいいのですか?
マクロ嫌い
961 :
名無しさん@そうだ選挙にいこう :2012/09/21(金) 07:03:26.74
>>957 ありがとうございます。何とかなりそうです。ルールを守れるように努力します。
962 :
922 :2012/09/21(金) 07:42:44.35
>>958 確かに仰るとおりExcel側で処理できることはExcelでやらせた方がいいと思います。
各拠点のユーザにやらせる時に、ネックとして起動時に出る「セキュリティ警告」の存在があり
Accessの1ファイル(フロントエンドAccde)を各自のDドライブに置き、そこを信頼できる場所に設定してもらうことで
2回目以降はスムーズな運用が期待できる
と考えてAccessでやらせようと考えた私大でした。
今となってはこのネックについてもExcelでも回避できる気が確かにします
963 :
名無しさん@そうだ選挙にいこう :2012/09/21(金) 18:55:36.56
【 システム環境 】 Access2010 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 スケジュールデータをJoinする際に、日付が飛び飛び歯抜けではなく ある相当な期間の全日数を基準にしたいと思います。 しかし自動生成データをJOIN相手とする方法がわかりません。 そこで A案:あらかじめその日数を流し込んだテーブル相手にJoin B案:初回にその期間の日数テーブルを定義し、日数分のループでINSERT などは思いつきました。 しかしAはただの日付インクリメントに過ぎないものをテーブルとして 保持するのは正直疑問があり、 Bはテーブルを保存せず変数上だけで取り扱えないか、また INSERTのループをVBAでなくSQL内でできないかと考えています。 その他、そもそもの設計時点で別のやり方がないかとも迷っており、 何かアドバイスをお願いします。
>ある相当な期間 次第だが、たぶんA案のがよっぽど早い 処理もだけど、これに拘ってる時間を他に割り当てられるし それでは「負けだ」とか思うんならもっとディープな回答を待
966 :
名無しさん@そうだ選挙にいこう :2012/09/21(金) 20:21:17.45
>964 レスありがとうございます。 たしかに考えるよりはやったほうが早いかもですねえ。 >ある相当な期間 についてですが、はっきり書くと、簡易ライフログを考えています。 そこで誕生日から現在日までを列挙したいのですが、たとえば80年間だと 3万日弱となり、また人により日付は異なります。 誕生日入力後の初回生成するにしても以後無意味に3万レコードをハンドリングするのもどうかなあと。 >965 興味深い記事です。後程読ませていただきます。
レオヤナギ ?@reoyanagi
RT "@tohohokanri: 江川紹子さんは上杉隆を眼の敵にして、「デマを言うな」と非難するが、
去年3月に、「メルトダウンなんて言ってはいけない」と「デマ」を流したのは江川さん自身。
江川さんは科学的知識は苦手ではないのか?
放射能のことには首を突っ込まないほうがいいと思う。
2012年8月19日 - 13:59
https://twitter.com/reoyanagi/status/237338029839241216 上杉がこれをRTしてるんだけどさ、1か月も前のネタなんだよね。
確か前もこれをRTしてた気がしたんだが気のせいか?
目の敵にしてるのは江川じゃなくて、完全に上杉だよなぁ。
気にしない振りをしてるけど、取材をした振りをして捏造したのを江川に暴かれたの相当根に持ってるね。
器ちっさすぎ。
誤爆
970 :
名無しさん@そうだ選挙にいこう :2012/09/21(金) 21:56:27.82
そおかあ、スケジュールてから、てっきり三交代の勤務シフトとかの方面かなあ なんて それだと繋げるログってまばらじゃないのか? 毎日みっちり詰まってるん? カレンダーコントロールに繋げた方が楽なんじゃ?
>970
ページ分割すればもうすこし小規模でしょうが、
全日数をシームレスで扱いたいので…。
ところでちょっと面白いやりかたしてる方がいました。
31レコードのテーブルひとつでいろんなカレンダーを作る。
http://j.mp/PPrHV5 あと
>>965 さん紹介のPostgresqlでのgenerate_series関数についても
調べ、なかなか便利そうだとは思いましたが、調べるうち
>レイアウトや見せ方に関する処理は,本当はDBが行なうべきではない。
という意見を見かけ、反省する次第です……。
さんきゅー
教えてください。 以下のように、都道府県が変わったら、 b1から振りなおしたいのですが、 クエリのDcountで出来ないでしょうか? 都道府県, 北海道, 1 北海道, 2 北海道, 3 青森, 1 青森, 2 秋田, 1
>>976 番号: DCount("ID","T1","ID <= " & [ID] & " AND 都道府県 = '" & [都道府県] & "'")
>>977 ありがとうございます。
うまく出来ました。
979 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 00:22:29.82
Access初心者です . 現在、ある地区の人口増減表を作成しています。 そのデータを格納するためにAccessを使用しています。 1回のデータを入れるたびに〈男or女〉〈転入or転出〉で元々設定された数値から(男性人口数)(女性人口数)(総人口数) が自動的ににカウントアップする(データシートビューに)ロジックを作成したいと思っています。 現在、「データシートビュー」「デザインシートビュー」まで作成したのですが、これからどのように手を加えていけばいいでしょうか? クエリで演算フィールドなどを作成するのでしょうか。 Access自体が全くの初心者なので、できるだけ詳しく書いていただけると助かります。 よろしくお願いします。
Access Clubで聞けや、と思ったら、Access club 終了だしw
981 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 00:30:30.07
じゃ、桐にしとけ
>>980 え?Access clubの膨大なアーカイブは全部廃棄?それでレンサバ屋になりますって?なんつー無責任な・・・・・・・・
983 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 16:23:08.14
すみません。アクセスの正規形をわかりやすく説明していただけませんか?テキストを読んでもなかなか理解できません。よろしくお願いします。
984 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 17:24:46.90
テキスト読んで解らなければ、掲示板のやり取りではもっと解らない
985 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 17:25:40.48
そんでもって、どれのどの部分が解らないか具体的に質問しないと始まらない
986 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 19:07:53.53
正規化するということは、ステップ数(コードの行数)を減らすこととイコールなのだと分かる 正規化しすぎると分かりにくくなる(保守性が悪くなる)こととイコールなのだと言う事にたどり着く そして自由にプログラミングすればいいという境地なう
ACCESSでRPG作りたいんですけど
【 システム環境 】 WindowsVista, Access2007
【 VBAが使えるか 】 はい
【 VBAでの回答 】 可
【 検索キーワード 】 セキュリティの警告、信頼できる場所、mde、accde
Accessファイルの起動時に出る「セキュリティの警告」を回避することに関しての質問です。
Accessでは起動時に「セキュリティの警告」が出ますが、起動場所を「信頼できる場所」として登録すれば回避できるので、
「起動時の設定」(
http://d.hatena.ne.jp/ogohnohito/20080322/p1 )に
「信頼できる場所の設定方法」を記したフォームを開くように設定しています。
そのフォームのモジュールには、すぐログイン用のフォームに遷移するコードを仕掛けておき、
ユーザが「信頼できる場所」を設定した後は、説明用フォームで止まらずにログイン用フォームに遷移する、という仕掛けです。
ちなみに、説明用フォームには、「リボンの無効化」「ナビゲーションウインドウの非表示」のコードを作っているので
正常にログイン画面までいけばユーザは内部のテーブル等にアクセスできないようにしております。
開発用のAccdbファイルでは、「セキュリティの警告」(メッセージバー)が表示とともに説明用フォームが表示され問題なし。
しかし、ユーザ配布用のAccdeに変換すると、説明用フォームが開く前に「セキュリティの警告」(ダイアログボックス)が表示され、
そこでユーザがファイルを開くことに同意をすれば、コードが実行されてログイン画面に到達するという流れになってしまっています。
説明用のフォームが表示されず、且つコード実行環境下になるとリボンを無効化するため、
ユーザが「信頼できる場所」を設定することができない状態となってしまっています。
起動時にワンクリックすればログイン画面が表示されるので、致命的な問題ではないのですが
ユーザ配布用Accdeでも、ユーザに「信頼できる場所」の設定を行わせるための方策として
良い手はないものでしょうか?
よろしくお願いします。
989 :
名無しさん@そうだ選挙にいこう :2012/09/27(木) 23:42:25.68
990 :
988 :2012/09/28(金) 00:48:18.98
>>989 レジストリを書き換えるしかないのですね。
さすがにリスクが高いので断念します
ありがとうございました!!
ほ
ほ
994 :
988 :2012/09/29(土) 13:57:49.64
>>992 情報ありがとうございます。
要は「ユーザがAccdeファイルを置く場所が固定であれば、
配布前にその場所を信頼できる場所に指定しておくことで回避可能」
ということですね。
自分のはランタイムではなく、ユーザそれぞれの使用PCにOffice2007がインストールされているので
たぶん問題なくこの回避法は使えそうです。
特定の場所にユーザに置かせるようにするのはなかなか難しいので
VBAで「メイン画面で最新版ダウンロードボタンを押す」→
「フォルダを自動生成(存在チェック必須)」→
「accdeファイルをサーバからユーザ環境に転送」→
「デスクトップにショートカットを配置(これは自分の技量ではすぐにはできないかもしれないが、なくても何とかなるような)」
こんな感じでの回避をやってみます。
ありがとうござました!!
結局レジストリ書き込むことにw
うめ
梅
落ちる前に
ウメ
AccessClub永遠に・・・
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。