桐にしとけ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境 】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
>>1 前スレ、下手すりゃあと半月は持つかもしれないが、
とりあえず、乙。
ところで、一時期注目されていた ADO はいったいどうなったんだろう?
Accessではリボンが癌だな
11 :
名無しさん@そうだ選挙にいこう:2010/02/12(金) 16:44:40
今まではExcelを使ってましたが
あまりにも重いので
accessの2003でネットショップの商品管理をしたいと思ってます。
用途が少し違うので参考書片手に勉強してます。
やりたいこと
毎週送られてくるメーカーからの在庫や価格などを
変更したり新製品があれば追加したり
生産終了したら削除したりするだけのデーターになります。
ただ送られてくる価格表などのデーターのフィールドがメーカーで違うので
結局一つずつ確認して打ち直している状態です。
たとえば、楽天ショップやYahooなどのショッピングサイトの商品登録CSV
のビューにメーカーから来るエクセルデーターを簡単に移行する方法や
こうやってみれば良いなどアドバイス頂けたら幸いです。
メーカーから送られてくるデーターを同じような形にしないと無理なのでしょうか?
メーカーから送られてくるデーターを同じような形に変換しないと一元管理は無理。個別に管理するならしなくてもいいよ。
>>11 まぁ
>>12の言うとおりなのだが、整形自体をAccessでやってしまうのも手。
取引先が何社あるのかは知らないが、製品数>取引先だろうから
自動整形プログラムを作る価値はあるのでは。
ファイル名が取引先ごとに一定の規則に基づいて名づけているのなら至極簡単だし
列名付データなら、それでも充分識別は可能だろう。
AccessってWindowsに付属するDBエンジンを扱えるVBAとフォームとレポートがセットになってるものだろ
何でフォームとレポートがダメダメで不自由なんだ??
桐にしとけば良いのか?
>>14 結局、欧米と日本の表示形式の差異に由来しているんじゃないの?
桐が欧米に展開したとしたら、逆に使いづらいといわれるかもね。
16 :
名無しさん@そうだ選挙にいこう:2010/02/12(金) 21:50:59
Accessってダメなのか?
今日から勉強しようと思ったのに。
データベースソフトらしいけど、Excelの機能で充分カバーできる?
>>16 >>14にも書いてあるとおり、DBエンジンはWindowにすでに入っている。
なのでExcelでもADOとか使ってDBを操作することは可能。
Accessは、コマンドオンリーでやらなくてはならないものを
視覚的に操作できるようになっている。
>>16 エクセルVBAで入力フォーム作れる人なら、大体はオケ
あと2GBという制限はあるが、Excelのように行数制限がない。
また、データ抽出等はExcelよりも高速。
扱えるレコード数はエクセルの方が遥かに多いよ
>>11 メーカーが送ってくるデータが変更分のみなら、例えばこんな感じ。
メーカー入力データ -> 共通データ への変換
1.メーカー毎のデータ取込用テーブル
メーカーからの Excel, CSV データを日時を付けて、そのまま追加するだけのテーブル
2.メーカー毎の最新共通データクエリ
1.のテーブルから各商品の最新日時のデータだけを抽出して、
メーカー名、品番、品名、価格、在庫などのフィールド名を共通のものに変換するクエリ
3.統合最新データクエリ
2.の全てのクエリを一つにまとめたクエリ
ショップマスターデータ -> 共通データ -> ショップインポートデータ への変換
4.ショップ毎のマスターテーブル
ショップデータを、そのまま保存するテーブル(ショップ独自のIDとメーカーの商品との関連付けに使う)。
5.ショップ毎の共通マスタークエリ
4.のテーブルデータをショップ独自のIDと2.と共通のフィールド名に変換するクエリ
6.ショップ毎の出力用クエリ
3.と5.を組み合わせてショップ毎のインポート形式に変換するクエリ
毎週の作業の流れとしては、
メーカーから届いたデータを1.に取り込んで、6.の各結果をショップにインポート。
新商品がある場合のみ4.のデータを各ショップからエクスポートしたデータに入れ替え
(新商品が少ないなら手動で必要なデータのみ追加しても良い)。
メーカーとショップのデータがメーカ名、品番などで機械的に関連付けできない場合は
4.を手動で管理する。
VBとか.Netとかで帳票作りこんでる人間からするとアクセスのレポートは神らしいよ
23 :
名無しさん@そうだ選挙にいこう:2010/02/13(土) 01:11:08
Accessを学習するのにどんな本が優秀ですか?
いままではBOOKOFFで買ってきた「できるOfficeXP」のAccess部分を読んでPCで一通り操作しただけです。
自分はさいきんPowerPointをさわりはじめた初心者レベルですが、オススメ本の名前を教えていただけませんか?
25 :
名無しさん@そうだ選挙にいこう:2010/02/13(土) 12:05:26
xlsならよく見かけるのですが、mdbのパスワード解析ソフトは存在するのでしょうか?
ひとつだけ見つけたのですが、試用できないので本当に解析できるかわかりません。
試用可能のものやフリーのものがあれば教えていただけないでしょうか?
msbはOffice2007とOfficeXPで前任者が作成したものです。
( ゚,_ゝ゚)バカジャネーノ
27 :
名無しさん@そうだ選挙にいこう:2010/02/13(土) 12:42:47
( ゚,_ゝ゚)
自分で解除しろよ、一瞬だ
11です
>>21 ありがとうございます!!
参考になりました
これを基に勉強してみます。
30 :
名無しさん@そうだ選挙にいこう:2010/02/14(日) 15:54:28
31 :
初心者:2010/02/15(月) 22:01:06
わたしはAccessにはじめてさわろうとする初心者です。
データベースソフトということくらいしか知りません。
きょう初めて勉強中なのですが、言葉がさっぱりわからなくて・・・(><)
下の用語はなんなのかサルでもわかりやすく教えていただけませんか?
「テーブル」・・・
「フォーム」・・・
「クエリ」・・・
「レポート」・・・
テーブル=データの入れ物
フォーム=データを入れる画面
クエリ=データの選別や加工するしくみ
レポート=データを印刷する
こんなかんじかな?
例外もあるけど気にしない
「テーブル」・・・食卓
「フォーム」・・・投球姿勢
「クエリ」・・・高級魚
「レポート」・・・期末に提出する紙媒体
34 :
初心者:2010/02/15(月) 22:27:56
>>32 ありがとうございます!
初めてさわる人にとってはさっぱりだったので
イメージがわくだけでも助かります!
>>33 受け狙いありがとう
涙がちょちょぎれます
でも平凡すぎ
そんな高級魚いるの?
AS/400だとQUERYが胡瓜なんだよな
こんな説明で理解できるなんてすごいサルだ!
ADOのレコードセットをNewしてフィールドをAppendしてデータをAddNewして追加したんだけど、
これを元にテーブルを作成できる?
>>37 エスパースレじゃないんだから、やりたいことをなるべく正確に書かないと。
元のテーブルはどこかにあって、そのテーブル定義を使い、
さらに新規フィールドも追加して別テーブルを作成したいということか?
40 :
37:2010/02/17(水) 10:25:26
>>38 どもです、ADOX調べてみまっす!・・・と、ADOX.Tableを使えばよさげですね、ありがとうございます!!
>>39 説明不足すまそ、元テーブルは無いです。
Newしたレコードセットに定義したフィールドを持つテーブルを作りたくて。
自分で CREATE TABLE文を実行してテーブルを作ればいいんだけど、
フィールドを定義してレコードを新規追加したレコードセットのメソッド呼び出し一発で
テーブルを新しく作れたらいいなぁ、と。
毎度お世話になっております。
あるテーブル、あるクエリがありまして、テーブルには主要な数値が入っており、
クエリでそれを計算させています。
テーブル
[日付] - [要素A] - [要素B] - [要素C]
クエリ
[日付] - [要素A] - [要素B] - [要素C] - [要素A + 要素B - 要素C]
こんな具合です。クエリの最後の計算させている部分なのですがこの
部分を次のレコードの[要素D]としたいです。
つまり、[要素A + 要素B - 要素C]は次月繰越、[要素D]は前月繰越
という感じです。
どのようなクエリ式をつくると、この前月・次月繰越が実現できますでしょう
か?
>>41 前月繰越は
SELECT (要素A + 要素B - 要素C) AS [要素D] FROM [テーブル] WHERE [日付] BETWEEN DateSerial(Year(Date), Month(Date) - 1, 1) AND DateSerial(Year(Date), Month(Date), 0):
かな?(手元にACCESSないから自信ないが・・・)
後はこのクエリとテーブルをFROM句にいれてフィールドを抽出すればいい
【 システム環境 . 】 WindowsXP, Access2007
【 VBAが使えるか .】 はい
【 VBAでの回答 】 可
テーブルAとテーブルBをキーで結合してCSVに出力したいのですが、
結合後のフィールド数が255を超えているためTransferTextを使用せず
VBAに下記のように記述(一部省略)して出力しています。
ただ、データ件数が5万件以上あるので、@の箇所で時間が掛かって
しまい終わりません。
50件で試したところ15分近く掛かりました。
もっと効率よく出来る方法はありませんでしょうか。
Set db = CurrentDb
Set qdf = db.QueryDefs("テーブルA選択クエリ")
Set rsA = qdf.OpenRecordset
F = FreeFile
Open "新データ.csv" For Append As #F
Do Until rsA.EOF
Set db2 = CurrentDb
Set qdf2 = db2.QueryDefs("テーブルB選択クエリ")
'キーは4個あります。
qdf2.Parameters("[ID1]") = rsA.Fields("ID1").Value
qdf2.Parameters("[ID2]") = rsA.Fields("ID2").Value
qdf2.Parameters("[ID3]") = rsA.Fields("ID3").Value
qdf2.Parameters("[ID4]") = rsA.Fields("ID4").Value
Set rsB = qdf2.OpenRecordset・・・・・@
Write #F, rsA.Fields("ID").Value, rsB.Fields("項目A").Value
rsA.MoveNext
Loop
>>44 テーブルBの[ID1]〜[ID4]でマルチカラムインデックスは作成してありますか?
>>44 手元にアクセスが無いからわからないが
1 テーブルAの必要なフィールドを選択したクエリ
2 テーブルBの必要なフィールドを選択したクエリ
を作って1と2の結合は出来ないのかな?
それとも出力フィールド数が255を超えているのか?
>>44 まず
>>45 の言うとおりテーブルBの結合に使う列にインデックスを作成(重複が少ない列順)。
まだ遅いなら、ループの外で Recordset を開き、ループの中で Seek を使って結合するレコードに移動するようにコードを変更。
まだ遅いなら、列値の取得は列名ではなく、列番号(かField変数経由)で行うようにコードを変更。
まだ遅いなら、ループ中での文字結合を極力減らす(配列に貯めて最後に Join で結合する等)ようにコードを変更。
まだ遅いなら、Access で解決するのは諦める。か、もっと良いパソコンを使う。か、他に方法があったら教えて。
例:
Set tblA = CurrentDb.OpenRecordset("テーブルA", dbOpenTable, dbReadOnly)
Set tblB = CurrentDb.OpenRecordset("テーブルB", dbOpenTable, dbReadOnly)
tblB.Index = "連結に使うインデックス名"
Do Until tblA.EOF
tblB.Seek "=", tblA(0), tblA(1), tblA(2). tblA(3)
Write #file, tblA(0), tblB(0)
tblA.MoveNext
Loop
Recordset は開くたびにテーブル情報を読み取って初期化する必要があるから、何百回もやると重い。
Fields("[ID1]")も毎回一致する名前の列を検索するから、何千回もやると重い(列数が多いと特に)。
文字結合は結合するたびにメモリを再確保するから、何万回もやると重い(文字列が長いと特に)。
>>47 > 結合後のフィールド数が255を超えているためTransferTextを使用せず
って書いてる。
textで半分づつ出して二つのテキストをVBAでつなぐ手もあるかな?
>>44 テーブルAとBそれぞれキーの昇順でソートしたレコードセットを用意して、
マージしてキーが一致するものだけをテキスト出力したらいいんじゃないかい?
51 :
45:2010/02/18(木) 16:26:19
>>46 通常、5万レコードから50件抽出するのに15分も掛りませんから、
コードはそのままで
>>48さんの言われるようにインデックスを作成してみてください。
マルチカラムインデックスの方がより速いと思いますが、[ID1]〜[ID4]に対して
個別にインデックスを作成しても十分すぎる効果があると思います。
これならデザインビューから簡単に設定できますから。
52 :
44:2010/02/18(木) 22:06:52
テーブルBにインデックスを作成し
>>48さんの方法で試したところ
無事出力できました。
どうもありがとうございました。
53 :
48:2010/02/19(金) 01:12:59
>>49 なるほど。TransferText で出力できる量の列を別々に出力させて、後で繋ぐのね。
そっちのほうが簡単だし早そうだ。気づかなかった。ありがとう、勉強になったよ。
>>51 個別にインデックスを作成しても普通は1つしか使われないような?
バックエンドにMySQLを使用して、フロントエンドにAccess2002という
社内システムを運用中です。
mdbのファイルサイズが約65MBでVBAの総ステップ数が11万行程
あるのですが、ある日Access2007Runtimeで実行させたところ、
ファイルサイズが約14MBまで小さくなってしまいました。
Access2002で最適化してもここまでファイルサイズが小さくならな
いし、ファイルサイズが小さくなりすぎて少し不安になりましたが、
mdbの内容は全く変わっていませんでした。
サイズが小さくなった事で起動時間も早くなり、なんとなく動作も軽快
になったような気がするのですが、これって常識?
>>54 >ファイルサイズが約14MBまで小さくなってしまいました
>これって常識?
たぶん常識。mdbって書いてあるんだから間違いないということはないと思うが、
mdbだと、VBAのソースとかも保存されているわけだし。
比べるのだったら、mdeとじゃなきゃ。
56 :
55:2010/02/19(金) 21:11:55
訂正
×間違いないということはないと思うが
○間違いということはないと思うが
助けてください。
dBase で 出作られた DBFファイルを Access2Kで取り込んだのですが
日本語が文字化けしてしまいます。
なにかよい方法はあるのでしょうか?
>>57 2002だと5、III、IV(文字化け対処だからツッコミはしないように)が用意されているが、dBaseのバージョンは大丈夫か?
手間でもいったんテキストにしてインポートしたら。
>>57 インポート定義のコードページの設定は大丈夫?
60 :
名無しさん@そうだ選挙にいこう:2010/02/20(土) 07:09:32
access2007が入っていて、access97を使いたいのですが、
どのようにインストールすればいいのですか?
初心者なのでなにもわかりません(+o+)
どなたか教えてくれませんか???
お願いします。
初心者にはおすすめできない
>>60 1.Access97の入ったインストールCDをCD読み込み可能な光学ドライブにセットする
2.インストール手順に従い、保存先等を設定する。
3.インストール終了までしばらく待つ
4.インストールが終了したら光学ドライブからCDを取り出す。
エクセルとアクセスって違うんですか??
お引き取りくださいksg!
>58
他社製品のため出来ません。
>59
インポート定義はテキスト形式のみ対応では?
いろいろやってみた結果、次の手順でやることにしました。
1.OpenOfficeOrg で読み込む。(OpenOfficeOrgは文字化けしないため)
2.ただし、テキストのベタ打ち(改行もない)のようなので、
何らかの整形ツールで固定長文字列に揃えて保存する。
3.アクセスで取り込む。
>>65 DBF Explorerというツールも便利だよ。
流れ読まずに質問。
Accessを5年ぶりに使って受注管理システム作ることになりそうです。
もし、SQL SERVER Express走らせるマシンの用意が出来るなら、Access+SQL SERVERでADP形式がオススメですか?
ストアドプロシージャは使うつもりはありませんが、昔MDPが壊れることが何度かあったのでトラウマになっています。
シロウトにはおすすめできない
>>67 同時に編集する人数による。一人なら mdb。二人以上なら SQL Server を勧める。
mdb でも同時に編集できる人数を一人に制限しておけば、多人数で使っても結構壊れなかったと思う。
もちろん SQL Server の方が安定しているのは間違いないけど。
SQL Server を使う場合も adp を使う特別な理由がなく、ストアドプロシージャも使わないのなら、
adp はデータベース設計だけに使い、mdb からそれをリンクテーブルとして接続して作った方が楽かも。
mdb の方がレポートとか入力用に一時的な作業用テーブルが必要なとき、ローカルにテーブルを作れる分使い勝手が良いから。
どっちにしてもバックアップは必要だし、開発と保守の手間を考えて選んでください。
クエリの抽出条件をフォームコンボボックスから指定して
クエリの抽出条件: Forms!テストform!コンボ12
としていました
コンボ12にアスタリクスを入力したときに、全件抽出するようにしたいので
クエリの抽出条件: LIKE Forms!テストform!コンボ12
と書き換え、コンボ12 に * を入力してみましたが、1件も抽出されません
なにか勘違いしていると思うのですが、希望通りにするには、どう設定したら良いですか?
71 :
70:2010/02/21(日) 18:47:00
再起動したら想定通りに動きますた
アクセスのバカやろーーーーーーーーーーー!!
access2000を使用しています。
ExcelでAccessのデータを「外部データの取り込み」から読み込んで
別にグラフを作っているのですが、ユニオンクエリを読み込もうとすると
「パラメーターが不足しています。1を指定して下さい」と出てきて読み込めません。
このエラーはどうすればいいんでしょうか。
>>72 そのユニオンクエリがパラメータクエリを含んでいる為、開けない
と見た。
フォームか何かの値をフィルタに使っているとか、フラグのための
フィールドにNull値が混じっているとか。
単独でそのユニオンクエリがまず開けるのかどうかを確認。
>>56 65MBのmdbをmdeに変換すると、約20MBになりました。
今回はmdbのままRuntimeにて起動→終了しただけでファイルサイズが
激減し、ソースコードの内容も一切変わっていませんでした。もちろんmdb
なので、全ての編集をすることが出来ます。
一体mdbの中でなにが起こったのか不思議でした。
>>63 「エクセルとアクセス」って繰り返し言っていると、
ついうっかり「アクセル」って言い間違えることありますよね。オレだけ?
>>73 パラメータクエリを使っていないかも、ユニオンクエリ単独で開けるかも
確認してみましたが、問題ありませんでした。
>>76 俺も何度か出会ったエラーなんだが、その時は、フラグが必要なフィールドなのに
Nullがあったりした。
なので、1をなにかの列で埋めてみるとか。
確かに、ExcelのVBAからSQL投げるとNzとか超基本的な関数で
「1を指定して下さい」エラーになることがあるな
>>78 そうそう。俺もよくNz関数使う。
こういう場合、計算式が入っているフィールドを一つ一つ検査するしか
ないんだよなぁ。
テーブルが
ID, 親ID, 数字
1, (null), 10
2, 1, 20
3, 1, 30
4, 3, 40
となっています。要するに
1 10
├2 20
└3 30
└4 40
こういうツリーをイメージしています。
この時に、「自分と配下の数字をすべて合計した表」を作りたいのですが、
クエリだけで表現できませんか?
つまり、
ID 数字合計
1 100
2 20
3 70
4 40
このような表がほしいのです。
>>75 エクセルとアクセス、エクセルとアクセス、……エクセスとアクセル
あれ?
>>80 クエリを複数使えばできる。応援するぞ、頑張れ。
Access でモノクロ印刷できねーの?
Acrobatみたいにモノクロ2値で出力設定もないし、桐みたいにモノクロ前提のデザインもないし
ウィザードでレポート作ったらカラーになるし、背景色を全部白にしてもプリンタはモノクロインクじゃなくカラーインク配合して出力して汚い
アクセスで印刷しようとしてる時点で…、桐にしとけ。
>>83 プリンタ側で設定すればいいんじゃね?
もしくはVBAやVerによってはAPIで。
そもそも白黒印刷前提で色を使用しているのが解らん。
もしかして、フォームを印刷しているとかか?
カラーインクジェットとモノクロレーザーを持っているから
理解に苦しむ悩みだが。
2007や2010でリボンのレポート作成でレポート作ると勝手にカラーになっちゃうのです
勝手に代替えの行とかに色付いて、ヘッダーに勝手にカラーでロゴ入ったり
もー、使いにくいです
>>86 最後のデザイン指定のところで、ナニもないタイプを選ぶわけだが
それがどれなのかわからない上に、自分のテンプレを登録できる
わけじゃないのがなぁ。それよくわかるよ。
毎回だから一番シンプルな2003を選んで修正しているよ。
>>86 >2007や2010でリボンのレポート作成でレポート作ると勝手にカラーになっちゃうのです
そりゃ酷い仕様だな。簡単なのは白黒印刷用にプリンタを登録してしまう方法だろう。
たぶん、モノクロ印刷設定ができると思うのだが。
Accessレポートの利点は使用プリンタを指定できるところだと思うのだが、
2007や2010だとその機能もなくなっているのか?
VBAとかでできるのかもしれないが、ドライバインスコのほうが簡単なので俺はそうしている。
モノクロ印刷じゃなくて、両面印刷なんだけど。
プリンタでモノクロ設定するとグレートーンになってバッチイなぁ。
純白なエリカ様のようなバージンな清々しい印刷はメンドイ。
>>89 メーカーとか朱によって違うのだろうが、黒インク持ちのやつは
「カラーインクを使わない」とか「白黒2値」とかの設定がないか。
もしくは、プロファイルで白黒印刷とか。
でも白黒印刷を多用するなら、モノクロレーザーを買ったほうが
経済的だとは思うが。綺麗だし。
家庭用だったら、2万程度で買えるんじゃないのか。
ACCESSのSQLの質問です(基本的なことですまんorz)
テーブルのある項目に何種類の値が入ってるか件数を取得したいのだが・・・どうするんだっけ??
ORACLEでは" select count(distinct ある項目) from テーブル"でいけたと思うんだが、
ACCESSでは「distinctをそこで使うんじゃねえ」エラーが出ちゃうのん...orz
副問い合わせする方法なら思いつくんだが、副問い合わせしなくてもいい記述があるなら教えてくださいませ。
例)以下の状態で、項目1には2種類の値("AAAAAAAA"と"BBBBBBBB")が入ってるので2を取得したいっす。
[項目1] [項目2]
AAAAAAAA xxxxxxxx
AAAAAAAA yyyyyyyy
AAAAAAAA zzzzzzzz
BBBBBBBB xxxxxxxx
BBBBBBBB yyyyyyyy
>>91 SELECT DISTINCTROW テーブル.項目1, Count(*) AS テーブルのカウント
FROM テーブル
GROUP BY テーブル.項目1;
ウィザードの集計を使ってみたけど、こういうことでいいの?
93 :
91:2010/02/26(金) 11:17:24
ああ、すまん。投稿してから間違いに気づいたorz
さらに間違えた。93の名前欄は92ね。
95 :
91:2010/02/26(金) 11:21:15
>>91 クエリで固有の値プロパティ設定してカウントして、SQLビューで見れば答えが書いてある
97 :
91:2010/02/26(金) 11:55:18
>>96 どもです。それが・・・以下のような結果しか返してくれなくてorz
SELECT DISTINCT Count(テーブル1.項目1) AS カウント FROM テーブル1;
結果
[カウント]
5
SELECT DISTINCT Count(テーブル1.項目1) AS カウント FROM テーブル1 GROUP BY テーブル1.項目1;
結果
[カウント]
2
3
>>94 気にしないでねw
98 :
96:2010/02/26(金) 12:12:38
ああ、勘違いゴメン
99 :
91:2010/02/26(金) 13:11:34
あるシミュレーションデータの生成を行うプログラムを作りました。
固定データのあるテーブル そして変動要素のあるテーブルの二つがあり、
それぞれを演算させて、1行ずつ、計算結果のテーブルへと指定した月数
分データを入れていく。
変動要素には何年目もしくは何ヶ月目の変数が格納されており、ジェネレート
する時の月数を素に今はDLookupで毎回ルックアップして変数を取り出し、演算
して、計算結果テーブルへと格納しています。
ただ、この変数がかなりの量でForループで廻しているわけなのですがもの凄く
遅いです。かなりマシンパワーを必要とします。Dlookupよりも効果的で速度の出
る何か秘策は有りませんか?
俗に言うSQLで一撃系に書き換えるしかないよ
Dlookupが必要な時点でテーブル設計間違ってる
>>101 およそ20個近く1レコードの中で演算させた結果を格納する列があるのだ
けれど、これ全部SQLで書き直しですか・・・・
userday = iniread("USER", "FY", "")
For CounterY 1 to calcyear
For CounterM 1 to 12
with rs
.AddNew
!年月日 = DateAdd("m",1," userday)
!演算結果1 = (SQL文)
!演算結果2 = (SQL文)
(中略)
.Update
end with
next CounterM
next CounterY
こんな感じで廻すんでしょうか?
>>103 こういうテーブル構造って人間にはわかりやすいんだけど
DB的に後々苦労する筆頭なんだよな。
>>104 あのーすみませんが、俺が今つくっているこれは
データベースのテーブルの設計じゃないんですよ。はっきりいって
テーブル構造とか意味ナイんで。
テーブル設計の話はほかでやってもらえます?
あちゃー
>>105 そうなの? あなたの質問が速度を速くしたいというものだったから
DBには不向きなテーブル構造をしているよって書いただけなのに。
できるなら力になってあげようと思ったけど、俺は抜けた。
2抜けた
>>107 Dlookupをわざわざ使っている時点でそもそも、そういう話にならない。
というより、極めて簡単な資金繰りあたりのシミュレーションを作ってみる
といい。テーブル設計なんてできないから。
DLookUpが特段に遅いということではないと思うなぁ、俺は。
多用してると「んっ?」と思うことあるから、パフォーマンスを上げるにSQLに代替する
事があるけれども、超絶に良くなるということはないのでは?
さらなるパフォーマンス上げるには結果的にテーブル設計如何にかかってくるとことが多
いと思うんよね。テーブル設計なんてできねってんなら、マシンスペック上げるか、Access
を使わなくてもいいってことじゃね?
投げた質問の意図しない回答に対し必要以上に突っかかるのは格好わるいぜ
3抜けた
最初から参加さえしていない俺勝ち組
俺はあんまり頭悪くないんだけど今回はたまたま質問してるだけって気持ちが
こういう上から目線の書き込みになっちゃってるんだろうな。
まあこんな態度じゃ目的の解答がどんどん得にくくなるってことに気付いてない時点で
壊滅的に頭悪いわけだがw
質問の仕方が悪いよね。最初から
「DLookupより断然高速で、DLookupと同等の機能はありませんか?」
って聞けばよかったのに・・・
114 :
名無しさん@そうだ選挙にいこう:2010/02/27(土) 13:58:02
____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ <あのーすみませんが、俺が今つくっているこれは
| |r┬-| | データベースのテーブルの設計じゃないんですよ。
\ `ー'´ / はっきりいって テーブル構造とか意味ナイんで。
ノ \ テーブル設計の話はほかでやってもらえます?
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バ
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) バ
ン
あ〜あ、もう来ないんだろうな。
116 :
名無しさん@そうだ選挙にいこう:2010/02/27(土) 19:00:43
Forms!出納帳 を作って並べ替えました
[年月日]で昇順にして、同一[年月日]内では[ID]昇順です
[ID]、[年月日]の順で並び替えしたらそう出来ました
その並び替え順の状態で、特定のレコード以前のレコードをフィルタするwhere句はどう書けばよいですか?
>>117 [年月日]<特定レコードの[年月日] or ([年月日]=特定レコードの[年月日] and [ID]<=特定レコードの[ID])
って感じじゃなかろうか。
>>118 どうも有難うございます
帳票フォームで狙ったレコードにカーソル置いてDSUMのcriteriaに入れたいのですが、なんか大変そうですね
&とか'とか"とか、どう書いたら良いか解りません
122 :
名無しさん@そうだ選挙にいこう:2010/02/28(日) 11:24:48
>>121 DSUMに拘ってるみたいだけど、出納帳の累計出したいとかじゃないの?
123 :
名無しさん@そうだ選挙にいこう:2010/02/28(日) 11:30:10
連投スマソ。
ちなみに
DSum("列名", "テーブル名 or クエリ名", "条件式") だけど
レコード多いと劇遅だよ。
>>122 テーブルに累計書き込まずに、フッターとかの非連結テキストボックスに特定レコードまでの合計を表示したいのです
必要な時だけボタンを押して表示する感じ
桐にしとけ
127 :
名無しさん@そうだ選挙にいこう:2010/02/28(日) 15:47:22
>>125 ADOでいいんなら作ったやつアップできると思うがいるか?
>>127 ご親切に有難うございます
なんとか自分で解決しました
>>118 さんのアドバイスでクエリ作って、それをdomainに指定してcriteriaは省略でできました
あっさり過ぎて拍子抜けです
DDoS糞食らえ
2000なんだけど、レプリケーションをササッと解除してくれるようなツールないかな。
テーブル作成クエリの作業後に主キーやインデックス、規定値にリレーションシップの
再設定をしなきゃいけないのがどうにも。
知らない間にデザインマスターがなくなってたので、tsrelも退避してくれない。
一時テーブル作る時って、どういう命名の仕方がいいのかな。
MDBに複数からの同時アクセスがあるとTMPとかじゃマズいよね。
日時とかから生成するもん?
>>131 クライアントのマシンネームでも使えばいいんじゃね?
実際のところは、ファイル共有ではなくてC/Sのかたちにするのが本来だと思うけど.
>>132 なるほど、ごもっともです。
MDBへの多数のアクセスはやりたくないんですが、
もし壊れたらそれを言い訳に本格的に開発する時間をもらうつもりです。
Accessはパーソナルデータベースソフトです。
フロントエンドとして使う場合もあるだろ
・・・と思ったが、今はAccessで本格的に開発することなんてあんまり無いのかな。
器用貧乏なAccessの機能を覚えるよりは、PHP+MYSQLとかVS2008で開発
した方が効率いいし、そのへんの事務員が自分でやるならExcelとかFileMaker
を覚えた方が効率良さそうだ。
>
>>135 システムの規模によるんじゃないかな。
それに未だにVB6.0やVBAが基本言語の会社もあるだろうしね。
短い開発期間に低予算に多出力とくればおのずとaccessに辿り着くような気がする。
社内で勝手にMySQLとか使えないし、申請しても許可が下りないんで
Access使うしかないって感じかな…。
>PHP+MYSQLとかVS2008で開発した方が効率いいし
ないわ
結局、桐が一番良いわけだ
ものすごく行き詰まってしまったので、相談させてください。
下記の固定長データをACCESS2000にインポートするにあたり、
ボタン押下でテーブルに取り込みたいと思います。
インポート定義を作成し、手動で定義を適用、インポートすると
定義通りにうまく作成されるのですが、VBAでボタンを作成して取り込むと、
フィールド1に固定長のすべてが入力されてしまいます。
マクロを作成してもうまくいきませんでした。
※DoCmd.TransferText acImportDelim,"インポート定義","テーブル", フルパス, false
どのようにコードを書いたら、定義通りに取り込めるのでしょうか?
-------------------------------------
1001ミツビシ
--------------------------------------
フィールド名 データ型 開始位置 幅 インデックス スキップ
フィールド1 テキスト型 1 1 いいえ FALSE
フィールド2 テキスト型 2 3 いいえ FALSE
フィールド3 テキスト型 5 5 いいえ FALSE
>>141 マクロでやってみて、上手くいったらVBAコードに変換すれば間違えてた記述が解る
143 :
141:2010/03/05(金) 00:19:36
>>142 それがマクロでやってもフィールド1にデータが全部入ってしまうのです。
VBAにこだわってないので、マクロでもよいんですが、
手動できるものが、同一定義を指定しながらなぜできないのかなと。
DoCmd.TransferText acImportDelim, FS, FS, FN, False, ""
ヒントになるか?
145 :
141:2010/03/05(金) 07:25:48
>>144 ありがとうございます。
会社に行って早速試してみます。
これ、ADOで引っ張ってきた複数のレコードをフォームのテキストボックスに
代入しようとしたら、一旦、一時テーブルに格納しないといけないの?
できるだけAccessのフォームの機能でやりたいので、レコードの移動を
フォームプロパティの移動ボタンでやりたかったんだが・・・。
もしかして、そもそも非連結で作ろうとしてることが間違ってる?
>>146 Formオブジェクトなどにrecordsetプロパティがあるから、これにレコードセットを代入するのじゃ。
でもって、フォームに配置してるコントロールのcontrolsourceプロパティを設定しておけば、
テーブル連結フォームと同様に操作できるのじゃ
>>148 神よ!うまくいきやした。
ありがとやんした。Accessが便利だと思えるようになりますた。
でもこれでも、フィルタ機能が使えない・・・・・orz
ログインの時のパスワードの解除方法を教えて下さい
VistaSP2&Access2007。フォームにボタン配置しようとしたらAccessが落ちました。
2,3回やっても落ちたので新規DBを作って試してみたらボタンだけじゃなくテキストボックス
でも落ちるようです。ラベルならOK。もしやと思いテキストファイルのエクスポートを試して
見たら落ちました。どうも各種ウィザードのダイアログが開くタイミングで落ちるっぽいです。
クエリウィザードでも落ちたのでたぶん間違いないかと。
Officeを一旦アンインストールしてから再インストールしても同症状でした。
自宅のPCでAccessが使えなくても困ることはあまりないんですが、とても気持ち悪いです。
どこか調べてみるべき点など心当たりはあるでしょうか?
>>154 officeにもSP2あるけどまぁ治らん気がする
office入れなおしてだめだったらいい機会だと思ってOSから入れなおす。俺なら。
>>154 C:\Program Files\Microsoft Office\Office12\ACCWIZ\UTILITY.ACCDA
を削除してからAccessの修復インストール
結果を報告して
158 :
154:2010/03/06(土) 15:44:14
レスしていただきありがとうございます。
>>154 office入れ直したときにspを当てる前後でそれぞれ動作確認したんですがどちらでも
Accessは落ちました。
>>156 やってみましたが症状に変化はないようです。
症状的にDLL等の共有モジュールのどれかが壊れてるのかなとも思いますがどれだ
かは判明していません。
ふと気がついてイベントビューワをみたら「障害が発生しているモジュール VBE6.DLL」
となっていたのでこれも削除して修復しましたが変化なしです。
自宅PCだし現状では困ってる訳でもないので、暇つぶしがてら色々やってみて直ったら
報告しますね。
159 :
154:2010/03/06(土) 15:45:31
失礼、アンカミス。
上は
>>155の間違いでした。
>>157 2007のデータベースパスワードなら現在までHackingされていない、総当たり方法しかない
>>124 つい最近試してみたのだが、レコードの数が多ければ多いほど
遅くなるわけだが、代替としては、SQLで記述する方法がある。
ただ、そのままでは意味がないので、関数化して使うのが定石。
これで、もともと作っていたアプリがおよそ30秒掛かっていた作業
が俺の場合には、6秒にまで短縮したよ。ということで、ありとあら
ゆるこういった集計関数使っている場所をSQLに置き換えた。
関係ないけど、やり方次第でホント短縮できるよね。
初心者だった頃に見様見真似で作った物が2時間ぐらいガリガリ動いてたのを、それを見たプロい人が手直しして
数秒で計算が終わったのを見た時は感動したもんだ…。
>>157です
パスワードが解らないんじゃなくて
起動時に出てくるパスワードの入力の設定を
解除したいということです
>>163 2007のデータベースパスワードなら、パスワード解らないと解除できない
2003以前にあったユーザーグループ権限パスワードを2007で使ってる話しなら、それは簡単に解除できる
アプリ作者が独自に起動フォームに作ったパスワードなら、色々と方法はある
どのパスワードよ?
165 :
名無しさん@そうだ選挙にいこう:2010/03/06(土) 19:48:55
>>140 acImportDelim -> acImportFixed で.
166 :
名無しさん@そうだ選挙にいこう:2010/03/06(土) 19:52:35
間違えました
>>141 acImportDelim -> acImportFixed で.
>>165 マナーの悪い奴は鮮人認定されてもしょうがなくね?
俺なにも間違ったこと言ってなくね?
>>151 解決したでヤンス!
どうもありがとうございました。
rs.CursorLocation = adUseClient
このおまじないが必要でした。
2010のDataMacroに期待したんだが、やはり残高計算は出来ないみたいだね
桐でも使ってろ
Temp = ""
If Me!開始日付 <> "" And Me!開始日付 <> "" Then
Temp = Temp & "日付 between #" & Me.開始日付 & "# and #" & Me.終了日付 & "#"
End If
Me.F_仕訳帳の編集_sub_.Form.Filter = Temp
Me.F_仕訳帳の編集_sub_.Form.FilterOn = True
こういう感じのフォームフィルターを書いてるんだが、書いてていやになってきた。
string.format("日付 between #{0}# and #{1}#",hoge,hage)
みたいに書く方法があったら教えてほしい。
>>171 その書き方できたらいいなと思うよね。俺は関数定義して使いまわしてる。
エレガントにしてくれる人がいればと思い書いておく。
Public Function DateCriteria(Optional Date1 As Variant, Optional Date2 As Variant) As String
If IsDate(Date1) And IsDate(Date2) Then
DateCriteria = " between #" & CDate(Date1) & "# and #" & CDate(Date2) & "#"
ElseIf Not IsDate(Date1) And IsDate(Date2) Then
DateCriteria = " <= #" & CDate(Date2) & "#"
ElseIf IsDate(Date1) And Not IsDate(Date2) Then
DateCriteria = " >= #" & CDate(Date1) & "#"
Else
DateCriteria = ""
End If
End Function
>>171 関数を作っちゃ駄目なん?
Public Function My_Format(expression As String, ParamArray args()) As String
My_Format = expression
Dim i As Long
For i = 0 To UBound(args)
My_Format = Replace$(My_Format, "{" & i & "}", args(i))
Next
End Function
My_Format("({0}, {1})", x, y)
似たコードが多いなら空白チェックも入れて1行で書くとか。
Public Function My_TryFormat(expression As String, ParamArray args()) As String
Dim i As Long
For i = 0 To UBound(args)
If Nz(args(i), "") = "" Then Exit Function
Next
...
Filter = My_TryFormat("日付 BETWEEN #{0}# AND #{1}#", Me.日付1, Me.日付2)
>>172 IsDate(Date1) And IsDate(Date2) の後の Not IsDate(...) 判定は要らないよ。
もし IsDate(...) なら最初の If が成立するので。
Public Function DateCriteria(Optional Date1 As Variant, Optional Date2 As Variant) As String
Dim pDate1 As String, pDate2 As String
pDate1 = IIf(IsDate(Date1), "#" & Date1 & "#", "")
pDate2 = IIf(IsDate(Date2), "#" & Date2 & "#", "")
If pDate1 <> "" And pDate2 <> "" Then
DateCriteria = " BETWEEN " & pDate1 & " AND " & pDate2
ElseIf pDate1 <> "" Then
DateCriteria = " >= " & pDate1
ElseIf pDate2 <> "" Then
DateCriteria = " <= " & pDate2
End If
End Function
Me!開始日付とMe.開始日付が普通に混在してる時点でいやになってきた
ちょいと質問。
小数点以下2桁の項目に整数値と小数値が混ざっているデータの整数値は小数点以降を表示したくないとき、
以下のやり方よりもナイスなやり方ってある?
format([数値項目],iif((([数値項目]-int([数値項目]))*100)>0,"#,##0.##","#,##0"))
テキストボックスの書式じゃだめかい?
181 :
177:2010/03/11(木) 10:47:07
従業員に使わせるアプリをAccessで作るときは、Ctrl+P とか Ctrl+S とか機能したらマズイんだけど
変なショートカット沢山あるけど、どうしたら良いの?
>>183 ああ有難うございます
一つ一つ潰すんですね(^_^;)
185 :
182:2010/03/12(金) 19:11:27
>>184 フォームのKeyPreview=Trueにして、フォームのkeydownイベントとかで
if Shift>2 then KeyCode=0
で、単独押下と{Shift}+キーの操作以外は一気に取り消せるはず。
{Shift}:1 {Ctrl}:2 {Alt}:4 な。
186 :
183:2010/03/12(金) 19:12:50
おっと間違えたw ↑は183だ
>>184 そうは言ってもCtrl+CとかXとかVとかだけは使わせてって要望が絶対出るだろうし
一つ一つ潰すしかないだろ
2010
詳細なテキストサービス を有効にしないとマトモにスクロールしなくなる
有効にすると、対応してない他の大部分のアプリでは不具合続出
どうすりゃ良いのよ?
ACCESSのマクロのフィルタ実行で式ビルダから条件式を実行したときと
クエリで条件式を設定して実行したときに
結果が異なることもあるのでしょうか。
ええ?!
まさかまた並びが違うから結果が違うとかいう戯言ぬかすんじゃ・・・
さぁて、Classでも作るべ。
どんなClassが使っておられるの?みなさん
使い甲斐があるのはなんだろうか
どんな感じで使っておられる?
もしかすっとClass使ってないかな
1993恋をした〜
あ〜
ACCESS97のサンプルについてたらしいcontact.mdbを入手する方法ないですかね。
97は入ってるけどインストールは出来ないです。
>>190 フィルタって対象がフォームじゃねーの?
>>179 Me のレコードソースが変数含んでると、データ滅茶苦茶に狂うだろ
>>197 んだんだ
複雑なことがちとつらくなってきてさ、きちんとコーディングしておくべきかと思って。
>>199 自分は使ってない、っていうかむしろこちらが参考にしたい
(フォームモジュールもクラスモジュールっていう突っ込みは置いといて)
よく使うのはチェックボックス全部ONにしたりとか
カレンダー呼び出しとかだけど数行で済むからそのまま書いてるし。
201 :
名無しさん@そうだ選挙にいこう:2010/03/17(水) 16:08:46
教えて下さい。
アクセス欲しくてパソコンショップいったら高すぎてとても手が出せません。
かといってフリーソフトで手に入れたアクセスもどきのデータベースは機能がしょぼくてガッカリでした。
色々とくぐっていたらベータ版という無料でダウンロードできるものがあるらしいことがわかったんですが
これは他のマイクロソフトオフィスもまとめてダウンロードしてしまうものなんでしょうか?
ワードとエクセルはすでにあるし、他のオフィスはいりません。アクセスだけ欲しいのです。
下手にダウンロードしたら今あるワードとエクセルを新しいヴァージョンに上書きしてしまうのでしょうか?
ベータ版はサポートないというのでいじりたくないのです。
それにベータ版は本来の製品と比べると機能とか悪いのでしょうか?
どうか詳しく教えてください
ごめんな、俺にもよくわからないんだ
googleとMicrosoftならきっと応えてくれると思うぜ
>>201 > 下手にダウンロードしたら今あるワードとエクセルを新しいヴァージョンに上書きしてしまうのでしょうか?
下手にダウンロードしても、上手にダウンロードしても、インストールしなければ何も起こりません
インストール最初にカスタムからアクセスだけ選んでインストールしてください
204 :
名無しさん@そうだ選挙にいこう:2010/03/17(水) 17:18:24
ありがとうございます
>>200 んー参考にしてもらえるかどうかはわからんのだが、ADO接続/ADO非同期接続/フォーム仕様の共通化
などこさえてみた。数レスまえのショートカットキー抑制の話題がきっかけだったのだけれど、
フォームプロパティのうっかりミスとか面倒でさ、まとめてやっちゃうかと。
宣言部略/Class_Initialize CanCloseFlg = False
Public Sub BindForm(Frm As Form, Optional IsModal As Boolean = False, Optional btnClose As CommandButton, Optional btnQuit As CommandButton)
Set pFrm = Frm
With pFrm
Select Case .DefaultView
Case acDefViewSingle '0:Single Form/単票フォーム
.NavigationButtons = False : .RecordSelectors = False ’BackColorとか、Allow系とか(以下略)
End Select
.KeyPreview = True : .OnKeyDown = "[EVENT PROCEDURE]" : .OnUnload = "[EVENT PROCEDURE]"
End With
pFrm.Modal = IsModal
If Not btnClose Is Nothing Then Set pbtnClose = btnClose : pbtnClose.OnClick = "[EVENT PROCEDURE]"
If Not btnQuit Is Nothing Then Set pbtnQuit = btnQuit : pbtnQuit.OnClick = "[EVENT PROCEDURE]"
End Sub
Private Sub pbtnClose_Click()
CanCloseFlg = True : DoCmd.Close acForm, pFrm.Name
End Sub
Private Sub pbtnQuit_Click()
CanCloseFlg = True : Application.Quit
End Sub
Private Sub pFrm_KeyDown(KeyCode As Integer, Shift As Integer)
'キーキャンセル処理
End Sub
Private Sub pFrm_Unload(Cancel As Integer)
Cancel = Not CanCloseFlg
End Sub
みたいなぁ~。そんなことかよと思わないでくれろ。俺にしては良くやったと思ってる。
>>205 うおお…なるほどこれ一つ作っとけばフォームの使い方統一できる訳か…
確かにコード量減るしモジュール側からあらかた設定できるしこれは参考になるわ・・・
ACCESS難しいよ。なにこれ。
妙に回りくどくてわかりづらい。
VBAを使った方が簡単そうに思えるが逃げたら負けかな?
>>207 別にいいんじゃね? 細かい制御をしようと思えばVBAが必須となるし。
回り道に思えても基本を抑えたほうが後々何かと楽できるだろうけど、
社内SE的な立場なら、早く作れてなんぼだろうよ。
ぶっちゃけ、利用者は内部的にどのような処理が行われているなんかは気にせんだろう。
気にするのはレスポンスと使い勝手、あと当たり前だけど正しい応答だ。
後任者のために──なんて考える必要はないよ。
まず後任者なんてありえないから。どうしても必要なシステムなら
会社が外注に頼んででも同等のシステムを用意するだろうし。
>>207 VBAわかるならVBAでやった方が楽。
ACCESSの機能だけで色々やろうとすると何かもうVBで最初から組んだ方が
楽なんじゃないかと思うことが多々ある。
事務員の方が詳しいかもしれん。
210 :
201:2010/03/18(木) 15:55:15
ベータ版をダウンロードしたんですが、その後どうやってインストールしたらいいのかわかりません。
まず『いますぐダウンロード』のボタンをクリックして、『実行』をクリックしてしまったんです。
それでダウンロード完了したのですが、次に何も表示されませんでした。
探したのですがそれらしいプログラムはどこにも保存されておらず、本日付けの意味不明なデータがたくさん見つかりました。
どうしたらいいのでしょうか?
今、『保存』で改めてダウンロードしなおしてるんですが、『実行』でダウンロードしたものは削除したいのですが・・。
211 :
201:2010/03/18(木) 16:07:12
マイクロソフトのよくある質問を見ても、なんだか『保存』してダウンロードする方法しか説明がなくて
だったらどうして『実行』なんていう選択肢があるのか……てっきり実行選択したら、自動的にインストールまでやってくれるかと思ってクリックしてしまったので、どうしたらいいのかさっぱりです。
ダウンロード先は一時ファイルとしか表示されなかったので、全然わからず『ファイル名を指定して実行』で検索しても出てこなかったので
>>211 日時指定で検索して、それらしいファイルをかたっぱなしから削除するしかないんじゃないか。
もはやスレ違いどころか板違いな質問だと思うが。
>>208 使う人は気にしないよね。
>>209 やっぱり?
ありがとう!吹っ切れました。VBAで組むことにします!
DBには興味があるが仕事につながりそうにない
アクセスってみんなどんな場面で使ってるの?
俺の生半可な知識だとDBのユーザー側エンドで使わない人は全く使わなそう
逆に使う人はSQL勉強した方がいいって言いそう
>>214 別に仕事につながらないのなら、無理して使う必要はないんじゃない?
似たようなことはEXCELでもできるだろうし。
ただEXCELだとデータをいじられやすくないか。
フォームを使うにしても、ACCESSより一段ハードルが高いような気がするし。
まぁ、顧客管理とか在庫管理なんていうのが比較的ポピュラーなんじゃないの。
まぁそうなんだけど知りたいという単純な興味からです
どうせ今求職中の身なので
アクセスを当座で見につけてLAN組んでっていうのを考えると
やっぱり在庫管理も顧客管理もエクセルでやってそうですね
>>216 たしかこのスレ内だと思ったが、やはり仕事に活かせるシステムを教えてって質問した人がいたけど、
ニッチなシステムが多いから、使っているところでは重宝するが
それ以外の人にはまったく理解不能なシステムが多いっていう回答があったな。
基本的にはまさにそれ。
大元の情報を自分の部署用にカスタマイズとかが多いんじゃない。
まぁ、単独系のシステムも作ったけどね。
やっぱり「使える」というレベルになるには深く勉強しろと
なかなか先が長そうですね
でもやっぱりじわじわ勉強はしてみようかな
ありがとう
基幹システムのデータベースにAccessのリンクテーブルで接続して
データを抽出、加工してExcelに貼り付けて帳票を作るというのが多い。
いわゆる帳票の一つで、普段良く使う帳票はシステムで作ってあるけど、
たまにしか必要ないとか、イレギュラーなものはテーブルをよく知っている
ヘルプデスクのDBチームが作ることが多い。
そういえば昔いた会社で、ACCESSを基幹システムに繋げて見積システムにしてたな。
拠点同士でレプリケーション機能とか使ってるし、すぐにMDBが2G到達するしで、、、、
せめてMSDEにしろよと思いながら、横から生温かい目で見てたのを思い出した。
ACCESSはさ、中途半端に知ってるエンドユーザがうざいんだよな。
安易にテーブルのデータを手修正したり、更新クエリを多用してるのを見てると、
Excelでやるデータ加工よりも手順が確認しずらく危ない気がしてならない。
OS-XP access2003
Error 3197 って出てデータ開けない・・・
新しいデータベース作成してインポートも出来ないです
googleで調べてJETCOMPと言う物を使ったけど無理?でした
入力してたテーブルにある基本データだけでも取り出したいのですが無理でしょうか?
224 :
名無しさん@そうだ選挙にいこう:2010/03/19(金) 12:13:27
Access2007、AccessRuntimeでadp→ade作成
クライアントはWindowsXP SP3
サーバーはWindowsServer2003でSQLSERVER2008EE
300件を超える請求先への請求書とその控を印刷します。
フォームのボタンを押したら、請求先ごとにレポート「請求書」「控」を
印刷してクローズ、を繰り返します。
最初の数十件くらいは正常に印刷されるのですが、その後の数百件全て、
日本語(ひらがなや漢字)が全く印刷されなくなります。
よくよく調べてみると、1件印刷するたびに1〜2MBの物理メモリを消費しており、
使える物理メモリが無くなったタイミングでおかしくなってしまうようです。
VBAのプログラム上、開いたオブジェクトは全てCloseやNothingで解放してあります。
しかし、1度開いたフォームやレポートが使用した分の何割かは、Accessそのものを
完全に終了させないと解放されないままになってしまいます。
このメモリリークを解消する手立てを探しています。
アドバイスお願いします。
>>224 > よくよく調べてみると、1件印刷するたびに1〜2MBの物理メモリを消費しており、
Access の問題か?
スプール設定を調べてみろ、指定フォルダの容量とか
226 :
224:2010/03/19(金) 13:55:58
>>225 MSACCESS.EXEのメモリ使用量がぐんぐん増加します。
また、現象が起こった際に、フォーム上のボタンやラベルのキャプションが
一部消えてしまいます。(「印刷」「閉じる」等の文字)
これが、クライアント端末3台、テスト端末2台全てで発生します。
スプール設定というと、プリンタのプロパティの詳細設定でしょうか?
「すぐに印刷データをプリンタに送る」となっていたので、「全ページ分のデータを
スプールしてから…」に変えてみましたが、現象変わりませんでした。
指定フォルダの容量とは、adeファイルの場所のことでしょうか?
CやDドライブにフォルダを作成して、その中にadeを置いて動かしていますが、
Accessが使用する容量をどこかで設定できるのでしょうか?
C:\の空きが少なくて \System32\spool\PRINTERS が溢れるんじゃねえのか?
とりあえず、スプールフォルダを空きの大きい別ドライブに指定しろ
228 :
224:2010/03/19(金) 14:34:26
>>227 クライアント端末は今見れませんが、テスト端末ではCドライブの容量は
それぞれ30GB、70GB以上空いています。
連続で印刷しながら、Cの空き容量とspool\PRINTERS内を
モニタしてみましたが、数KBのファイルが出来ては一瞬で消えていくだけで、
特に溢れている様子はありませんでした。
2007ランタイムは「Windows Vista」「Windows XP Service Pack 2」のみじゃなかった?
Runtimeでadpってありなん?
パッケージソリューションに乗るの?
>>224 まず、リークの原因を突き止めることだと思う。
他のプリンタを使用した場合は?
印刷時のみ発生するのか?
OLEオブジェクト、サブレポートとかがリークしてないか?
>>224 レポートじゃなくて、きちんとデータが取得できてるかどうかシミュレーションしてみたら?
全ての環境で同じ状況ってんだから、コード見直すしかねーべな
>>229 まぁ問題ないと思うけど、そうなってるよね
>>224 >請求先ごとにレポート「請求書」「控」を
>印刷してクローズ、を繰り返します。
普通は取引先ごとにグループ化して作るものじゃない?
クローズする必要がわからん。
adpってSQLServerから非同期っぽくデータをロードするんじゃねかったけか?
ロードが間に合ってないってことがありえるんかな?
スプールやめてみたら。処理が追いついてないんだろう。
237 :
234:2010/03/19(金) 16:41:43
>>224 ExcelVBAでセルを色塗りするツールを作ったとき、セルが多すぎると
Excelが落ちるエラーがあった。
一定数色塗りするごとにブックのセーブをかけると落ちなかった。
仕組みはよく解らんが、OS(Windows)がExcelを立ち上げるとき、
アプリ領域、データ領域、機能ごとの作業領域という風にメモリを確保するらしい。
作業領域は意外と狭く実行中には広がらないようで、これを超えると
エラーになるが、保存処理を行うと開放されるということらしい。
今回のエラーも作業領域不足で、Accessファイルを保存すると
回避できるかもしれないが、Accessの保存はフォームや、レポートの保存で
アプリの保存というのはないんじゃなかったっけか?
だとすると回避策はないかもしれない。
そういえばCANONのプリンタってビジネス機でも早いほうのメモリを使うとかなかったっけ。
案外プリンタがメモリを食っているんじゃない?
SELECT * INTO [Excel 5.0;Database=c:\0000.xls;].[1-3月] FROM TMP;
とすると、TMPテーブルの内容をXLSファイルへエクスポートできた
のですが、シート名「1-3月」が「__3月」に化けてしまいます。
全て全角で「1−3月」とすると問題無いのですが、
半角文字と全角文字を混在する事はできないのでしょうか?
>>239 ダブルクォーテーション " の場合2つ "" つづけるとエスケープできるけど。
- の前に " をつけて [1"-3月] とかでできないかな?
241 :
240:2010/03/20(土) 01:18:47
>>239 ダブルクォーテーションやシングルクォーテーョンで
囲むとできないかな?
["1-3月"]
['1-3月']
242 :
224:2010/03/20(土) 03:37:54
みなさん、レスありがとうございます。
今まではまり込んで、まだ解決できていません…。
切り分けということで、いろいろな条件で動かしてみました。
1.Runtimeを使うので、DBに印刷設定のプロパティ値を保存して、
印刷前にプレビューで開いて設定値を取得・セットし、印刷する仕組みになっています。
このプレビューをレポートビューに変更したら、若干メモリ使用量の増加が緩やかになりました。
2.試しに印刷ロジックを全てコメントアウトして、レコードソースとなるデータ収集の
SQLだけループさせてみたところ、メモリ使用量はほとんど増加しませんでした。
3.VistaSP1上で動作させてみたところ、メモリ使用量の増加はかなり緩やかで、
運用にまったく問題ないレベルでした。
また、WindowsServer2003SP2上で動作させてみたところ、XPSP3上より
変動は激しいものの増加は緩やかでしたが、運用に耐えるレベルではありませんでした。
プリンタもいろいろ変えてやってみましたが、増加量に差はありませんでした。
OLE周りも散々チェックしましたが、リークの原因になりそうな箇所は見つけられません。
また、サブレポートは使用していません。
上記2の件から、印刷時のみの問題だろうと思っています。
メモリの増加具合をタスクマネージャでモニタしていて、気付いたのですが、
例えば印刷前のメモリ使用量が30とすると、「[プリンタ名]で[レポート名]を印刷中…」という
メッセージが出た際に60に増加して、印刷が終わると35になり、後は
65→40→70→45…といった感じに増えていきます。
これが100に達すると、レポートやフォーム上からキャプションやテキストが
消えてしまう、という感じです。
243 :
224:2010/03/20(土) 16:13:56
手を変え品を変えやってみましたが、やっぱり解決しません…。
プリンターのプロパティの詳細設定で「プリンタに直接送る」チェックしてもダメでした。
(「スプールを使わない」というのはこれでいいんですよね?)
224で「使える物理メモリが無くなったタイミング」と書いていますが、
よくよく眺めてみると、「使える仮想メモリが無くなったタイミング」でした。
処理中に物理も仮想も減っていきますが、仮想メモリ使用量が設定の上限に
達したところから、おかしな現象が起こりはじめます。
どうやっても
「Docmd.Open acReport, [レポート名]」でレポート/プレビュー→印刷、
「Docmd.Close acReport, [レポート名], acSaveNo」で閉じた後に、
その分のメモリが解放されません。
試しに、新規accdbファイルを作って白紙のレポートにテキストボックスを数個貼り付けて
OpenClose繰り返してみたところ、白紙なので量は少ないものの、
MSACCESS.EXEの使用メモリがいくらか増えたままになっていました。
請求書の罫線やデータ山盛りの状態だと、その分多いだけで、
これはAccess2007のバグなのかもしれないと思いはじめました…。
>>243 1回の作業で1万枚以上印刷しても問題はなかったけどなぁ。VB+mdbの環境だったが。
何かほかの作業をするとボタン等が消えてしまう現象は発生したが、動作的には問題はなかったし。
レコードソースが多段クエリだと、たまに印字されないとかの不具合が発生した気も。
>>242 >印刷前にプレビューで開いて設定値を取得・セットし
どんな値を設定してるのかわからんがクエリに値をセットして
レポートのレコードソースにはできないのか?
224氏の件、気になって確かめてみた。
Xpクライアント上でメモリが大きく消費されていく状況は確認できた。
環境としては
・Runtimeは、2007のバージョン2/ADOは2.8
・クライアントXpSP3/7-64、mySQL5.1へADO接続
・Report_Openで、ServerにSQL投げてレコードセット取得
解放したいという意味でコマンドを使わずやってみた。
Report_請求書:
ReportClose時 RaiseEventして呼び出し側に通知
呼び出し側:
Set rpt = New Report_請求書:rpt.Visible = Trueで呼出し印刷プレビュー表示
ReportCloseの通知があったら、Set rpt = Nothing
念のため呼び出し側Close時にも、Set rpt = Nothingをトライ
一応DoCmdでもやってみたけど同じっぽい感じ。
レポート呼び出す毎メモリ消費していくし、呼出し側閉じてもメモリへらねぇ
印刷プレビューしなきゃいいのかも知れんけど、Xp使わない方向でいいかなと俺は思ってる。
OSの問題?
Accessの問題?
>>247 Accessの問題じゃない? 印刷ってフォーマット時と印刷時イベントがあることから
単純に考えて倍の労力が使われている気が。
249 :
224:2010/03/20(土) 20:15:57
Accessの1ファイルの最大容量が2GB制限
32bitWindowsの1プロセスあたりの仮想メモリ制限が2GBか3GB
このあたりに引っかかっているんだと思います。
Docmd.Closeでちゃんとメモリ解放してくれれば、制限値まで使い切る
ことは無いはずですけど…。
>>244 今のと同じシステムを、
Windows98SE+MSDE(7.0)、Access2000
WindowsXP+MSDE(7.0)、Access2000
動かしているときには、まったく問題ありませんでした。
>>245 レコードソースは、単一のテーブルです。
Runtimeを使う場合、クライアント毎のレポートのページ設定を保存できないので、
そのプロパティ値(プリンタデバイス名、余白、用紙サイズ等)をテーブルに保存しておき、
印刷する前にプレビューやレポートビューで一旦開いたレポートオブジェクトにセットしています。
ただ、試しにこういうロジックを全部コメントアウトして、プリンタも設定も標準のまま
Docmd.Open acReport [レポート名]のみで印刷しても、現象変わりませんでした。
>>246 確認ありがとうございます。
やはり、バグなのか仕様なのか、Access2007でこの現象は再現性があるんですね。
おかげさまで諦めがつきました。
別adpファイルを印刷用に誂えて、メインadpからファイルごとOpen/Closeしつつ、
別プロセスで印刷していく仕組みにしようと思います。
ビル「Runtime では印刷させません」
アクセスがやっと桐に追いついたかなぁって思ったが、マダマダじゃん
【 システム環境 】 WindowsXP, Access2007
【 VBAが使えるか 】 いいえ
【 VBAでの回答 】 否
【 検索キーワード 】 リレーションシップ
業務マニュアルのDBをつくりたいです。個別の業務を副次業務としたメタ業務もあります。
「1チャーハンつくる」「2ラーメンつくる」「3お昼ごはんをつくる」という業務があって、1、2は3の
副次業務であるとき、1を選ぶとチャーハンのつくりかた、3を選ぶとチャーハンとラーメンの
つくりかたと3自身のマニュアルも一度に表示されるクエリーをつくりたいです。
副次のネストのレベルは無制限にしたいです。
そこでつぎのようなリレーションシップを作りました。t業務とt業務_1は同一のテーブルです。
ttp://www.dotup.org/uploda/www.dotup.org745186.jpg t業務:ID
t業務サブ:サブ業務ID
t業務_1:業務名
t業務内容:内容
のクエリーをつくれば
1 1 チャーハン いためる
2 2 ラーメン ゆでる
3 3 お昼ごはん 300円以内
3 1 チャーハン いためる
3 2 ラーメン ゆでる
のような結果が得られることを期待してました。
しかし、リレーションシップの保存後はこうなってしまいます。
ttp://www.dotup.org/uploda/www.dotup.org745188.jpg そもそもつくりかたがまずいような気もするんですが、どうしたらいいでしょうか?
読解力がなくてすまないが、抽出条件でサブ業務ID >=抽出条件で済むんじゃないの?
つうか、業務IDでチャーハン、ラーメン、お昼ご飯だけでよさ気だが。
254 :
253:2010/03/21(日) 15:44:39
<=だたorz
255 :
252:2010/03/21(日) 16:03:26
実際にはグラタンやらハンバーグやら晩御飯やらが順不同で
入力されてるので、単に「お昼ごはんより業務IDが小さい」だけで
その副次業務を抽出することはできないのです。
256 :
252:2010/03/21(日) 17:40:03
つらつら考えてみるに
業務ID 上位業務ID
1
2
3 2
4 2
5
6 4
上のようなテーブルがあるとき、業務IDに2を指定すると
業務ID
2
3
4
6
のテーブルかクエリーをつくれれば解決なわけです。
こういうのはVBAを使わないと無理でしょうか。
>>256 いちおうはできた。
(1) 上位業務IDの2を入れると3,4が表示されるクエリを作る。
(2) そのクエリを基に4から6が表示されるクエリを作る。
んで、(1)と(2)からユニオンクエリを作ったら
>>256の結果にはなった。
当然、業務IDに1,3,5,6を指定したときはその値だけが表示され、
4を指定したときは4,6という表示になる。
んでも、2→4→6→ ……と長々と続くときには
その段数分だけクエリを作らなきゃいけないけどね。
もっといい方法はエロい人に任せよう。
258 :
252:2010/03/21(日) 20:41:26
ありがとうございました。
段数無制限で再帰的につくれる方法があるといいんですが。
【 システム環境 】 Windows xp, Access2003
テーブルにあるデータ一列に置換で文字を変換(日々増えて、数百あるものを3種類に集約)
→・その結果を反映させて、それをあらかじめ並べてあるピポットで集計
→・これをExcelにシートを分けて、エクスポートって可能でしょうか?
置換しようとしたら、グレーゾーンで押せず、ピポットで型は作ったけど、
反映されず、都度Excelでエキスポートした後に置換、ピポットってやってるのが手間で。
260 :
256:2010/03/22(月) 17:59:52
間口広げます。
VBAでうまい方法があれば教えてください。
261 :
256:2010/03/22(月) 18:11:06
たびたびですみません。
結果はこう出力したいです。
業務ID レベル
2 1
3 2
4 2
6 3
>>260 >>261 > 間口広げます。
上から目線かよ
その前に、もう少しわかるように説明してくれ。
何をどうしたいのかよくわからん。
264 :
256:2010/03/22(月) 23:03:32
自分の間口広げてみました。
業務ID 上位業務ID
1
2
3 2
4 2
4 3
5
6 2
6 4
上のようなテーブルがあるとき、業務IDに2を指定すると
業務ID レベル
2 1
3 2
4 2
6 2
6 3
のテーブルをつくりたいです。レベルは従属の段数です。
2は直接指定されてるのでレベル1。3、4、6はレベル1の2に従属してるのでレベル2。
6はレベル2の4に従属してるのでレベル3です。
後だしになって申し訳ないですが、ひとつの業務に対する上位業務は複数になる場合
もあります。
265 :
256:2010/03/22(月) 23:05:39
266 :
259:2010/03/22(月) 23:08:13
自分もアドバイス頂けるとたすかります!
>>259 エクスポートではないけんど、コピーしてExcellに貼り付けってできたと思うから、
なんとかかんとか可能な処理じゃね?2003環境ないから責任はとらんぜよ。
>>256 間口広げるのはどうぞご自由になんだが、
こうやってみたけどうまくいかないとかさ、評価や意見を求めるならレスしやすいけど、
ズバリ解答っぽいのを求められてもなぁさらに後だしでしょ。はははは。
>>256 よくわからんなぁ。最初の例で言うと要は単品メニューとセットメニューがあるようなものか?
269 :
256:2010/03/22(月) 23:49:34
>>268 そんな感じです。チャーハンのレシピはさまざまな上位グループに従属します。
健康管理−食事−お昼ごはん−チャーハン
健康管理−炭水化物−チャーハン
家計管理−食費−チャーハン
材料−野菜−にんじん−チャーハン
みたいなイメージで。もっときちんと統制掛けないと自分でもわけわかめになりそうですけど
自由度がほしい。
もう少しで2010でますね。
64bitにしてみたいけど、アプリ配布先は2007以前+32bitOSが多勢だからどうしようか迷い中だぜ。
runtimeが早めに出てくれたらいいなぁと思う連休最終日。ちょっと鬱。
寝れないのでRibbonUIでも勉強するべ。
2010のランタイムはもう出てるじゃん
正式にリリースされてないものは、製品の一部としても検収してくれねぇってことよ
2010ランタイムは即時に出すって方針で、βでもほぼ同時に出した、製品版でもほぼ同時にでる予定になってる
おっほ、そうなのか。
SharePointとの絡みもあるからさほど後にならんだろうと思っていたのだけど、
ほぼ同時なら俺にはありがてぇ話だ。RTMでもほぼ同時になることをお祈りするわ。
275 :
名無しさん@そうだ選挙にいこう:2010/03/23(火) 20:02:22
もう入荷しないから
277 :
名無しさん@そうだ選挙にいこう:2010/03/23(火) 20:06:54
早速のお返事有難うございます。
そうですか、じゃあこの値段で買うしかないという事ですか・・・
別に無理に買ってくれんでも良いよ
別に2003に拘んなくても...という俺は2000でも使いこなしてない
280 :
259:2010/03/23(火) 21:58:49
>>267 ありがとうございました。やっぱり置換、ピボットはExcelエキスポートしてからにします。
何かうまく自動化できないもんですかね?
そもそも7万あったら桐が買えるんじゃね?
桐か・・・/(^o^)\
うん、桐が買えちゃうから、その2003は不要。
>>259 後出しになってる時点で終わってる。
質問は「こうやったら、こうなる」という例を
自分で説明できるようになってから。
ACCESS 2000+Windows XP
フォームA(表示中)のレコードソースに指定したテーブルに対して
フォームB(フォームAからモーダルオープン)で DELETE & INSERTしてからフォームBを閉じてフォームAに戻ったとき、
フォームAで DELETE & INSERT後を表示したいんだがどうもできないっす。
やってみたこと。
1.フォームAに戻ってきたときに Me.Refresh
2.フォームAに戻ってきたときに Me.Recalc
3.フォームAに戻ってきたときに Me.Requery
4.フォームBをオープンする直前で フォームAのレコードソースを ""にセットして
フォームAに戻ってきたときにレコードソースを戻す
もしかして無理?
>>285 フォームB閉じるときにForms("フォームA").Requeryで出来ないのかい?
単に、フォームAのレコードソースに同じものをセットし直せば良いんジャマイカ
288 :
285:2010/03/24(水) 17:37:45
>>286 どうもです、試してみましたが空白表示のままでした。
(念のため追加の許可TRUE、FALSE両方試したけどダメでしたorz)
>>287 どうもです、レコードソースのセットし直しでもなんか動いてくれなかったので、
フォームBからフォームAのコントロールに直接値をセットしたらOKでした。
例)Forms(FORMNAME_MAKE).項目名.VALUE = Me.項目名.VALUE ※ フォームBのソースで記述
ありがとうございます!
リボンのカスタマイズとか自前のリボン作れるようになったんだけどさ
使いどころがいまひとつピンとこないんよね。頭が固くなっちゃったかなぁ
けっきょく桐を買いますた。
OS: XP pro SP3
ACCESS: 2003(変更できません)
mdbの仕様等が変更できない状態で、
マシンの買い換えが必要になりました。
テーブルは50個で、合計で数万レコードあります。
ハードのスペックでどこまで改善されるかわかりませんが、
core i5(2コア+HTT=4コア) 3.4GHz
core i7(4コア+HTT=8コア) 2.8GHz
どちらがいいのでしょうか?
複数cpuに対応していなければ
周波数が大きなi5のほうがいいのでしょうか?
あと、メモリが前回2GBで、
今回4GB(実質3.3GB)なのですが、
メモリの効果はあるのでしょうか?
MDBの合計容量は1GBもありません。
あと、320GB 7200rpmの内周部と
500GB 7200rpmの内周部を使うのであれば
変化は感じ取れるのでしょうか?
(すべてメモリ上で処理する?)
データベースとハードウェアスペックにどれくらいの依存度が
あるかわかりませんが、可能であれば、
良い状態にしたいのでアドバイスお願いします。
そのPCで他に何かの作業をするかどうかは考えないとして、
CPU:前者
メモリ:効果なし
HDD:プラッタ容量次第では感じる
OS:xp ACCESS2003です
クエリの並べ替え→昇降順では並び替えられない文字列を、好きなように並べる式ってありますか?
お願いします
並び替え用のフィールドをつくる
>>291 メモリーを2GBつんでいたのなら4GBにしたところで効果はないだろうな。
でも4GB中2GB程度をRAMディスクにして、そこで作業すれば効果があるかも知れん。
おじさんが使いだした頃はAccessでODBC使うとネットワークトラフィックが・・・
とか言われたんだが、今時のギガビットネットワークでも同じなのかな?
>>296 仕様自体は変わっていないから通信量は変わらんだろうな。
ただ、相対的に回線使用率は下がっているだろうけど。
Me.サブフォーム.Form.Requery と
Me.Sub_サブフォーム.Requery
の違いを教えてください
>>298 上はサブフォームのリクエリ
下はメインフォームのコントロールのリクエリ
あぼーん
スレチだが、
>>302リンク先の別記事でGoogle Map API KeyをAccessローカルアプリ上でつこうてるよう
に見受けられるね
2010 RTM まだかいなっ♪
部門内のお仕事便利化ツールをお勉強がてら作りたいな〜と思っているんですが、
これから覚える開発環境としてはどちらがお勧めですか?
経験があるのはVBAとPHP+MYSQLくらいです。
1.Access2007+ADO+SQLServer2008Express
2.VB.net Webアプリ+SQLServer2008Express
>>305 両者を比較するにはスケールというか何かが違いすぎねか?
手っ取り早く始められるってんなら1.でえーじゃろうがなぁ、
ちょっと色がちがうけどSharePointってのも部門内ツールとして面白いよ
3 .桐V9 + Oracle10gXE
これが最強だろ
人すくねー。つまらんからRibbonXmlでも書いてひつまぶし。くいてー
<customUI xmlns="
http://schemas.microsoft.com/office/2006/01/customui">
<commands>
<command idMso="ApplicationOptionsDialog" enabled="false" />
<command idMso="FileExit" enabled="false" />
</commands>
<ribbon startFromScratch="true">
<officeMenu>
<button idMso="FileNewDatabase" visible="false" />
<button idMso="FileOpenDatabase" visible="false" />
<splitButton idMso="FileSaveAsMenuAccess" visible="false" />
<button idMso="FileCloseDatabase" visible="false" />
</officeMenu>
</ribbon>
</customUI>
309 :
名無しさん@そうだ選挙にいこう:2010/04/10(土) 21:33:59
桐にしとけ
質問です。
Access2007を使っております。今までメニューもフォームで作っていたのですが、
これをリボンで作ることにしました。普通のボタンは設置できて作れたわけなので
すが、以下の問題点がどう解消したらいいのかわかりません。
1.コンボボックスをどうやって設置したらよいのかわからない。
2.そのコンボボックスにとあるレコードをレコードソースとして割り当てたい
3.そのコンボボックスにある値(0番目のIDを対象)をVBAで読みとりたい。
4.そのコンボボックスのソースを更新したい
これらはどうやったらできるのでしょうか?
312 :
名無しさん@そうだ選挙にいこう:2010/04/11(日) 18:42:44
Access 2003でページ設定からの印刷設定が全く保持されないんだけど
これって対処可能なのかな不可能なのかな?
用紙サイズ・給紙方法を毎回変えるのがだるいんだけど Acc2000/Acc2007はともかく2003のはみつからんかった
20フィールドあるテーブルで全てを対象に抽出したい場合、どうするのが速度が速いのでしょうか?
検索は曖昧検索です。
フィールドは、テキスト、メモが入り混じってます。
今は、クエリでフィールドを全て一つのフィールドのように見立ててLikeでしています。
ただし結果の表示は遅いです。
>>314 20フィールドそれぞれで like検索して orで繋げて試してみたら?
tes
317 :
名無しさん@そうだ選挙にいこう:2010/04/14(水) 16:36:35
テーブルのデータをコピーしたいと思います。ただ当DBで他の作業をしたままコピーしたいので
時間よりも処理を軽くしたいと思うのですが、そういうのは可能なんでしょうか?
データのコピー先はLANで接続されたネットワーク越しになります。
>>317 MDBファイルを他所へコピーして、そこからテーブルのデータをコピーすれば、
他作業への影響は全く無いんじゃない?
test
桐ってOracleに接続できるの?
321 :
名無しさん@そうだ選挙にいこう:2010/04/14(水) 23:09:18
桐はDOS時代からオラクル接続が売りの一つ
そうだったんですか?初耳だな〜
323 :
名無しさん@そうだ選挙にいこう:2010/04/18(日) 19:40:32
何でこんなに高いんでしょう。
三万じゃなく一万五千くらいなら買うのに
googleのなら無料だよ!
ライセンス体系は見直した方が良いとは俺も思うな。
326 :
名無しさん@そうだ選挙にいこう:2010/04/18(日) 20:36:18
>>324 それは何でしょうか?フリーソフトか何かですか?
327 :
名無しさん@そうだ選挙にいこう:2010/04/18(日) 21:10:33
>>323 通販でアカデミックかアップグレード版を買うべし
>>323 長年、Access使ってきた身としては、特に高いとは感じないな。
様々なアプリケーションを作ってきたけれど、十分価格以上のリターン
を得られたし。金だけじゃなくてね。
高いと感じる人は、オフィスとしてのAccessっていう位置付けしか感じ
ない 使っていないからだと思うよ。VBA駆使したり他のデータベース
のフロントエンドとしての使い方だとか、VBの代わりとして使うとかそう
いう開発環境としての使い方はしていないでしょ。
住所録だとか台帳だとか、そういったお決まりで尚かつVBA駆使しない
で作るアプリケーションとかね。さらに一歩踏み込んで開発環境として
使う 使い道を探る 応用してみると、この価格は価格相応だと思うよ。
でもMSだからなぁ。
2000でSR-1が来るまでは辛かったぜ。
金もらってもいいと思うくらいのレベルだったよ。
>>329 Access2007でも、終了時に最適化を行うと最適化失敗したあげくに
ファイルが消滅するバグがあったよ・・・・あれは最悪だった。
パッチやSPが出るまでヒヤヒヤものだった。
331 :
名無しさん@そうだ選挙にいこう:2010/04/19(月) 01:01:14
>>327 学生じゃないし、グレードアップも何も前ヴァージョン買ってないので。
ベータ版を使用してますよ。使えるうちにデータ作るつもり
>>323 Access2007は22,000円位で実売してるだろ
自分はoffice2010へのアップグレードを考えて
アップグレード版のプロフェッショナル買ったけど
access2003の以下の症状で困ってます。
1.access2003のレポートでword2003文書を貼り付けて使用していた。
2.パソコンがクラッシュしリカバリ
3.リカバリ後、access2003のレポートに貼り付けた、word2003文書を編集すると
貼り付けた文書のサイズが小さくなる。
リカバリ前は、貼り付けた文書を編集してもサイズは変わりませんでした。
対処方法はどうしたらいいのでしょうか?
パッチをあてる
Access2010 RTM 記念sage
backstage ちょっとおもしろいねぇ
配布アプリケーションの設定とかに使えそうな気配
64bit版で作成したaccdeは32bit版では作動しねぇの忘れてたぁ。ぐぬぬぬ
32→64も同じだぁ。ぐぬぬ
VBA7へのVerUp!
まじで?
32→64は問題なさそうだが、そうもいかないの?
339 :
337:2010/04/23(金) 16:47:08
コンパイル結果が64/32で違いがあるんだろね
64ビットで作成されています的なエラーが出て実行できない
ソースコード参照可(accdb)で適切なコード書いてれば、64/32でいずれでも実行できるかと。
一定の範囲内で2007での実行も可能かも知れんね。
マクロとVBAが違うから2007→2010は行けそうだが、2010→2007は動かんかも的な。
バージョンの違いを受けた印象を距離で示すと、
桐- ∞ -2000-2003-----2007----------------2010(32)--2010(64)
いろいろ面倒そうだけど、64bit使いたいのよのぉ。冷静に考えればメリット少ないか。
340 :
名無しさん@そうだ選挙にいこう:2010/04/24(土) 19:11:22
高すぎるが、これって待っていれば新しいバージョンどんどんでて
そのうちに安くなる可能性ってある?(二万円くらいならなんとか)
ようやく2010のレイアウトに慣れてきたばかりだと言うのに・・・
ところで、何が違うんだ?
343 :
名無しさん@そうだ選挙にいこう:2010/04/25(日) 07:50:48
長いことjetで使っていたaccessのシステムをMSDEにしようと思っています。
ただデータはサーバー側に置くのは当然として
プログラムは今までどおりクライアントに置いた方がいいのか迷ってます。
サーバーに置いても構わないのならプログラムの修正の時簡単ではいいのですが?
どなたかアドバイスいただけないでしょうか?
MSDEってどういう意味で使ってるんだ?
俺が無知なだけなのかもしれないけど。
でも、プログラム修正の手間を考えたらMDBからSQLServerに
接続して使う方が楽なんじゃないかと思うんだけど…。
Thinクライアントで、ってこと?
プログラムはADP内じゃないの?
Access2002のファイルを2007に変換したいのですが、
[ホスト名]のユーザAdminが排他的に開いています。データベースが使用可能になった時点で、再度実行してください。
と出てしまい、変換できません。
このファイルをアップサイジングしたいのですが、
一度2007形式にしないとダメなようで困ってます…。
>>346 > アップサイジングして終了じゃないか。
おお、すっかり忘れていた。こんな便利な機能があったんだ。
どうもありがとうございました。
ACCESS2000
すまそ、ACCESSというよりSQLでなんだが、
以下のようなテーブルからコードが"A"と"B"が両方存在する連番を1回で検索したい場合、どんなSQL文を書けばよい?
(以下のテーブルを検索した結果 "00001"だけ返ってきて欲しいのだす)
連番、行、コード (主キー:連番、行)
0001 01 A
0001 02 B
0002 01 A
0003 01 B
0004 01 B
0004 02 C
主キーが「連番、行」ってどういう意味?
連番と行をつなげたものを主キーにしてるってこと?
>>350 SELECT 連番 FROM T WHERE コード IN ('A', 'B') GROUP BY 連番 HAVING COUNT(*) = 2
または
SELECT t1.連番 FROM T t1, T t2 WHERE t1.連番 = t2.連番 AND t1.コード = 'A' AND t2.コード = 'B'
同じ連番内に同じコードが複数存在することはないの?
あるなら
>>352でもまずいと思うけど
354 :
名無しさん@そうだ選挙にいこう:2010/04/29(木) 17:09:10
辞書データみたいなテーブルがあるとして
外来語というかカタカナだけで構成された文字列を抜き出すには
どんな抽出条件を書けばいいんでしょう
355 :
名無しさん@そうだ選挙にいこう:2010/04/29(木) 17:13:50
ごめんなさい、途中で送信しちゃった。
like "*[ア-ン]*"
この書き方だとよけいなものも引っ張り出されてきます。
ア-ン
一般的にGWだ。俺は仕事だ。だけど少々暇だ
てなわけで、2010でデータマクロをいじってみるぜぇ
ときに、データマクロって実際のところ何に使うよ?
ログとったりタイムスタンプっぽくしてみたりか?
非正規化するあたりで、親子関係のテーブルでレコード数とか関連を補うっつー感じかな?
>>357 > ときに、データマクロって実際のところ何に使うよ?
主な目的は、Webに上げた時の参照整合性を自分で組む
359 :
名無しさん@そうだ選挙にいこう:2010/05/01(土) 12:09:36
Windows7 Access2003
で開発しています。
自分のパソコンでは正常に動作するのに
ほかのパソコンで実行するとエラーが発生します。
環境はエラーが起きるマシンもWindows7 Access2003です。
確認できる症状としてはDateadd関数で
実行時エラー'5' プロシージャの呼び出し、または引数が不正です。
と表示される。
SQL文にてReplaseで対象文字列の変換をかけているけど、変換が行われない。
(SQLを流すと特にエラーも発生せず、そのまま実行される)
ちなみにInsertとかDelete,Updateは正常に動く。
このような症状です。
エラーが起きるマシンでAccess2003を再インストールしましたが、
症状はなおりませんでした。
参照設定とか確認してみましたが、特に変わったところとかありません。
エラーが起きるマシン以外の他のマシンにて動作確認してみましたが、
正常に動作しました。
何かが壊れているのでしょうか。
>>359 Microsoft Data Access Components (MDAC) のバージョン違い。
361 :
357:2010/05/02(日) 01:29:54
>>358 >主な目的は、Webに上げた時の参照整合性を自分で組む
そーなんだろーなぁ。と思いSharePoint2010も用意してみた。
ええなぁと思った。WSSに比べるとだいぶ使いやすくなってんのなぁ。
しかし、コスト的に敷居が高いなぁ。foundationでもaccess使わして欲しいぜ
マクロの役割が向上したということで、どううまく使うかってとこか。
362 :
名無しさん@そうだ選挙にいこう:2010/05/04(火) 19:44:10
すいません、スレの主旨から外れるのですが、
「アクセスでこんなことが可能ですか?」という質問させてください。
(質問)
現在使用中の会計ソフトには、仕訳データをテキストファイルでエクスポートする機能が付いています。
このテキストファイルを取り込んで、次のように総勘定元帳を出力できるでしょうか?
・任意の勘定科目を指定
・任意の部門を指定
・任意の期間を指定
もちろん、仕訳データは「勘定科目」「部門」「期間」といった情報を持っています。
よろしくお願いいたしますm(_ _)m
>>362 魔法の道具じゃねぇから、出来る出来ないはYou次第
364 :
名無しさん@そうだ選挙にいこう:2010/05/04(火) 23:32:09
>>362 Accessにはテキストデータを[テーブル]にインポートする機能がありますので、
会計ソフトの仕訳データを利用することは可能です。(
>>364)
ただし、インポートしたデータを希望される形で抽出したり印刷したりする仕組みは
ご自身で作り込む必要があります。(
>>363)
366 :
名無しさん@そうだ選挙にいこう:2010/05/05(水) 08:15:11
>>362 会計だの定型つーか、ありがち想定内の処理は、
桐にしとくと簡単確実
access2010いじり倒しましたぁ
アプリケーションパーツとフィールドテンプレートは、ちょろっと便利ですなぁ
ナビゲーションウインドウは画面遷移がすっきりするのですが、利用の際は検証したほうがよさげ
分割フォームは2007での不具合がいくつか解消されている模様
標準になったWebブラウザコントロール、以前のものより使えそう。ぐぐるまっぷ表示でもするべ
コントロールのサイズを規定値として記憶してくれるのはええなぁ
マクロエディタと式ビルダ、IntelliSenseが効くから使いやすくなった
ショートカットメニューバーをRiboonXmlで運用できたらよかったなぁ
GWそろそろ終了のお知らせ
368 :
367:2010/05/05(水) 13:06:52
ナビゲーションフォームでしたね
369 :
名無しさん@そうだ選挙にいこう:2010/05/05(水) 14:19:30
ブラウズツゥーマクロアクションは試したかい
BrowseTo試したよ。
ヘルプには、新しいウィンドウを開かずに form1 から form2 に移動する場合に使用します。
となってるけど、普通にForm1閉じてからForm2開く。
通常のフォームだと
Form1:Unload→Deactivate→Close→Form2:Open→Load→Activate→Current
SubFormだと、
Form1:Unload→Close→Form2:Open→Load→Current
なのだけど、
UnloadでCancel=trueとした場合にありゃりゃって感じ
371 :
名無しさん@そうだ選挙にいこう:2010/05/05(水) 21:35:54
色々と報告乙でやんス
非常に参考になった
ソフトウェアバージョン:WindowsXPPro,Access2003
VBAにのブレークポイントについてです.
ブレークポイントを設定したのですが,テスト中に中断されません.
ブレークポイントを有効にする方法はありませんでしょうか?
検索の結果,
http://support.microsoft.com/kb/299257/ja の文書を参考にしようとしましたが,
[ ツール ] メニューの [ スタートアップ ]が見つからず手詰まりになってしまいました.
よろしくお願いします.
374 :
372:2010/05/06(木) 18:10:23
自己解決しました
2010のパッケージソリューションウィザードがダメな子なのじゃ
セキュリティ設定のレジストリキーをまちがっとるので、設定が有効にならんの
ご利用の方は、修正が来るまでキー追加して使うとよいのじゃ。
ファイルのパッケージ追加できない事象もある。ヒッヒッフー
などと意味不明な供述を繰り返しており
動機は未だ不明である
377 :
名無しさん@そうだ選挙にいこう:2010/05/08(土) 17:58:01
Access2003でデータシートフォームを使用しています。
金額を入力させる場所があるのですが、そこの値が変更されたらUpdate分でこのレコードのフラグの値を変える
事をしています。
Update文で変更するのはいいのですが、変更された値を画面上に更新したいのです。
そのままフォーカスを離れるとデータの競合というダイアログが表示されます。
調べたらDoCmd.RunCommand acCmdSaveRecordを使用するといいみたいなことが書いてあったので、
AfterUpdateの中に記述したのですが、同じくデータの競合のダイアログが表示され、その後に
実行時エラー3197
「ほかのユーザが同じデータに対して同時に変更を試みているので、プロセスが停止しました。」
と表示されます。
やりたいことは、金額入力欄の値が変更されたら、このレコード内のフラグを変更して、
その変更されたフラグの値を見て条件書式で色を変更したいのです。
Updateで変更したフラグの値が画面上でリアルタイムに変更されればいいのですが、、、
何かいい方法はないでしょうか。
Private Sub 金額_AfterUpdate()
'手動変更されたらフラグを立てる
'1セット(手動更新された)
Tmp_SQL = "UPDATE ●●テーブル SET 入力チェック=1 WHERE ●●コード=〜・・・・"
DoCmd.RunSQL Tmp_SQL
DoCmd.RunCommand acCmdSaveRecord←ここで落ちる
End Sub
フラグ使わずに、金額入力欄のダーティープロパティで出来ないか?
379 :
377:2010/05/08(土) 18:53:05
>>378 すみません、事故解決しました。
本当にありがとうございました。
Access2010 βで俺が報告した不具合が治ってねーな
表形式でESCキーアンドゥすると表示位置がズレる
Access97/WindowsXP
不一致クエリで二つのフィールドを比較して一致するデータがない名前(間違っている名前)
を抽出してるんですが、ここから更に名前を正しく書き換えたいんです。
クエリだと編集できないのでフォームでも同じような事って出来ないでしょうか?
>>381 * *
* MURIです +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
Access2003で詳細の部分に編集ロックをかける事はできますでしょうか。
詳細の部分に入っているコントロールに対して一つ一つ編集ロックをかけると手間かかるので
詳細の部分自体に編集ロックをかけられないかと思ったのです。
詳細セクションの全てのコントロールをロックしたいの?
385 :
383:2010/05/10(月) 13:07:11
For each control In Section.acdetail.contorols じゃダメか?
いま出先で記述不正確だが
一括でもAccessの中の人は同じことを行ってる
387 :
383:2010/05/10(月) 13:42:36
>>386 * *
* できました! +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
388 :
350:2010/05/10(月) 14:38:55
>>352-353 どもです、GW明けで何のことを質問したかすっかり忘れてたのを今日思い出したorz
INとHAVINGを使って実現できました、どうもありがとう!
ちなみに同じ連番内に同じコードが複数存在することはあるけど、
連番とコードでGROUP BYしてから INとHAVINGを使ったらいけたよ。
>>351 テーブルのデザインビューで項目「連番」と「行」の2行に主キーを設定した状態だよん。
>>382 無理ですか…(´・ω・`)
ありがとうございました
もぐにしつこい人が沸いてるな。
あーうー、ここにきて64にしよか32にしよか迷ってる。
どーすっかなー。
基本的に64版で開発して、そのまま64用パッケージ作って、VitualPC上の32版で32用パッケージ製造か。
2010Runtime使ってもらうことを前提として、、、ん、2003/2007製品版インストール済みに2010Runtime
インストールするとどうなるか未確認だったわ。ちと確認してくる。後で勝手に報告しにくる
>>391 2003でexcelにエクスポートしたいって件かな?
お付き合いしてる人はえらいよなw
解決したっぽいけど、結局どうすんだろな。。まさかのXML書き出してxlsx製造するんだろか
テンプレ用意してODBCで流し込めばいいか。
Null、Falseを論争しているやつかと思った。
2010 Updated 関数はメモ型フィールドではサポートされていません。orz
395 :
392:2010/05/13(木) 13:14:24
チラ裏言われようが勝手に報告
2007/2003製品版インストール済み環境に2010Runtimeいれっと、
いつもの通りofficeのprofile設定が走るぜ。わかってればなんともないが
ユーザが騒ぐかも知らんからちとやだな。
64で開発して、2010-32/64と2007の配布3本立てでいくわ。
accessインストールしてるユーザすくねぇしよ。腹くくった。
>>393 そっちもなかなかだな
>>394 [F_メモ型] <> Old.[F_メモ型] ではあかんかな。試してないけど。
396 :
392:2010/05/13(木) 13:32:49
>>394 Oldもだめだったね。o....rz
メモ型フィールドのLenか何かを別フィールドで格納しておいて、
そっちでUpdatedを見る感じならだね
2010runtime修復インストールすると、プロダクトキー入力のオプションがでるんだぜ。
>>395 とも、
Old.[F_メモ型] は、メモ型であるために使用できません。 orz
つーか、変更前データマクロでは Old. 自体が無理かなぁ。
>>397 変更前でOld使うのはもんだいないっしょ。データ型に制限あるっつーことで。
後考えられるのは、メモ型フィールド同士の比較ができるとして、
名前付きデータマクロにパラメータで渡して比較して処理って感じ?
パラメータにメモ型使えるんかな。あーでも、変更前ってとこから外れちゃうな
評価版がきてたのね....
変更前でも Oldありなんだな、ありがd
実はまだ余り試していない
やはりDBでメモ型は邪道だ
邪道だけど、それがACCESSの良いところ。
402 :
391:2010/05/13(木) 18:45:51
>>393 一度閉じたスレ建て直してまで
マジ、こえーよ。
絶対、関わりたくない人種だw
知識をひけらかしたいだよ
404 :
名無しさん@そうだ選挙にいこう:2010/05/16(日) 17:05:29
Access2007を使用しています。
アクションクエリを実行時に警告メッセージを出さないようにしたいのですが、上手くいきません。
メッセージの設定という項目で表示を出さないように設定するため、
すべてのアクションを表示を選択して表示させるということまでは調べてわかりました。
しかし、それが選択できない状態になっていて、メッセージの設定が出せません。
セキュリティセンターで、開いているデーターベースファイルを信頼できる場所に設置して開いているのですが…。
全てのアクションを表示を選択可能状態にさせるにはどうしたらよいでしょうか?
>>404 > メッセージの設定という項目で表示を出さないように設定するため、
> すべてのアクションを表示を選択して表示させるということまでは調べてわかりました。
どこを調べれば、そんなトンチンカンなことが書いてあるのよ?
「Access メッセージの設定」でぐぐるとでてきたのですが・・・。
あと、Accessクエリの本にも載っていました。
君はあまりに頭が良すぎるみたいだ
どんなに検索しても、どんな本も、君には無意味だろう
>>407 おそらく自分が勘違いしてると思うのですが、その点をご指摘願えないでしょうか・・・。
どんな指摘も無意味の気がするが、とりあえず…
> 「Access メッセージの設定」でぐぐるとでてきたのですが・・・。
> あと、Accessクエリの本にも載っていました。
なのか?
そうなのか?
指摘を求める前に、本当にそうなのか? ただ適当に書いただけじゃないのか?
本当にそうなら、それで良いじゃん
>>410 ああ、君が正しかった
レジストリ弄ってサンドボックスモードを解除してみれ
ヘルプで調べて
マクロの使い方の話なんだなw
クライアントの設定かと思ったぜ。あーははは
言葉足らずですみません。
アドバイスありがとうございます、やってみます。
accessを本で勉強しておりますが、DAOが出てきてから疑問が湧き進めません。
DAOのメリットがわからないのどの状況で使えばいいのか分からないのです。
DAOを介して操作するのはなんの為なんでしょう。
最初はaccessが無くてもVisual Basicで作ったソフトから操作するためなのかな?と思っておりましたが、それならランタイムでもいけます。
抽出や入力等はクエリでもVBAでも同じ事が出来ますよね。
DAO使用を前提にVBAを書いて行く理由等を教えていただけませんでしょうか。
>>414 > 抽出や入力等はクエリでもVBAでも同じ事が出来ますよね。
抽出や入力等は、もともとAccessで出来るだろ
Accessアプリケーションレベルで出来ないことを、オマケに付いてるVBAで扱いたいが、
データベーステーブルはVBAで扱えるオブジェクトでないから普通には無理
DAOを通せばデータオブジェクトとして扱えるっと
こんな不自由なことしてるから不安定でバグが多い
全て専用で出来てる桐の安定感が気持ち良く感じる
>>414 accessって単体で動いているわけじゃないのよ。
実際にはJETとかのDBエンジンが本体で、
accessはDBを扱いやすくするためのお助けツールみたいなもの。
標準の機能でなければ、プログラム的手続きを踏んで接続する必要がある。
つうことじゃないの?
返答ありがとうございます。
accessを介さないでデーターベースをいじる方法としてDAOがあると考えてしまえばいいのでしょうか。
(メリットは速さ)
単にVBAではaccessが間に入ってしまう(ある程度は早くなるが)
そういう認識でもいいのでしょうか? 自信ないですが。
419 :
ジョニー:2010/05/17(月) 23:53:03
すみません。accessの初心者なので、当たり前的な質問をさせてもらいます。
accessのデータ型で「テキスト型」のフィールドプロパティのフィールドサイズ
で0を入力するとどんな効果があるのでしょうか?
>>419 いくら初心者でも、自分で確認できるものは人に聞くなよ。
ちなみに0を指定していったんテーブルを閉じ再度開くと255となる。
テキスト型はあまりにも短い文字列では(10文字程度)、効率が悪くなる。
というか、フィールドサイズ0のテキスト型フィールドを作ることに
いったい何の意味があるのか、そっちの方を聞きたい。
漏れの想像力を超えていて、何も思いつかない。
気持ちはわからんでもない。
意味が無いと思われる設定がなぜできるのか?
みたいな感じだろ?
2010試用の方に問い合わせですよ。
[テーブルツール]タブ-[フィールド]タブ-[フィールドサイズ]でフィールドサイズの変更ってさ、
0〜255を指定しろよって怒られること多いんだが、俺だけか?
正直、その契機もわからんのである。
424 :
423:2010/05/19(水) 18:35:04
>>423の件、なんとなく原因がわかった、、
64bit版がダメみたいだ。32はすこぶる調子がよい。
別件、64bitはIMEModeプロパティが効かないダメな子になってる。とても面倒だ
実際使って、32bit推奨ということは骨身にしみた
425 :
423:2010/05/19(水) 19:25:40
連続になってて申し訳ない。
気になって追試した結果、
>>423 >>424の件は大丈夫かもだ。
OSインストールから始めたクライアントだと問題が見られなかった。
なので、
調子悪かったらクリーンな状態のPCにインストールすることを検討したほうがいいかも
ということに訂正させておくれ。
426 :
sage:2010/05/22(土) 17:56:05
Access2007を使っております。
このたび、設問A/B/C/D/Eに対する回答の集計を
とりたいのですが・・・
まず、
名前 ,A,B,C,D,E
Wさん,2,1,1,2,2
Xさん,2,2,2,1,1
Yさん,3,2,1,3,2
Zさん,2,2,3,3,1
というデータから、
A 1: 0件
A 2: 3件
A 3: 2件
B 1: 1件
B 2: 3件
B 3: 0件
C 1: 2件
C 2: 1件
C 3: 1件
D 1: 1件
D 2: 1件
D 3: 2件
E 1: 2件
E 2: 2件
E 3: 0件
というような、集計結果を作りたいのですが、簡単に作る方法ってないでしょうか?
クエリで全パターンでカウントを取るとかすれば出来るのは解っているのですが、もっと簡単に集計を取れないでしょうか?
427 :
426:2010/05/22(土) 17:57:13
質問がながくてすみません、さらに[sage]使う位置間違えてしまって
あげてしまいましたが、なにとぞご教示ください
428 :
名無しさん@そうだ選挙にいこう:2010/05/22(土) 18:33:48
元のデータがそれだと簡単に集計するのは無理だと思う。
終了〜
select 'A' as 回答項目,A as 回答番号 from テーブル
union all
select 'B' as 回答項目,B as 回答番号 from テーブル
union all
・・・
でまず縦持ちにバラす
あとは外部結合とかgroup byでなんとかなるっしょ
設問の数+1個のクエリを作って良いなら、設問毎の集計を行うクエリを作って、
最後にユニオンクエリでくっつければいいと思うけど、設問の数が膨大で
もっと簡単に作りたいってことならちょっとわかんないや…。
Excelならピボットで簡単。データをバラすのは同じだけど。
432 :
名無しさん@そうだ選挙にいこう:2010/05/22(土) 23:38:36
大体さ、A 1: 0件 って時点で簡単に出すのは無理っしょw
もっと簡単にしたいということが、割と難しいことがある
>>432 回答項目の数にあわせたダミー的テーブルを作って、それと外部結合
NULLはゼロに置き換える
全然難しくないよ
435 :
426:2010/05/23(日) 05:56:01
>>429-432 なるほど・・・
ユニオンクエリですね
色々とご助言ありがとうございます
うまくいったら報告いれます!
436 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 07:27:21
>>434 ああ、ダミーテーブルを作ってLeft joinすれば良いけど、それは質問者の簡単の範疇じゃないと判断した。
437 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 07:34:37
まとめると
@設問をばらばらにする。(union)
A設問を集計する。(group by)
Bleft join用のテーブルを手作りする。
CAとBを結合する。
確かに簡単なやり方ではあるが、質問者には簡単なやり方じゃないと思うな。
438 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 07:51:05
@とAをまとめると
SELECT Max("A") AS 質問項目, [テーブル1].A as 番号, Count([テーブル1].A) AS カウント
FROM テーブル1
GROUP BY [テーブル1].A;
UNION ALL
SELECT Max("B") AS 質問項目, [テーブル1].B as 番号, Count([テーブル1].B) AS カウント
FROM テーブル1
GROUP BY [テーブル1].B;
UNION ALL
SELECT Max("C") AS 質問項目, [テーブル1].C as 番号, Count([テーブル1].C) AS カウント
FROM テーブル1
GROUP BY [テーブル1].C;
UNION ALL
SELECT Max("D") AS 質問項目, [テーブル1].D as 番号, Count([テーブル1].D) AS カウント
FROM テーブル1
GROUP BY [テーブル1].D;
UNION ALL
SELECT Max("E") AS 質問項目, [テーブル1].E as 番号, Count([テーブル1].E) AS カウント
FROM テーブル1
GROUP BY [テーブル1].E;
439 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 07:54:29
>>438 を実行すると
質問項目 番号 カウント
A 2 3
A 3 1
B 1 1
B 2 3
C 1 2
C 2 1
C 3 1
D 1 1
D 2 1
D 3 2
E 1 2
E 2 2
欠番が出る。
440 :
426:2010/05/23(日) 08:24:36
>>439 A1
A2
A3
B1
B2
B3
…
というテーブルを作って、マッチング(選択クエリ)
で何とかしようと思います!
441 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 08:42:31
>>440 テーブル2にこれを作る
質問項目
A 1
A 2
A 3
B 1
B 2
B 3
C 1
C 2
C 3
D 1
D 2
D 3
E 1
E 2
E 3
442 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 08:44:10
づつき
SELECT "A "& [テーブル1].A as 質問項目, Count([テーブル1].A) AS カウント
FROM テーブル1
GROUP BY [テーブル1].A;
UNION ALL
SELECT "B "& [テーブル1].B as 質問項目, Count([テーブル1].B) AS カウント
FROM テーブル1
GROUP BY [テーブル1].B;
UNION ALL
SELECT "C "& [テーブル1].C as 質問項目, Count([テーブル1].C) AS カウント
FROM テーブル1
GROUP BY [テーブル1].C;
UNION ALL
SELECT "D "& [テーブル1].D as 質問項目, Count([テーブル1].D) AS カウント
FROM テーブル1
GROUP BY [テーブル1].D;
UNION ALL
SELECT "E "& [テーブル1].E as 質問項目, Count([テーブル1].E) AS カウント
FROM テーブル1
GROUP BY [テーブル1].E;
これで集計する
443 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 08:44:50
つづき
結果は、
質問項目 カウント
A 2 3
A 3 1
B 1 1
B 2 3
C 1 2
C 2 1
C 3 1
D 1 1
D 2 1
D 3 2
E 1 2
E 2 2
444 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 08:45:59
つづき
SELECT [テーブル2].質問項目, IIf(IsNull([カウント]),0,[カウント]) AS 件数
FROM テーブル2 LEFT JOIN [テーブル1 クエリ] ON [テーブル2].質問項目 = [テーブル1 クエリ].質問項目;
結合すると
質問項目 件数
A 1 0
A 2 3
A 3 1
B 1 1
B 2 3
B 3 0
省略・・・
>>440 いきなりSQLで書くんじゃなくて、
>>430みたいなやり方をするなら
回答番号テーブルはそんなに複雑にしなくてもいいんじゃないかな?
↓こんな感じ。
番号
1
2
3
で、各々の設問にばらした集計用のクエリに回答番号テーブルを
外部結合すると、回答数が0の番号もちゃんと「0」と表示されるよ。
各々の設問で集計用のクエリができたら最後にユニオンクエリでまとめる…と。
これならSQLを書くのは最後だけでいいし。
…まあ、どっちでもいいのかな。
>>426のわかりやすい方法で。
ファイル作ったから、ほんとはそれを見てもらうのが一番早いんだけど。(笑
446 :
426:2010/05/23(日) 10:12:59
>>445 なるほど、設問テーブルと回答番号テーブルを別々に
作って、集計とると言うのも頭良いですね!
あるいは、
名前 ,A,B,C,D,E
Wさん,2,1,1,2,2
Xさん,2,2,2,1,1
Yさん,3,2,1,3,2
Zさん,2,2,3,3,1
の各項目にタイトルの値A〜Eまでの値を付与できると
名前 , A, B, C, D, E
Wさん,A2,B1,C1,D2,E2
Xさん,A2,B2,C2,D1,E1
Yさん,A3,B2,C1,D3,E2
Zさん,A2,B2,C3,D3,E1
こういう感じに出来るので、
このファイルにあるA1〜E3までのカウントをとると言うやり方
と言うのもありなんですかね?
折角動く例を書いてくれている人もいるのにスルーかよ。
酷い奴だな。
448 :
426:2010/05/23(日) 17:59:44
>>441-445 できました!
解りやすくまとめていただいてどうもありがとうございました!
この後、このデータをCSVに落として、定型のExcel文書に差し込んで
集計作業完了です(ここは私の得意分野なのでVBSで一気に差し込んでしまいます)。
SQLだと抽出条件を変えたい場合も"Where="で変えられるので非常に便利ですね
VBSで2次元テーブルでやろうとしたら非常に手間がかかるのと処理時間がかかって
しまって困ってしまっていました
>>447 すみません、スルーしたわけではないのです・・・
449 :
名無しさん@そうだ選挙にいこう:2010/05/23(日) 18:36:39
上司が「お前、Accessを扱えるようになれ」と言って、
何の目的で、誰が使うのかを聞いても答えてくれないのですが、
一から教えてくれるような、「Accessの勉強するならこれ!」って本はありますか?
または、お勧めの出版社だけでも教えていただけると幸いです。
私のほうは、Excelの簡単なマクロなら組めるレベルです。
>>450 「アクセス入門」みたいな本だったらだいたいどれも同じだから適当に買ってOK。
一回読んだ開かなくなると思う。
DBに触れるのが初めてならDBの解説にページを割いているものがいいと思う。
ACCESSって本体が持ってる機能とマクロだけでそれなりのことができるんだけど、
できる限りVBAでやった方が他への応用が利くので「アクセス入門」が良いのか
どうかのかは何ともいえん。
Access本体の機能をある程度理解するのが先だと思う
視覚で追えるリレーションやクエリは、後学のためになる
データベースとか正規化に関する本を読んどいたほうがいい気が...
455 :
名無しさん@そうだ選挙にいこう:2010/05/25(火) 18:57:35
正規化とリレーションを理解した上でのテーブル設計、
クエリによる結合の仕方(内部、外部、ユニオン)できればSQLで
での理解ができるようになると、後でVBA上でクエリを扱うようになった場合
有利になるのでがんばって覚えな
ACCESS2000(SP3+Office Updateは極力掛けてます)+WINXPなのですが、サブフォームを2つ持つフォームの挙動がおかしくて困ってます。
開こうとするとよくACCESSが不正終了することがあります。
メインフォーム、2つのサブフォームは全てレコードソースに別々のテーブルを設定してます。
同じようなことを経験したことありますか?
いろいろと解決するべく、MDBの最適化、MDBファイルを新しく作ってオブジェクトをインポート、
かなり重労働だけどフォームを作り直してVBAソースをコピペしたりしても改善される様子もなく・・・
することがあります。
することがあります。
しょぼいマシン使ってるだけ
>>456 Openイベントとかで何か処理してるの?
460 :
名無しさん@そうだ選挙にいこう:2010/05/26(水) 22:02:24
461 :
456:2010/05/27(木) 14:43:57
>>458 そんなことは言わずに。
>>459 ありがとうございます。
Openイベントでは各コントロールの条件付き書式やVisible、Enabled、Lockedの設定、
テキストボックスのValueに文字列やNullの設定などをしてます。
今は不正終了は起きていないんですが、あるとき突然起き始めます。
>>460 バージョンを上げるのはひとつの手ですが、予算の関係と、2010はまだ怖くて。。
>>456 mdbの大きさは?
システムが使用する分を加えると2GBになって起動失敗とか。
>>456 気休めにOpenからLoadに移せるもの移してみたら?
固定長のテキストファイルに、SJISと西ヨーロッパ文字の文字コードが混在しており、
インポート時に上手く区切れません。
何か良い解決方法はありませんでしょうか。
465 :
名無しさん@そうだ選挙にいこう:2010/05/27(木) 21:52:03
>>464 手間だけど、CSVにするプログラムを作って、カンマで区切る。
467 :
450:2010/05/28(金) 00:59:00
返事が遅くなりましてすみません。
SQLと、初心者向けのアクセス本を探してみます。
どうやら、設備管理にアクセスを使いたいような雰囲気になってきてます。
BrowseToマクロアクションの Where Condition/Where 条件式 が機能しないのだが…
俺、なにか勘違いしてるかな?
他の人は動いてますか?
471 :
468:2010/05/31(月) 08:41:01
どうも、[年月日] > #2010/05/01# としても全部抽出されちゃう、たぶん何か間違えてるが解らん…
他の条件式とor関係
えっ、そうなん?
あした試してみる…が、ヘルプには書いてない
>>471 その条件式でも問題ないはずなんだが、、、。
BrowseToのWhere条件は遷移先のFilterプロパティに入る値だから、それ確認すればわかるんじゃね?
俺は、
DoCmd.BrowseTo acBrowseToForm, "F_遷移先", , "[年月日]>" & Me.年月日, , acFormEdit
って使って、おそらく同じ罠に引っかかった。ははは
色々試してみたが、フィルタプロパティに設定されるだけみたい、何だよこれ
477 :
474:2010/05/31(月) 12:56:06
俺はフォームフィルタ好きじゃないから、BrowseTo使うときは遷移先の
コントロールソースはクエリにして、その抽出条件に使う値をTempVar
かなんかで渡そうかと思ってる。
うん、俺もフォームフィルタは使用者が操作時に使うのが良いと思ってるんで、クエリの抽出条件だなぁ、振出しに戻るっと
479 :
474:2010/05/31(月) 13:21:45
>振出しに戻るっと
えっ、なんか解決してない件あるの?
いや、今までクエリの抽出条件つかってたので、BrowseToにすると何か楽チンになるかなぁと思っただけ
481 :
474:2010/05/31(月) 14:20:25
なるほどね
まぁ、Web用に追加された機能と思えるから、なくても困らないって感じかな。
ナビゲーションフォームでは使うことになると思うけど。
サブフォームの使い勝手がよくなるかもしれんね。
サブフォームコントロール:ctrSubformを各自に持つフォームがF_00からF_04まであるとして、
F_00で
DoCmd.BrowseTo acBrowseToForm, "F_04", "F_00.ctrsubform>F_01.ctrsubform>F_02.ctrsubform>F_03.ctrsubform"
を実行すると勝手にネストしてくれる。順番かえるのもネストの深さを変えるのもできる。
とはいっても実際は深いところからOpenし直してるだけ。誰得なことかもだね。
PC1にmdb(リンクテーブル)を置いて、PC2から接続するという環境で
PC2から接続時(PC1にldbファイルができる状態)でLANケーブルを抜く。
この状態でPC2からupdateなどを実行しても、エラーにはならないのですが
(On Error Goto とかでは拾えないって意味です)
どうにかしてエラーを検出する方法ってありませんか?
>>482 何で実行してるのかによると思うけど。
ExecuteならdbFailOnErrorオプション付けてないだけとか。
>>483 そんなのがあったんですね!ありがとうございます!
試してみたいと思います!
あと
Set RS = OpenRecordset(SQL文)
RS.AddNew
:
RS.Update
で行った場合も同様のものはないでしょうか・・・?
485 :
483:2010/06/02(水) 18:19:49
>>484 試してないけど、トランザクション切ってみては。
理屈の上では、ロールバックするためにはエラー通知が必須だから、
トランザクション切ったらエラーが発生するようになるかもしれない。
試してないので、結果教えてください。
>>485 その前に、「dbFailOnError」の使い方なんですけどどこがいけないのでしょう?
以下のような感じで書いてみたのですが、エラーを取得できずにいます・・・orz
(LANケーブル抜いて登録を実行しても『登録完了』って出てしまうのです)
Sub data_update()
On Error GoTo Err_data_update
Dim DB As DAO.Database
Dim s As String
Set DB = CurrentDb
s = "UPDATE テーブル SET"
s = s & " ID = " & gid & ","
s = s & " 年齢 = " & Me.年齢 & ","
s = s & " データ = '" & Me.データ
DB.Execute (s), dbFailOnError
MsgBox "登録完了", vbInformation, "Test"
Exit_data_update:
DB.Close
Set DB = Nothing
Exit Sub
Err_data_update:
MsgBox Err.Description
Resume Exit_data_update
End Sub
>>486 Set DB = CurrentDbのあと追加
DB.TableDefs("テーブル").RefreshLink
リンクテーブルはトランザクション効くんだっけかと思いつつ、
Linkの生存を確かめたらいいじゃない的発想。これで良いかはわからん。
で、そのUpdate文だとキーがない無いように見えるんだが大丈夫なんけ?
access2010って2007からほとんど変化が見られないな・・
489 :
486:2010/06/04(金) 12:33:38
>>487 レスが遅くなりました^^;
ちょっと質問なのですが、RefreshLinkと言うのは
フォームのプロパティでレコードソースにクエリを設定していると
華麗にスルーしちゃったりしますか?
初心者すぎて質問がおかしかったらすみません・・・
フィールド検索ではなくテーブル検索をVBAで書くとどのようになるんでしょうか?
491 :
487:2010/06/05(土) 05:33:18
>>489 なんで自分で調べないの?なんで自分で確かめないの?
初心者なんて免罪符にもならねぇよ
>>488 あなたが理解可能な範囲ではほとんど変化ねぇってことだろうよ
>>490 質問の意味が分からん
すみません、取り乱しました。
>>489 そもそもの話でなんですが、そこまでコードがあるのならリンク先mdbを直接updateするのもよろしいかと。
>>488 基本的なことは然程変化がないと仰ってるんですね。
>>490 しらね
【 システム環境 】 WindowsXP,SP3 Access2010bate
最近勉強を始めました。
ネットで調べても見つからなかったので質問させていただきます。
【商品マスタテーブル】 【請求テーブル】
・商品ID ・請求ID
・商品名 ・商品ID
・単価 ・商品名
・単価
という2つのテーブルを関連付けて、
請求テーブルのIDを入力すると、自動的に商品名と単価の欄が表示されるようにしたいのですが、
どのように設定したらよいのでしょうか?
494 :
名無しさん@そうだ選挙にいこう:2010/06/05(土) 08:01:05
DLookup使えば良い。
>>493 請求テーブルに商品名と特別な場合がなければ単価もいらないと思うぞ。
・請求ID
・商品名(実態は商品ID。商品マスタテーブルからlookup)
・数量
・etc(受注日とか請求先などなど)
あとはマスタの商品IDと商品名でリレーション。
請求書テーブルの全項目と商品マスタテーブルの単価を使ってクエリを作成。
クエリを元にフォームを作成。ここで抽出用のテキストボックスを追加。
クエリに戻って抽出条件のところで式ビルダを開き(右クリックしてビルドを選択)
フォーム→すべてのフォーム→作ったフォーム名の順で移動し
抽出用に作ったテキストボックス名をダブルクリックすれば上の広いボックスに
Forms![フォーム名]![テキストボックス名]
と入っているはずだからOKを押す。
初心者にはこれで十分なんじゃないか。
つうか初心者用の本を買え。基本的用語がわかっていないから
ネット検索でヒットせんのだろう。
親切にありがとうございます!
さっそく試してみます!
>495
実務で請求書テーブルに商品名と単価をもたないのは無茶だよ。
商品テーブルの単価を変更したら 過去の請求情報もすべて変ってしまう
なんてことが受け入れられるはずがない。
そそ、経理処理は桐でオケ
2010は式ビルダでもintellisense効くから超ベンリ
商品テーブルに複数の価格を記録しとくか、価格テーブルを持つかして
売上日における価格を適応させるようにすればできるけどな。
消費税もそうすればいつ変更されても大丈夫さ。
でも無理にこうする必要はないけど。
2010はインテリセンス効くのか
試してみよう
マクロエディタでもインテリセンス使えてウホッっとなった
アプリケーションパーツも結構いけてる機能だと思うぜ
いろんなモジュールをテンプレとして活用してる人には特に。
肝は、インスタンス化したフォームだ
2007Runtimeで安定稼働してるフロントエンドを
敢えて2010Runtimeにする意味はなさげかな。
新しい機能が追加されてれば変えようという気にもなるんだけど。
んだんだ。安定してんならこのタイミングで更新の必要はなかんべ
runtimeでも2010と2007でも違いがあるからな。
どっちみち2010新機能を使うには2010で開発することになるっぺ
2007はXP上だと仮想メモリ上限で動作不安定になる
バグだと思うんだけど、フィックスされる気配がない
今はランタイムが無料なのがいいよな。
しかもユーザーがテーブルやらプログラムをいじくれないってのも。
>>505 なんだか2010でも持ち越しちゃってるねぇ
Xp+2010Runtimeで印刷プレビューつかうとアプリ終了してもプロセスが残っちゃうのは
確認した
>>506 > しかもユーザーがテーブルやらプログラムをいじくれないってのも。
どうやってやるの?
510 :
456:2010/06/07(月) 14:26:45
規制されてました申し訳ない。
>>462 今のところ5〜7MBで収まってます、システムを動かしていても50MBを超えることはないっす。
確かにファイルサイズ制限ありますね。
>>463 なるほどそれも手ですね。やってみます、ありがとうございます!
>>466 こんな設定があるとは・・・早速やってみます、どうもありがとうございます!
サブフォームのレコードソースはリンクテーブルではないんです。
511 :
名無しさん@そうだ選挙にいこう:2010/06/08(火) 23:21:23
WinXPSP3、Access2003です。
【T_名簿】
ID 名前
1 山田
2 佐藤
3 鈴木
【T_販売】
品名 ID 名前
ノート 2
クリップ 3
消しゴム 1
定規 2
↑の2つのテーブルがあって、「T_販売」テーブルの「名前」に
Update文で上から「佐藤、鈴木、山田、佐藤」と入れたいんですが、
下記のUpdate文だとエラーになってしまいます。
DoCmd.RunSQL "update T_販売 set 名前=dlookup('名前','T_名簿','ID=[T_販売].[ID]');"
どこがマズイのでしょうか?
実はもう5時間くらい試行錯誤しており、訳が分からなくなってしまいました・・・。
よろしくお願いいたします。
dlookupなんぞ使わんじゃろ
update T_販売 inner join T_名簿 ON T_販売.ID = T_名簿.ID set T_販売.名前 = [T_名簿].[名前];
クエリデザインで作ってSQL文を確認でもしなはれ。基礎知識が不足していると思われる。まぁがんばれ
513 :
511:2010/06/09(水) 01:08:59
>>512 どうもです。
inner joinというのを使って他のテーブルを参照しに行くんですね。
setの後ろで、T_販売.名前のほうはカッコが付かなくて[T_名簿].[名前]はカッコが付くとか、
そのへんもよく分かっておらず、まだまだ勉強不足ですね。
ありがとうございました。
この場合は別にカッコはあってもなくてもいい
2010発売日に買うって人いる?
予約しようかどうか迷ってるんだけどちょっと待った方がいいかな
>>515 試用版使ってろよ、最初から正規に2ヶ月、正規に試用延長6ヶ月まで
access2003を使っています。
where句のところで含み検索したいのですがどうしたら良いのでしょう。
WinXP、Access2003で教えてください。
2010/06/10 23:50:00 のようなデータが入っている日付/時刻型の
フィールドが二つ(仮にAとBとします)あるのですが、この二つをが
下記のような場合の演算をどうすれば良いのでしょうか?
(クエリの中の式ビルドで記述したいと考えています)
例)
A 2010/06/10 15:30:00
B 2010/06/10 20:50:00 のとき、
AとBとの時間差の半分の時間をAの時刻に足した時刻の値を求めたい。
データ型などを無視して書くと、 A+(B-A)/2 みたいな感じなのですが、
CDateやTimeSerial関数を使うのか、Datediff関数を使うのかがよく分かりません。。。
また仮に、例えばAがテキスト型のフィールドだった場合はどうなるのでしょうか?
ご教示のほどよろしくお願いいたします。
>>520 日付は基本的に小数ありの数値と考えていいから(シリアル値)
普通に演算でokじゃね?
テキスト型だった場合は、たぶん暗黙の型変換がなされると思うが(やったことがない)、
Cdate使用が基本だろうね。
>>520 Datediff,Dateadd,CDate を使うのがお行儀が良いと思う。
>>522 ちなみにどのように書けるんでしょうか?
524 :
名無しさん@そうだ選挙にいこう:2010/06/12(土) 04:23:07
すいません教えてください。
Linuxに、本の付録のオラクル入れてAccessで接続してみましたが、「select tname from tab」での結果と
Accessでの取得テーブルが一致しません。
Accessでやるべき設定が足りないのでしょうか?
Accessで取得したtabには、テストでInsertしたテーブルが入っていたので接続先は間違っていないと思います。
Accessに何か設定しないとダメなのでしょうか?解決策を教えてください。
>>524 それじゃ何の設定やったのかわからん
Access側から見えてるならいいんじゃないの?
526 :
名無しさん@そうだ選挙にいこう:2010/06/12(土) 22:13:37
>>525 Accessでは、sqlでcreateしたTable本体は見れないのに、createした結果は、Accessからでもtabのレコードから確認できるんです。
AccessでTable本体が確認出来ないのは、Accessで何か設定しなきゃいけないのかなと思って。
今のところ特別な事は何もしていません。
528 :
名無しさん@そうだ選挙にいこう:2010/06/13(日) 01:10:14
>>527 DBとAccessの接続は紹介して頂いた方法で実現しています。
Linux側で、Commitの他にも変更を反映させるコマンドが必要なんですかね?
Accessの問題なのかLinux側の問題なのかわからなかったので、こちらで質問させていただいてます。
>>528 うーむ後はテーブル名が全角だったりとか?
ちょっと自分では力及ばない・・・すまんが他の有識者待つかOracleスレで聞いておくれ…
530 :
名無しさん@そうだ選挙にいこう:2010/06/13(日) 02:26:38
531 :
名無しさん@そうだ選挙にいこう:2010/06/13(日) 06:51:29
勉強する為に、2010bate版使ってます。
請求テーブル 顧客テーブル 社員テーブルがあります。
請求入力フォームでは、顧客、担当社員、商品…と入力していきます。
顧客はリストボックスから選ぶようにしたのですが、数が多くなり探しにくくなってきました。
担当社員もリストボックスにしてます。
質問なんですが、請求フォームで「担当社員」を先に選択すると、
顧客のリストボックスが、その担当社員の顧客しか出ないようにするには、どのように設定したらいいでしょうか?
532 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 06:56:43
>>532 素晴らしいです。ありがとうございます!
534 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 07:09:21
>>524 特別な設定なんて不要だと思います。
Linux側で見れて、Accessで見れないのはcommitしてないから位しか理由は考えられないですね。
もし、sqlplus使っているなら一度終了してから、Access側で再度テーブルを開いてみて下さい。
535 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 07:10:40
>>533 検索すれば、大概のものは見つかりますよ。
536 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 08:26:17
>>520 両方とも日付時間の時
式1: DateAdd("s",DateDiff("s",[テーブル1]![FROM],[テーブル1]![TO])/2,[テーブル1]![FROM])
>>520 桐じゃダメなのか、時間型があってそのまま演算できるが
538 :
名無しさん@そうだ選挙にいこう:2010/06/13(日) 14:33:08
>>534 Commitはしています。
ユーザー名を「system」で行っているのが原因でしょうか?
539 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 15:52:22
>>538 普通はsystemでは作らないで、アクセス用のユーザーID作ってアクセス権付けますよ。
そんな事やった事が無いので原因かどうかわかりません。
commitした後に、Accessでテーブル開き直して無いって事はないですよね?
541 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 16:20:58
>>540 sqlplus使ってますか?
それともプログラムでinsert?
542 :
名無しさん@そうだ選挙にいこう:2010/06/13(日) 21:25:55
>>541 sqlplusでInsertしてます。
543 :
彩 ◆ACaxLt6WsjPE :2010/06/13(日) 21:28:35
>>542 じゃあ、プログラム作ってinsertしてみてね。
>>543 プログラムでインサートしてみました。
また、sqlからもプログラムからも参照(select)できましたが、
AccessからDBに接続しても、相変わらず、sqlで作成したテーブルがテーブル一覧に表示されません。
>>544 やっとあなたの言っている事が分かりました。
それはオラクル側の設定だと思います。
新しいユーザーとスキーマ作って下さい。
>>545 表示されるようになりました。
ありがとうございました。
547 :
名無しさん@そうだ選挙にいこう:2010/06/15(火) 02:44:48
windows7のパソコンがword2007とExcel2007しか入ってなく、Accessが無いんです。
office2003のCDでAccess2003をインストールしたら動きますか?
2007と2003の競合でWord, Excelに何らかの不具合が出ることを心配しているのです。
excel、word、access、powerpoint…並びがきれいだw
まじですかw
550 :
名無しさん@そうだ選挙にいこう:2010/06/16(水) 19:36:15
会社のシステムから社員名簿をエクセル形式で出力して、今度はそれをアクセスへインポートするんですが、
エクセルの「入社日」の欄が「19950401」のように、ただ数字が並んでいる状態です。
アクセスのデータ形式だと「1995/04/01」にならなくてはいけないのですが、
「19950401」みたいなデータを「1995/04/01」の形に一括変換は可能でしょうか?
>>550 どういう構造になっているのかは知らんが
問題のテーブルに直接Excelのデータをインポートするのなら
取り込む前、つまりExcel側でデータを修正する必要があるんじゃないの?
もちろん取り込み時に修正も可能だけど、この程度のことを質問するようではまず無理。
一時テーブル→本テーブルという流れなら、更新クエリ。
取り込み前でもあとでもいいんですが、一括変換ができれば楽だな…と思いまして
方法探してみます。ありがとうございます
>>550 EXCELのVBAを作って変換してみたら?
>>553 VBAなんて必要ないでしょ。関数とアンパサンドだけでできる。
>>554 それだと別の列になって、また値だけ元の列にコピーしないといけないでしょ?
>一括変換ができれば楽だな…
って書いてあったから、VBAの方がいいのかな〜って思って。
>>550 Excel側で日付形式に変換してからアクセスに読ませればいいのに
何度もやるならvbaだろうけど、今回きりなら手作業もありかね
>会社のシステムから社員名簿
社員は固定じゃないから何度もやるのかなと思って。
すいません、とりあえず現時点までの名簿をエクセルでインポートして、
これからのデータは手入力でと思っています。
エクセルのツールの区切りなんとかで、良い形に変換できました。
ありがとうございました
え、もう終わり?
つまんないのw
まぁなんというか、2010の発売日は明日なんだな。
>>559 なんだ、これからシステム作成だったのか。
だったら
・入社日をとりあえずそのままでインポート(フィールドはテキスト型)
・更新クエリで入社日に/を挿入(いろいろやり方はあるが、Formatが便利)
・フィールドを日付型に変更
でできたのに。
564 :
561:2010/06/16(水) 22:18:12
>>563 2010対応の要求があるので導入が必須なのであります。
買うというかすでにゴリゴリやっておるので仲間が欲しいなと。
>>564 それは大変ですね。
私、Access2010入れてみたけど、全然使いこなしてませんw
まあ、家で使いこなす事なんてあり得ないんですが・・・
このコテは何なの
エロエロお姉さんなら許す
どう見ても自己顕示欲旺盛なおっさん
569 :
名無しさん@そうだ選挙にいこう:2010/06/17(木) 10:50:48
2010製品版発売記念age
2010発売記念かきこ
2007/2010の互換性は低いと感じている。
571 :
名無しさん@そうだ選挙にいこう:2010/06/18(金) 15:20:47
すいません、教えてください。
【 システム環境 】 WindowsXP, Access2003(開発)、Access2007ランタイム(実行)
【 VBAが使えるか 】 はい
【 VBAでの回答 】 可
【 検索キーワード 】 Access 2007 Runtime 強制終了
2003で作成したシステムのmdbファイルを2007のランタイムで開こうとすると、
いきなりAccessが強制終了してしまいます。
で、その時に出るメッセージの「修復して再起動」を実行すると、
その時は無事起動できるのですが一度閉じて開き直すとまた同じ症状になってしまいます。
参照設定が怪しいかと思い、2007のランタイムで普通に動く
別のシステムのmdbファイルと同じ設定にしても解消されず・・・
何が原因と思われますか?
>>571 開発と実行の環境が違うからとしかいいようがねぇな
2007製品で無事に動くか確認してんのか?
573 :
571:2010/06/18(金) 15:56:20
>>572 ですよね・・・
製品版の2007が手元に無いので
そちらでのチェックはできていません(汗)
今、元ファイルをコピーして参照設定を色々いじっていたら
何故か動くようになりましたが、
もう一つコピーを作って同じ設定にしても動かず・・・
何が何やらさっぱりです。
574 :
名無しさん@そうだ選挙にいこう:2010/06/18(金) 20:15:47
エクセルやテキスト形式のインポートをしようとすると、
「データベースまたはオブジェクトは読み取り専用であるため、
更新できません。」と出てきてインポートできません。
マイクロソフトのサポートオンライン見てもよく分からなくて
ここに来ました。
どなたか解決方法を教えていただけますか?
インポートするファイルを開いたままだとそうなる
576 :
名無しさん@そうだ選挙にいこう:2010/06/18(金) 23:19:40
>>575 それが、閉じた状態なのですよ。
ファイルを読み取り専用にもしてませんし・・
>>574=576
インポート先のテーブルに手作業でレコードの追加はできますか?
問題の切り分けの手掛かりになるかと思いますのでお試しあれ。
578 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 09:02:55
>>571 Windows XP SP3 Office 未インストール に
Access 2007 Runtime を入れて、Access 2003 で作ったmdb動かしてみたけど、
普通に動きます。
形式は、2000です。
579 :
578:2010/06/19(土) 09:46:08
mdbの形式を2002-2003にしてみたけど、やぱり動きます。
何か、特別なdllを参照しているとか?
mdbが壊れているとか?
面倒ですけど、空のmdbを作って、オブジェクトを全部エクスポートしてみたらどうですか?
580 :
578:2010/06/19(土) 09:47:28
>>574 JET4が扱えない拡張子のファイルを読み込むとそのエラーになるみたいですね。
581 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 13:38:30
>>577 EXCELからのレコードのコピーはできます。
>>580 あるシステムから取ってきたデータなんですが、
普通のEXCELとTEXTなんですよ。
582 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 14:07:16
>>581 普通じゃないからエラーになっていると思いますよ・・・
バージョンとSPくらい書けよアフォウ
584 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 14:32:11
>>582 すみません。見た目普通のEXCElなので、そのように書きました。
585 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 15:04:47
>>584 Excelもいろんなバージョンあるんですけどね・・・
Accessも・・・
586 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 15:09:29
インポートも手動なのかVBAなのかも書いて無いし
釣りですか?
587 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 15:15:00
584です。
釣りではないです。すみません。
初心者でもあり、新しい職場に入ったばかりなので
色んなことに慣れていなくて、ぼさっとした質問をしてしまいました。
ACCESSは2000です。EXCELのバージョンは確認してなかったです。
それと、インポートは、手動でもVBAでも同じ結果です。
588 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 16:31:01
>>587 それはまた古いものをお使いですね。
Office 2000 持っているのでちょっとインストールしてみますね。
589 :
588:2010/06/19(土) 17:03:31
Windows XP Pro SP3、Office2000SR-1インストールして実験しました。
Excel2000で作ったファイルと、test.txtファイルをインポートしましたが、エラーは再現出来ませんでした。
さくっと正常にインポートしました。
インポートしたいExcelとTextの情報が不足しているので、これ以上は不明です。
頑張って調べて下さい。
590 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 17:09:27
>>589 実験して頂いてありがとうございました。
会社でまた色々試してみたいと思います。
592 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 19:01:59
>>591 ありがとうございます。
実は、そこも読んだんですが、恥ずかしながら具体的に何をしたら良いのか
理解できなかったのです。
593 :
名無しさん@そうだ選挙にいこう:2010/06/19(土) 19:07:35
解決までの道のりは遠そうですね・・・
新しい暗号化の種類
現在の暗号化標準に引き続き準拠するために、Access 2010 は新しい暗号化の種類を実装しており、Microsoft 以外の製品で Access ファイルを暗号化することもできます
> Microsoft 以外の製品で Access ファイルを暗号化
これどうやるの?
調べても解らない…
595 :
571:2010/06/20(日) 00:40:28
>>578,579
レスありがとうございます。
返信が遅くなってしまってすいません。
今、空のmdbに全てエクスポートして試してみました。
結果、クエリ以外をエクスポートした時点では問題なく動きましたが、
クエリもエクスポートして実行するとまた強制終了してしまいますので、
(もう一度クエリだけ削除すると実行できる)
どうやらここに問題があるようですね。
ただ、クエリ自体はシステム修正前の問題無く動いている状態から
全く何も変更してないのに何故こんなことに・・・
引き続き調査してみます。アドバイスありがとうございます。
596 :
578:2010/06/20(日) 07:41:57
>>595 なんかとっても謎ですね。
仕方が無いので、クエリ作り直してみたらどうですか?
何か壊れているっぽいので・・・
597 :
名無しさん@そうだ選挙にいこう:2010/06/20(日) 07:56:53
>>594 ヘルプにも記載されていませんね。
「サード パーティ製暗号化製品のサポート Access 2010 では、必要に応じてサード パーティの暗号化テクノロジを使用できます。
ここでは、サード パーティ製品の使用については説明しません。」
多分、サードパーティのインストール方法見ろって事でしょうね。
598 :
名無しさん@そうだ選挙にいこう:2010/06/20(日) 19:28:27
初心者なのですが教えてください。
ACCESS2003で次のような加工をしたいのですがどうすればいいかわかりません。
テーブル1:個人ID,氏名,住所
テーブル2:個人ID,氏名,住所,その他要素
という2つのテーブルがあり,テーブル2に入っているデータ(個人)はテーブル2にも入っています。
テーブル1からテーブル2のデータを削除または表示しないことにし,
テーブル2のデータを除いたリストを作りたいのです。
削除クエリを使ったことがないのですが,削除クエリを使えばできますか?
599 :
名無しさん@そうだ選挙にいこう:2010/06/20(日) 20:44:20
>>598 簡単に出来る内容だと思うけど、
何がいいたいのか分からない
601 :
名無しさん@そうだ選挙にいこう:2010/06/20(日) 21:44:16
削除しなくても出来ますよ。
テーブル1
個人ID 氏名 住所
1 山田 一郎 東京都品川区
2 山田 次郎 東京都港区
3 山田 花子 東京都新宿区
4 田中 一郎 東京都江戸川区
テーブル2
個人ID 氏名 住所 その他要素
1 山田 一郎 東京都品川区 長男
2 山田 次郎 東京都港区 二男
3 山田 花子 東京都新宿区 長女
クエリ1
SELECT [テーブル1].個人ID, [テーブル1].氏名, [テーブル1].住所
FROM テーブル1
WHERE ((([テーブル1].個人ID) Not In (select 個人ID from テーブル2)));
結果
個人ID 氏名 住所
4 田中 一郎 東京都江戸川区
602 :
601:2010/06/20(日) 21:46:31
Access2010(x64)で作ったんですけど、
not in (select 個人ID from テーブル2 で、テーブル1とテーブル2の候補が出たんですが、
テーブル2をクリックすると強制終了しました・・・
情けないバグですね。
>>601 同じようなこと発生してたけど、インストールし直してから発生してないよ
俺の場合2007アンインストールしたマシンだけトラブルがあった。
なんやかんだでOSから再インストールの必要があるかもね。
604 :
名無しさん@そうだ選挙にいこう:2010/06/20(日) 22:32:41
>>603 2007->2010ベータ->2010RTMです。
OSから再インストールですか・・・
面倒ですね。
605 :
601:2010/06/20(日) 22:59:51
>>423の現象も発生したし、IME関係のプロパティも効かないというのも体験した。
環境によっては塩梅よくインストールされないか正常に機能が作動しないということだと思って割り切った。
606 :
603:2010/06/20(日) 23:02:22
はっは、603だった。ちょっと飲みすぎた。寝ます
607 :
601:2010/06/20(日) 23:41:34
2007から日付選択カレンダーをプロパティで設定できるようになったけど、
フォーカスが移ったときにドロップダウンさせる方法を知ってる方おりませんか?
カレンダーを見ながら日付直打ちしたいとか
ミニカレンダーの存在を知らないユーザーもいて・・・2007以前に戻すしかないかな。。
>>608 DoCmd.RunCommand acCmdShowDatePicker
でどうだ
610 :
609:2010/06/21(月) 00:56:13
>カレンダーを見ながら日付直打ちしたいとか
カレンダーにフォーカス移っちゃうからできねぇのよ
611 :
608:2010/06/21(月) 01:37:30
>>609 レスありがとうございます。
フォーカス移った瞬間に見事にカレンダー開きました!感動。
瞬間にカレンダーにフォーカス移っちゃうからカレンダー見ながら
日付直打ちは結局のところ無理目な感じですね。
でも、カレンダーでキーボード移動できるからマウス使う必要もなし・・・です!
WEB検索しまくってもどこにも載ってなくて・・まじありがとうございます。
>>611 そんなにカレンダー見ながら打ちたいのなら、カレンダーをJPGとかにして、当月の分を表示してみたら?
613 :
601:2010/06/21(月) 08:52:01
ノートPCでも同様の手順で作ってみたら、同じ現象で、Access 2010が落ちました。
今度は、x86を入れなおしてみて実験してみます。
614 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 14:33:25
よろしくお願いします
★ OS・・・XP、ACCESS・・・2000
★ 質問内容
・今日アクセスのファイルを開こうとしたらまったく反応がありません。
・特にエラーメッセージも出ないのでどうすればいいかわかりません。
・ファイル名を変えてみたり、エクスプローラーから開こうとしてもダメでした。(ファイルは存在してるのですが・・・)
・一度アンインストールして、再度インストールしてみましたがやっぱりダメです。
★ 考えられる原因?
先週CドライブのマイドキュメントをDドライブに移行しました。
その中に、アクセスのファイルも含まれていました。
素人なので分かりやすく教えてもらえると助かります。
マイドキュメントを移行した、って具体的にどうやったの
マイドキュメントそのもののパスをDドライブに変えた?
マイドキュメントの中のファイルをDドライブにカット&ペーストしただけ?
Accessのファイルは1つだけ?
どんな作り方・使い方をしているファイルなの?
素人というけど、そのAccessのファイルは誰が作ったの?
VBAやクエリ、マクロ等を組んでる?
あーははは。
>★ 考えられる原因?
> 先週CドライブのマイドキュメントをDドライブに移行しました。
素人というならば、なんにしても元に戻すんだ。作った人に聞くのが最善だ。
617 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 14:59:39
618 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 15:04:11
普通は、バックアップから戻すなんですけど、バックアップなんて取っていなさそうだし。
ここは、もう一度作り直すしかないと思います。
新規mdbへのインポートぐらいできるんじゃね?2000にはねぇのか?
access自体が起動しないならどうにもならんけど。
>>617 じゃあマイドキュメントをCドライブの元の位置に戻してみて
誰も何もしていなければ、XP標準のマイドキュメントの元のフォルダは
「C:\Documents And Settings\[ユーザー名]\My Documents\」
変更したファイル名も元に戻しておいて
「確かこんな感じだった」とかアホなことしないで、「完璧に元に戻して」
他のAccessが動くパソコンがあれば、USBメモリ等で該当ファイルを移してみて、
それで動くか確認してみて
あと
Shiftキーを押しながらダブルクリックしたら、何か変化ある?
スタート→プログラム→Microsoft Accessを起動したら、Access開く?
「まったく反応がありません」というのは、もうちょっと具体的にどんな状態?
一瞬たりともAccessの画面が開くことがない?タスクバーにすら現れない?
ダブルクリックした後、Ctrl+Alt+Deleteを同時押ししてタスクマネージャを開いて、
アプリケーションタブのリストの中に該当のファイル名はある?
プロセスタブのリストの中に「MSACCESS.EXE」は何個ある?一個もない?
621 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 17:07:17
やっぱり原因は、引っ越しした事でしょうね。
元に戻せば動く予感がします。
戻す前にもコピー取った方がいいよ
623 :
614:2010/06/21(月) 19:51:10
>>615-622 みなさんありがとうございました!
元に戻したら、開くようになりました。
やっぱり移動したのがいけなかったみたいです・・・。
お騒がせしてすみませんでした。
ちなみに「まったく反応がありません」というのは、
Accessの画面は開くのですが、「新規作成」や「ファイルを開く」をクリックして、
どれか指定をしても、その後何もダイヤログが出てこない状態でした。
だから、最初Accessが壊れたとおもって再インストールしました。
624 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 20:25:17
ACCESSからEXCELにデータをエクスポートするときに、
ACCESS側から書式設定ってできますか?
625 :
601:2010/06/21(月) 21:11:57
Access 2010 (x86)をインストールしてみたけど、同じ症状でした。
SQl Server 2008 R2 とか Visual Studio 2010 とか入っているでOSの再インストールはしたくないので、諦めます。
SP1で直ればいいなっと。
626 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 21:12:58
>>624 AccessからオートメーションでExcel開けばできそうだが、虚しい
628 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 21:24:22
一度、エクスポートしてからVBAで開きなおして書式設定は出来ますね。
でも、かなり面倒ですよw
629 :
名無しさん@そうだ選挙にいこう:2010/06/21(月) 21:25:50
私のやり方は、書式設定済みのエクセルを作っておいて、アクセスのVBAからエクセルのセルを更新してます。
630 :
名無しさん@そうだ選挙にいこう:2010/06/22(火) 11:22:01
原本Excelである程度書式作っておいて、残りをVBAで補ってる
>>624 出来るよ。昔やった。
エクセルのインスタンスを作って、そのインスタンス経由でエクセルVBAを操作する。
632 :
624:2010/06/22(火) 20:15:02
結構面倒くさそうですけど、出来ることは出来るんですね。
週末に試してみます!
おお!
って思ったけど、Excelのシートに最初から書式設定した方が何かと楽か・・・。
634 :
名無しさん@そうだ選挙にいこう:2010/06/22(火) 21:13:53
複雑な書式は、特に
635 :
601:2010/06/22(火) 22:01:55
Officeの入ってないWindows 7 Home Premium(x86)に、Access 2010(x86) インストールしてみました。
ちょっと挙動がおしかしいけど落ちませんでした。
クロス集計クエリの結果をレポートにする要件が出たとき、
あきらめてExcelに貼って加工する手を使った
・列見出しの内容が不定
・列数が可変
これをAccessでレポートにしようとすると、不可能ではないけど
めっちゃ面倒だったんだ
皆はどうしてるの?そんな要件あんまりないか?
637 :
名無しさん@そうだ選挙にいこう:2010/06/23(水) 06:53:00
>>636 クエリをエクスポートした後に手動で開いて体裁整えてます。
638 :
名無しさん@そうだ選挙にいこう:2010/06/23(水) 20:19:32
例えば、[納品日]に対して、[あと何日]と表示される列をつくりたいです。
それと、納品日を越えたところについては、「○」などを表示したいのですが、
どのような式を入れたらいいでしょうか?
datediff?とかいろいろ検索してあったのですが、真似しても上手くいかなかったので、
教えていただきたいです。お願いいたします
639 :
名無しさん@そうだ選挙にいこう:2010/06/23(水) 21:01:40
>>638 テーブル1
ID 納品日
1 2010/06/26
クエリ1
SELECT [テーブル1].ID, [テーブル1].納品日, DateDiff("d",Now(),[納品日]) AS 式1
FROM テーブル1;
ありがとうございます。
しかし、サブクエリの指定が正しくありませんと出てしまいました。
サブクエリはかっこで囲んで…と出てるのですが、どこを囲んだらいいのでしょう?
自分の入れ方が間違ってるのでしょうか?本当にすいません。
641 :
名無しさん@そうだ選挙にいこう:2010/06/23(水) 22:18:30
>>640 Access2010で作りました。
サブクエリなんて使ってませんが・・・
もうちょっとやってみます
ありがとうございました
>>642 さん
SQLビューってご存じですか?
(クエリデザイン画面で右クリックしてSQLビュー)
クエリの作り方を説明する際には、このSQLビューで表示される‘SQL句’で
やり取りされる場合が多いので注意が必要です。(SQL句は慣れると便利)
>>639さんが解答してくださったSELECTで始まるSQL句をSQLビュー内にコピペして
再びデザインビューに戻すとあら不思議w
そういうことなんですね
すいませんでした。助かりました
645 :
639:2010/06/24(木) 06:47:06
説明が足りませんでしたね。すみません。
もう一つの回答まだでしたね。
646 :
639:2010/06/24(木) 12:55:11
ID 納品日
1 2010/06/22
2 2010/06/24
3 2010/06/25
4 2010/06/26
5 2010/06/28
クエリ1
SELECT [テーブル1].ID, [テーブル1].納品日, DateDiff("d",Now(),[納品日]) AS 式1, IIf(DateDiff("d",Now(),[納品日])<=0,"○","") AS 式2
FROM テーブル1;
結果
ID 納品日 式1 式2
1 2010/06/22 -2 ○
2 2010/06/24 0 ○
3 2010/06/25 1
4 2010/06/26 2
5 2010/06/28 4
できました!ありがとうございました!
648 :
624:2010/06/25(金) 13:54:33
区分 名前 数値 | 名前2 数値2 差
----------------------------------------
a あ1 10 | あ5 50
a あ2 20 | あ6 50
a あ3 30 |
a あ4 40 |
a 計 100 | 計 100 0
----------------------------------------
b い1 50 | い3 90
b い2 60 | い4 90
b い3 70 |
b 計 180 | 180 0
----------------------------------------
c う1 80 | う3 170
c う2 90 |
c 計 170 | 170 0
----------------------------------------
全体 合計 450 | 450 0
このような表をアクセスのフォーム上に表示させるのは可能でしょうか?
左右どちらも上詰で、1行が1レコードではないのですが・・・。
やはりエクセルじゃないと厳しいですかね。
649 :
名無しさん@そうだ選挙にいこう:2010/06/25(金) 14:08:50
区分 名前 数値 | 名前2 数値2 差
----------------------------------------
a あ1 10 | あ5 50
a あ2 20 | あ6 50
a あ3 30 |
a あ4 40 |
a 計 100 | 計 100 0
----------------------------------------
b い1 50 | い3 90
b い2 60 | い4 90
b い3 70 |
b 計 180 | 計 180 0
----------------------------------------
c う1 80 | う3 170
c う2 90 |
c 計 170 | 計 170 0
----------------------------------------
全体 合計 450 | 合計 450 0
ずれすぎました。すみません。これでも駄目なら、諦めます・・・
サブフォームを駆使すればできなくもなさそうだが、、。
区分の数が動的ならレポートかもな。
651 :
名無しさん@そうだ選挙にいこう:2010/06/26(土) 19:57:18
>>650 レスありがとうございます。
操作に関しては、ACCESSだけで済ませたいので、
一旦左右のテーブルをエクセルの指定したセルにエクスポートして、
更にACCESSに取り込んで、ユニオンクエリで計と合計を作成しようと
思います。
見やすい形でフォームに表示させたいと思いましたが、データビュー?
にするしかないのかな、と。
652 :
名無しさん@そうだ選挙にいこう:2010/06/26(土) 22:58:55
Accessだけで出来ますよ。
653 :
名無しさん@そうだ選挙にいこう:2010/06/27(日) 11:45:38
>>652 そうですか!ヒントだけでも頂けたらうれしいです。
654 :
名無しさん@そうだ選挙にいこう:2010/06/27(日) 15:56:31
>>653 元のデータが書いてないので具体的な事は書けませんが、VBAでゴリゴリ書けば出来ますよ。
655 :
名無しさん@そうだ選挙にいこう:2010/06/27(日) 19:53:51
区分 名前 数値
a あ1 10
a あ2 20
a あ3 30
a あ4 40
b い1 50
b い2 60
b い3 70
c う1 80
c う2 90
区分 名前2 数値2
a あ5 50
a あ6 50
b い3 90
b い4 90
c う3 170
>>654 とりあえず単純にこの2つのテーブルを、区分ごとに上詰めで表示した
状態を作りたいのです。それが出来なくて、苦しみ中・・・
エクセルを利用するのも考えましたが、これも面倒で。
656 :
名無しさん@そうだ選挙にいこう:2010/06/27(日) 21:25:32
>>655 VBAで両方のテーブルを開いて、マッチングしながら新しいテーブルを作れば良いですよ。
657 :
名無しさん@そうだ選挙にいこう:2010/06/27(日) 22:42:15
>>656 なんか出来そうな気がしてきました。やってみます。
658 :
名無しさん@そうだ選挙にいこう:2010/06/28(月) 20:27:22
2010bateで始めて、まだ一か月くらいの初心者です。
VBAは使えません…
質問なんですが、例えば
クエリ1
[請求ID][請求日付][顧客名][商品名]
というものがあるとします。
で、使う人がクエリを開く際、請求日付の期間指定をして抽出したいんです。
[2010/06/01]〜[2010/06/30]というようなイメージです。
こういうのはマクロ?でも簡単に作ることができるのでしょうか?
よければアドバイスをお願い致します
659 :
名無しさん@そうだ選挙にいこう:2010/06/28(月) 20:51:38
>>658 テーブルに無い項目名を書くと、クエリを実行する時に入力ダイアログが表示されます。
SELECT [テーブル2].請求ID, [テーブル2].請求日付, [テーブル2].顧客名, [テーブル2].商品名
FROM テーブル2
WHERE ((([テーブル2].請求日付)>=[期間1] And ([テーブル2].請求日付)<=[期間2]));
できました!ありがとうございます!
661 :
名無しさん@そうだ選挙にいこう:2010/06/29(火) 21:03:50
ACCESSのテーブルやクエリの特定レコードに色を付けることって
出来ましたっけ?
662 :
名無しさん@そうだ選挙にいこう:2010/06/29(火) 21:06:37
ACCESSのテーブルやクエリの特定レコードに色を付けることって
出来ましたっけ?
663 :
名無しさん@そうだ選挙にいこう:2010/06/29(火) 21:09:24
二度書きしてしまいました。すみません。
まさしく産む機械
665 :
名無しさん@そうだ選挙にいこう:2010/06/30(水) 22:49:51
>>662 もう少し詳しくどういう条件の時に色をつけたいんだ
フォーム上での話でもいいのかい
666 :
名無しさん@そうだ選挙にいこう:2010/07/01(木) 19:36:43
>>665 フォーム上の帳票形式では条件付書式で出来ました。
テーブルやクエリに直接、または、
フォームでもデータシートビューで出来ないか?と思いまして・・・
667 :
名無しさん@そうだ選挙にいこう:2010/07/01(木) 22:03:13
条件自体がちゃんと設定できているなら、現在のフォームの形式を帳票形式から
データシートビューにするだけでできるだろ
確認した?
668 :
名無しさん@そうだ選挙にいこう:2010/07/01(木) 22:32:37
>>667 確認しました。ありがとうございます。
フォームであれば出来るってことですね。
Excelっていまでも
最大255列65535行
じゃないのかな
いつの時代のひとですか
671 :
名無しさん@そうだ選挙にいこう:2010/07/03(土) 17:15:40
256列×65536行の間違いだろ
672 :
名無しさん@そうだ選挙にいこう:2010/07/05(月) 10:39:18
Excel2007
最大列1万6384
最大行104万8576
2010は知らん
673 :
名無しさん@そうだ選挙にいこう:2010/07/05(月) 21:26:02
Excel2007って確かにワークシートサイズは大きくなったかもしれないけど、
そんなにでかい範囲を1ファイルで扱っている人なんてそんなにいるのかな
普通1万レコード超えたくらいからAccessとかのデータベースの出番を考えるでしょうに
列だってそんなにあったら返って扱いづらくなるだけで
メリットだと捉えている人ってごくわずかだと思うが
CSVに代わる意味はあるんじゃないの
Access 2010を購入しました。
インストール後、Access2002で作成したmdbを開くと、MSCAL.OCXがないとエラーが出ます。
どうやらAccess2010ではMSCAL.OCXがサポートされなくなったようです。
どうにかしてMSCAL.OCXを使用する方法はないでしょうか?
MSCAL.OCXを別途用意して登録すれば使えるんじゃねーの
678 :
名無しさん@そうだ選挙にいこう:2010/07/06(火) 20:37:08
ACCESSからEXCELの書式設定したりすると、
EXCELが普通に開かなくなったりすることありますか?
ダブルクリックで開こうとすると、EXCELの枠だけが出てきて、
中身が全く表示されない状態です。
その都度、スタートボタンからEXCELを起動しなおさないと
その書式設定したEXCELが開けないんですよ。
ちなみに中身はデスクトップが映っており、EXCEL状態ではありません。
680 :
名無しさん@そうだ選挙にいこう:2010/07/06(火) 23:12:55
ACCESSからEXCELの書式設定って、Excelを呼び出して編集してどの状態で終わらせているんだ
>>678 プロセス殺してないだけじゃないの?
タスクマネージャーでEXCEL.EXEが残っていないか確認してみたら。
682 :
名無し:2010/07/07(水) 07:57:34
ACCESS_2003ではメニューバ−の「オブジェクト」からピクチャをフォーム(リンクさせたフィールドに)→テーブルに挿入ができてました
ACCESS_2007でこの機能をもつのは「ロゴの挿入」になるんですか?
684 :
名無し:2010/07/07(水) 11:47:38
調べて違うのは解りました
テーブルのデザインビュ−のコンテキストメニューから「オブジェクトの挿入」があるのはわかったのですが…
テーブルにフォームのボタンクリックで画像を挿入したいのですが 代用リボンや組み込み関数はありますでしょうか
>>684 2007なら添付ファイルフィールドにしとけばいいんじゃね?
でなかったら、OLEオブジェクト型フィールドに連結した連結オブジェクトフレームじゃろうて。
Access 2010なんですが、ワンクリックでCSVでエクスポート(保存)する方法はありませんか?
テキストのエクスポートを選んで、手動でファイルの拡張子をcsvにすればいいんですが
出力場所も決め打ちでいいので、今開いているテーブルを一発でCSVファイルに出来ると便利なんですが
>>686 2010は解らないが、普通はマクロの登録でできると思うが。
もちろんフォームを作ることが前提。あとはコマンドボタンで
マクロの実行をすればいい。
>>686 そのへんの便利機能といえば、エクスポート操作の保存くらいだわな
>>686 コード書いてアプリケーションパーツにしてしまえばいいと思うぜ
フォーム一枚でインスタンス化しておけばいい。
便利な機能だから覚えておいて損はねぇぜ。
Access2010 コントロールへの値の代入でダイーティーイベントが発生しなくなった、これは色々と都合が良い
Shift+F2のズームボックス経由でもダーティーイベント発生しなくなった
あ、いやデータシートフォーム限定か?
693 :
名無しさん@そうだ選挙にいこう:2010/07/08(木) 18:37:05
Access 2003 です。
あいまい検索で詰まってしまいました。
INSERT INTO wrkテーブル SELECT * FROM tblテーブル WHERE tblテーブル.品番 LIKE '*探したい品番*'
上記のSQLをクエリのSQLビューで流すと正常に抽出してInsertするのですが、VBA上で実行させると0件で出てきてしまいます。
VBAではADO接続で、ExecuteでSQL文を流しています。
なんででしょうか
orz
694 :
名無しさん@そうだ選挙にいこう:2010/07/08(木) 19:32:51
実際のSQLの部分を含めたコードを提示されたほうが回答がつきやすいのでは?
>>693 ADOだったら、ワイルドカードは"*"じゃなくて"%"じゃなかったっけ?
とりあえず試してみたら?
696 :
名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:12:49
>LIKE '*探したい品番*'
まさか、この条件のまま検索しているとか・・w
697 :
名無しさん@そうだ選挙に行こう:2010/07/10(土) 16:04:22
レポートで請求書作ったんですが、A4の紙一枚に一件だと下がスカスカになってしまうので、
A4の紙に、上下一件ずつ出るようにしたいんですが、ググってもやり方がイマイチわからなくてできません。
簡単にできる方法があればおしえてください
A5で作って、A4 1枚に2ページ分印刷できるプリンタで印刷。
プリンタの設定でいけますかね?
ありがとうございます
Access2003とExcel2003を使用した時の質問
AccessからVBA使って
Excelファイル開いてさらに編集するような自動処理で
Accessから開いたExcelファイルへのクリック、キー入力等の
入力を無効化する方法ってある?
Accessから自動処理かけてる最中に
開いたExcelファイルへの手動入力等が行われてしまう事で
正常に動かなくなってしまうのを避けたい
・・・正直自動処理掛かってる最中PC触んなきゃいんじゃね?って
思ったりするけど、作ったプログラムを実際に使用するのは
プログラムのこと判んないような人なので
VBAで入力制御できると助かる
visible = False
>>701 サンクス。だいぶ初歩的なことだったなスマン。
クリックイベントを弄るとか明後日の事考えてたorz
ACCESSの作成するSQLで [ ] が付くけど、
これってどういう意味なんでしょうか?
[ ] を付けないSQL構文をベタ打ちしていたのですが、
何かの拍子にクエリ実行時に応答がなくなるようになりました。
ACCESSのGUI機能で、テーブルから条件を抽出するようにすると
問題なかったので、自動生成されたSQL構文を見ると[ ]がついていました。
704 :
703:2010/07/11(日) 06:29:59
SELECT * FROM TEST WHERE (FLUG=1)
のようなSQL文が自動生成されたSQLでは
SELECT TEST.* FROM TEST WHERE (([TEST].[FLUG])=1)
のようになっています。
クエリの応答がなくなる条件を調べるため
SELECT TEST.* FROM TEST WHERE ((TEST.FLUG)=1)や
SELECT * FROM TEST WHERE ((TEST.FLUG)=1)
とすると応答がなくなりました。
SELECT TEST.* FROM TEST WHERE (([TEST].[FLUG])=1)
SELECT * FROM TEST WHERE (([TEST].[FLUG])=1)
では、すぐに結果が取得できました。
[ ] に何か意味があるようです。ADO等でJET DB Driver経由で
MDBを参照する際にも、上記の応答がないクエリを参照すると
例外が発生しますが、[ ] を付けるだけで動作するようになりました。
確かフィールドやテーブル名ってことを明確にする役割だったような
>>703 実際にクエリを処理するのはJetなどの各種データベースエンジン。
ドライバは、Accessで発行したSQL句をDBエンジンが解釈できるように
翻訳して渡す。
問題はDBエンジンやドライバ毎に個性(癖・バグ・仕様)があるので
SQL句がDBエンジンに解釈不能な形で渡ってしまう可能性がある事。
(特に英語圏以外では…)
フィールド名やテーブル名を[ ]を使って明示する事で、こういった問題を
減らすことができる。
※古いバージョンのAccessなんかだと、特定の漢字を使うとエラーに
なったりした経験あり。その場合でも、[ ]を付ければ回避できた。
access2010ライセンスを購入して
vlscみたら2003のプロダクトキーが無い…
電話したら教えてくれるのですか?
>>707 2010発表以降に新規購入のOfficeから、VLSCでは2003系のVL Keyは表示されなくなっている。
Volume License Call CenterにTELして手続きすれば、VL Keyをメールで発行してもらえる。
受付は平日の日中のみ(昼休み不可)。
mdbが壊れやすいって言うのは周知の事実らしいのですが
それをMicrosoftなどが公式に発表しているサイトとか知りませんか?
(2ちゃんやフォーラムじゃ根拠にならないといわれたもので・・・)
>>710 ありがとうございます
今から読ませて頂きます
2010のaccdb、パスワード掛けて閉じるときに最適化にしてると、閉じるときにパスワード聞かれて、なに入力してもダメ
>>712 まったく問題なくできてるよ
2007からupgrade install ならやり直してみ
それでもだめならOSから再インストール
まぁ環境すら書いてねぇから、何言っても無理かも知れんが。
>>713 アリがトン
空accdbに全部インポートしたら一応は治ったが、特定のaccdbじゃなく次々と同じ症状になるから何かある筈、再発する予感
環境は、Win7 と WinVista最新SP
WindowsLiveSyncでaccdbを共有して使ってる、自宅と職場の共有なので勿論同時使用ではない、通勤時間以上のインターバルがある
思い起こせばDropBoxで同期してた時は起こらなかった、WindowsLiveSync同期が怪しい…
>>714 WindowsLiveSyncが原因かもな。
暗号化は、二種類あるから違う方試してみれ。
>>716 アリがトン
来週試してみる
DropBoxの丸ごと同期と違って、LiveSyncは律儀にレコード毎同期してるのかな…
それはない
Accessってテーブルとフォームあわせて500までしか使えないの?
友人がどっかに載ってたって言うんだけど俺には見つけられなかった
ファイル→情報
2010の新しい方の暗号化だと、暗号化解除ができない、既に暗号化されてるのに「データベースパスワードの解読」のボタンがでないで「パスワードを使用して暗号化」のボタン
従来の暗号化だと、既に暗号化されてれば、「データベースパスワードの解読」のボタン
俺だけ?
2010持ってる方、見てみてくださいませ
>>721 あら、俺のはパスワードの解除が出来ない…
>>722 それはすでにググったんだぜイケメン!
でもどこにもあわせて500なんてのは見当たらなかった
Accessでユーザ毎にアクセスコントロールする時って、やっぱりテーブルにパスワード保存して
暗号化したりとかするもんなんでしょうか?それとも標準で何か機能を持ってますか?
726 :
707:2010/07/15(木) 05:40:08
>>708 遅くなりましたがレスありがとうございます。
TELしてみます。
>>725 2003以前の形式であれば、その機能は存在する。
Table と Form だけで 1000超えてるmdb動かしてるけど、問題ない。(Access2K)
追記 MDEは限界あるようだ。上記システムはオブジェクトが多すぎてMDEに変換できない。
メニュー画面考えて2日たった
丸いコマンドボタンとか欲しいよな
2010使ってるんだけど、ボタンって標準でつくると明るめのきれいなブルーになりますよね。
あのグラデーションな感じでシルバーにしたいんですが、うまくいきません。
テーマとか色選んでも希望のものにならないんです。
なにか方法があるのでしょうか?
>>732 ここのCommandButtonのとろこに様々な効果がある
ms-help://MS.MSACCESS.DEV.14.1041/MSACCESS.DEV/content/HV10295280.htm
>>732 テーマの使用:はい になっていることは当然として、
プロパティシートで細かく調整できないプロパティがあってな、
ShadeとかTintはVBAで設定してやらにゃならん時があるかもなだな。
コマンドボタンプロパティは40以上増えてるから、よーくにらめっこ
しておいたほうがよいよ。
そうんですか。割と複雑なんですね〜ありがとうございます
738 :
736:2010/07/20(火) 18:09:03
>>737 Webクエリ/Webマクロ以外のWeb用のオブジェクトにデザインビューは無い。
うん、VBAが全然ないねぇ、クラウド時代は全部マクロでええのかな
マクロで PreviousControl に SetFocus って工夫すれば出来る?
多用してるから、不可能ならマクロに移行できない
>>739 Webデータベースはだめだけど、そうでなければ可能だね。
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<UserInterfaceMacros xmlns="
http://schemas.microsoft.com/office/accessservices/2009/11/application">
<UserInterfaceMacro For="cmd01" Event="OnClick">
<Statements>
<Action Name="MessageBox">
<Argument Name="Message">=[screen].[PreviousControl].[Name]</Argument>
</Action>
</Statements>
</UserInterfaceMacro>
</UserInterfaceMacros>
741 :
736:2010/07/20(火) 18:30:01
>>740は、ちゃんと試してないから訂正
Webデータベースはだめ”かも”だけど、そうでなければ可能だね。
>>740 意味が解らん…orz
タイムアップ
今夜見るので、お時間があれば解りやすく解説付けといて下さいませ
>>742 おぅっふ。
マクロエディタ上でコマンドのコピペドラッグがかなり自由にできるようになったんだけど、
コピーした時クリップボードに入るのがそのxmlね。だから、それコピッてマクロエディタ上
に張り付ければいいって寸法。これ便利ね。
PreviousControlをいかように使うのか考えてなかったから、cmd01クリック時
の埋め込みマクロとしてある。MsgBoxにコントロール名が表示できたからSetFocusも
できるんじゃね?ということ。SharePoint環境が今ないのでWebデータベースで作動す
るかは判らない。
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<UserInterfaceMacros xmlns="
http://schemas.microsoft.com/office/accessservices/2009/11/application">
<UserInterfaceMacro For="cmd01" Event="OnClick">
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">tmpCtrName</Argument>
<Argument Name="Expression">[screen].[PreviousControl].[Name]</Argument>
</Action>
<Action Name="GoToControl">
<Argument Name="ControlName">=[LocalVars]![tmpCtrName]</Argument>
</Action>
<Action Name="MessageBox">
<Argument Name="Message">=[LocalVars]![tmpCtrName]</Argument>
</Action>
</Statements>
</UserInterfaceMacro>
</UserInterfaceMacros>
式ビルダでScreen.PreviousControlを参照できないから推奨されない方法かもだね。
セットフォーカスは難しい希ガス。
745 :
742:2010/07/20(火) 19:57:20
>>743 出来ました
ローカルでは動作しますね、オイラには十分です
どうも有難うございます
Access2007の条件付書式は3つまでみたいですが、2010では3つ以上出来る様になっていますか?
調べてもよくわからなかったもので。
orz
Dsum()までデータマクロでやるんかよ、参照整合性もデータマクロだし、もう大変・・
>>747 SharePointに発行する必要があるんならお気の毒様としか言いようがない。
実際にSharePointでaccess serviceを使う場合、クライアントとWebオブジェクトを用途に合わせ織り交ぜて
製造する必要があるわな。Dsumなんかは、テーブルイベントで加減算させてどっかに格納しておくっつー
感じじゃねぇの
750 :
746:2010/07/22(木) 15:32:03
Northwind 2010 webデータベースでもリレーションシップは張ってあるんだな
access service上でどこまで動作するのかわからんけど。
空accdbにインポートしてしばらくは治ってたが、再発orz
ピボットグラフを弄り回った後に暗号化がおかしくなってる印象、グラフの系列の設定部分
753 :
名無しさん@そうだ選挙にいこう:2010/07/25(日) 11:59:00
Access2007使ってるけど、インポートすると以上にファイルサイズが大きくなる
以前使っていたAccess2000の時はそんなことなかったし、やり方も変えてないのに
これは仕様(既知のバグ)ですか?
>>752 アップグレードインストールなら、OSも再インストールで問題切り分けがおすすめ
>>753 君が言うのだから、仕様(既知のバグ)ということでいいんじゃないかな
SQL ServerがNGじゃない環境で、Accessで開発するメリットってありますかね?
「VisualStudioがあるなら、ASP.netで組んだ方が検証も楽だしおススメ」
みたいなことがAccessの本に書いてあったのですが。
暑さのせいでネタ枯れ
2010
マクロでキーボードイベントのKeyAsciiとかKeyCode使った制御できますか?
うむ、なにをどう制御したいのかわからんが、思う存分制御するがいい。
759 :
名無しさん@そうだ選挙にいこう:2010/07/27(火) 18:42:31
KeyAsciiとKeyCode使えますか?
そんなことより、こんなゴミ糞と格闘するのは時間の無駄。
早くオープンオフィスなりファイルメーカーに移行するべし。
フォームやレポートでプロパティに「コード保持」があるじゃないですか?
「いいえ」にすれば軽くなるとは書かれているのですが
何故軽くなるのか、何故「はい」が必要なのかなどググッてもさっぱり分かりませんでした。
結局のところ、このプロパティにはどの様な意味があるのか
どなたかご教授して頂けないでしょうか?
>>761 > 何故軽くなるのか
コードがなくなるから、コードを読み込まない分だけ起動が早くなる
> 何故「はい」が必要なのか
コードが必要なフォーム/レポートでは、コードを保持しないといけないから
> このプロパティにはどの様な意味があるのか
コードが必要ないフォーム/レポートの起動を早くすることができる
不要なコードを一括で削除できるから、ファイルサイズも小さくできる
レイアウトビュー使ってて初めて気づいたHasModuleプロパティ
>>762 なるほど!
要するにコードが書かれているフォーム/レポートは必ず「はい」にしないとダメで
「いいえ」にした時点でコードが全て削除されてしまうってことですか
うっかり必要なフォーム/レポートでやってしまったら怖いですね
ありがとうございました
【 システム環境 】 WindowsXP, Access2003
【 VBAが使えるか 】 いいえ?(Excelでちょっとやった程度)
【 VBAでの回答 】 可
仕事で工数管理のデータベースを作ることになって先週からACCESSの勉強を始めました。
大体の部分は出来たのですが、累計工数のピボットグラフで困っています。
横軸が日付で、縦軸が工数の折れ線グラフで製品納期の日付の部分に
縦線を入れたいのですがうまく入れられません。というか正直、入れ方が分かりません。
ピボットグラフの折れ線グラフに縦線を入れる方法を教えてください。
また、その位置をフォームで入力した値によって変更できるようにもしたいです。
初心者なので説明不足ですがよろしくお願いします。
ピボットでは無理じゃないかな
OLE挿入でMicrosoftGraphってのがあるから、それでやってみれ
767 :
765:2010/07/29(木) 18:11:44
>>766 MicrosoftGraphでやったところ
下記のような表で納期部分を棒グラフにしたらそれっぽくはなりました。
ただ棒グラフなので線が太いです…
他に垂直線を出す方法はありませんでしょうか。
日 | 累計| 納期
1/1 | 100 |
1/2 | 200 |
1/3 | 300 |
1/4 | 400 |
1/5 | 500 |
1/6 | 600 | 800 ←適当な値
>>767 MicrosoftGraph
表示→ツールバー→図形描画→直線
769 :
765:2010/07/29(木) 23:46:44
>>768 その機能で引いた直線は
別のフォームで日付を入力した場合にVBAで位置を修正できるようにできますか?
出来れば、その方法も教えていただけると助かります。
多分できない
○。・。○。・。○。・。○。・。○。・。○。・。○。・。○。・。○
このレスをみたあなたは・・・3日から7日に
ラッキーなことが起きるでしょう。片思いの人と両思いになったり
成績や順位が上ったりetc...でもこのレスをコピペして別々のスレに
5個貼り付けてください。貼り付けなかったら今あなたが1番起きて
ほしくないことが起きてしまうでしょう。
コピペするかしないかはあなた次第...
○。・。○。・。○。・。○。・。○。・。○。・。○。・。○。・。○
2010の新しい暗号化方式、問題でまくり
従来の暗号化方式に戻したら、すべて解決しました
773 :
名無しさん@そうだ選挙にいこう:2010/08/05(木) 07:17:23
age
【 システム環境 】 WindowsXP, Access2007
【 VBAが使えるか 】 はい
【 VBAでの回答 】 可
【 検索キーワード 】 複数値フィールド 保存済みのインポート再実行
テーブルのバックアップ・レストアで
DoCmd.TransferSpreadsheet
DoCmd.RunSQL "INSERT INTO
等を使っていますが
Access2007の新機能、複数値フィールドがあると上手くいきません
何かいい方法はありますか?
>>774 いい方法というのはなんだろうかというのは置いといて。
複数値/添付ファイル型の場合処理が異なるから、その辺理解してコーディングしないとな。
該当するフィールドから情報を取り出すには、レコードセットとして扱うことになるんで、
DAOなり使って読み出し書き込みしないとならんのですよ
>>774 ありがとうございます
ウィザードでエクスポートを実行時、その設定が保存出来るので
DoCmd.RunSavedImportExport "ファイル名"
を使うと簡単なのですが、APIのフォルダ参照を使いたいので
C:\Documents and Settings\おれおれ\デスクトップ\バックアップxls 等だと
「おれおれ」さんじゃなく「あどみん」さんは使えない
引数がフルパスじゃなくファイル名だけなんですよね
「おれおれ\デスクトップ」をvbaから設定出来ればいいのですが
777 :
名無しさん@そうだ選挙にいこう:2010/08/10(火) 18:02:12
ImportExportSpecification.XML をVBAから書き換えろ
いきならフォームから新規行が消えてレコード追加不能になってオカシイナぁと
2010試用版期限切れたら読み取り専用になってたwww
10年くらい前にAccessでデータベースを作って以来久々なのでかなり劣化しています。
社内で、レストランのレシピをデータベース化したいと考えています
@レシピデータを一度でも入力しておけば、検索でレシピデータを閲覧できる
A閲覧したレシピデータをA4サイズの紙にプリントアウトできる。
どのような感じで作っていけばいいと思いますか?
特に聞きたいのは
@入力したデータをデータベース起動時、編集不可で閲覧できるか
>>779 漠然としてる件は置いといて、
下の@は、フォームプロパティの設定で問題なく要件を満たせる。もしくはレポートビュー。
官公庁提出用書類は最近PDFの雛形が増えてるけど、Accessで管理するのは難しいですか?
PDF定型書式に入力して印刷して提出を沢山行う場合、Accessでデータ管理したいのですが
AdobeのAcitonScriptとADBCでAccessデータベースに繋いだりしてみたのですが、非常に煩雑で
だったら始めから全部Accessでやれば良いじゃんって考えに至って…
PDF定型書式の入力・印刷をAccessで行っている方は居りますか?
定型PDFからのレポートとフォーム作成のコツなどありましたら教えてください
>>781 情報の管理自体は特段に難しいことじゃないと思えるけど、
PDFの生成っつーか、ひな形PDFにアノテーションな感じで情報乗っけるんでしょ?
その場合、PDF書いてくれる中の人にどうやって情報渡すかっつーことかな。
ああ、adobeはガチガチですねぇ、全部adobe製品でやりなさいってこと、adobeの高価なLiveCycleなんたら買うとスマートにできるよ
ちょっと想定外の使い方すると壊れるなぁ
データシートフォームでキーボードイベントとエンターイベントとWinAPI組み合わせてIME制御してたら、あっというまにaccdb壊れた
コントロールレイアウトはコードで操作できないのですか。
Access2010
必要があってクライアントの設定[データシート上でIME制御する]をONでIMEは自分で制御なんだが、データシート以外でも全てのフォームでIME自動制御しなくなるorz
ん、これはおかしいかもぞ。
[データシート上でIMEを制御する]をONにした場合、コントロールやテーブルフィールドの
[IME入力モード]を使用不可にしても、使用できてしまう動きをしておるよ
前からそんな感じじゃなかったっけ?
IMEの制御をする/しない という感じに脳内変換してたんだけど。
データシートでも自分でコード書いてIME制御しないと、桐のような操作感は実現できないよね。
Access2010では無理なん?
【 システム環境 】 WindowsXP, Access2007
【 VBAが使えるか 】 はい(初心者レベルです)
【 VBAでの回答 】 可
【 検索キーワード 】 重複
ID 人名 読み アイテム名
AAA BBB CCC アイテム1
AAA BBB CCC アイテム2
AAA BBB CCC アイテム3
AAA BBB CCC アイテム4
フォーム上にて、一覧名簿から個人が複数所持しているアイテムをフィルタしてアイテムを所持している人名を抽出したいのですが、
個人にアイテムのデータを持たせるとアイテムごとにレコードが増えててしまい、一覧名簿が上記のように同じ人名がアイテムの数だけ何個も表示されてしまいます。
人名を重複させず、アイテムで人名を抽出する方法を教えていただけないでしょうか?
※2007の機能で、アイテムを複数の値を持った状態からVBAで抽出しようと試みた所、
実行エラー'3831':「WHERE 句や HAVING 句では、複数値を持つフィールド'アイテム名'を使用することはできません。」と表示されてしまい抽出出来ません。
どうかご教示お願いします。
793 :
名無しさん@そうだ選挙にいこう:2010/08/27(金) 10:09:30
俺、アクセスを習得して就職するんだ……
ネクタイもかってあったりして
Access2000です。
インポート→オプションで、他のmdbから
「インポート/エクスポートの定義」をインポートすることができるけど
これをVBAでやる方法ないですかね?
システムテーブルのMSysIMEXSpecsとMSysIMEXColumnsからクエリつくって
インポートするしかないのかな。
でもそれだと主キー調整しなきゃいけないみたいでちと面倒。
>>794 ようわからんが、TransferDatabaseでインポートとじゃいかんの?
2010の、開いてるタブを多段表示にする事は出来ませんか?
一々矢印をクリックして左右にスクロールするのは面倒臭いです
798 :
名無しさん@そうだ選挙にいこう:2010/09/01(水) 20:41:39
殆ど全部をVBAで書くのが面倒くさくてかなわん
アクションクエリを実行させれば出来るようなものは、全部クエリ対応
これって素人的発想ですか?質問自体が愚問ですかね・・
>>798 ある程度理解してくると、今度はそれが面倒になってくるのですよ。
VBEからクエリのデザインビューを開いてとか、クエリがいっぱいになって
どのクエリが何をやっているのかわからなくなったり。
800 :
名無しさん@そうだ選挙にいこう:2010/09/01(水) 20:56:06
>>799 たしかに摘要みたいな所に番号とか振ってないと
訳わかんなくなりますもんね。
では、クエリの代わりにほぼSQLで対応っていうのも、
同じく素人発想ですかね。
がちがちのVBAだと、IFとLOOPを見てるだけでウンザリなんです。
>>800 普通にsqlは使うよ。なるべく使いまわせるようにConstしたりして。
抽出だと抽出条件が変わるだけで後は一緒だからね。
あとその人の書き方の癖もあるだろうけど、自分の場合は
ConstとDimは混ぜないから視認性がいいね。
802 :
名無しさん@そうだ選挙にいこう:2010/09/01(水) 22:04:55
>>801 ありがとうございます。
定数を使うのは浮かばなかったです。
そのままダラダラ書くところでした。
これで、めんどくさいVBAからある程度開放されそうです。
>>802 定数化はsql以外にもできるだけしたほうがいいよ。
同じ「1」でもまったく違う意味合いのときがあるでしょ。
定数に修正が生じたときも、宣言部で値を変えるだけでいいし、
別の意味合いの「1」には影響を及ばないしね。
定数って解らん…
何で変数じゃダメなん?
>>804 値が変わるから(またはその可能性があるから)変数を使うわけじゃん。
変わらないのなら定数。
でVBも多分同じだと思うが、変数は開放されるまでメモリを消費する。
定数はコンパイル時に宣言された数値に置換する。
違ったらどうしようw
あー、805じゃどうして使うかの説明にはならんかな。
>>804の名前が田中一郎だとする。これが定数。
が、あいにくクラスにはタナカイチロウが5人いるわけだ。
フルネームで呼んでも5人が反応してしまうから、それぞれにあだ名つける。これが定数化。
つまり人間側の都合だよ。
在日の場合複数の通名を切り替えて使えるから便利。公的証明書も取れる。
つまり特権階級だよ。
enumとは違うん?
>>808 似たようなものだが、VBでは整数が確か扱えない。
また、何の関連性もなれば余計混乱を招く元になる。
使い分けられれば、さらに可読性の高いコードになるんじゃない。
>>810 ×VBでは整数が確か扱えない
○VBでは整数しか扱えない
帳票(表形式)フォームで入力中に [ESC]でUnDoするとスクロールしちゃってフォーカスが表示範囲外になるのは
対応方法はありますか?
vbaとaccessを0から学んで自分でソフトを作れるレベルになるまでに、早くてどれくらいかかりますか?
>>812 フォーカスが表示範囲外ってのがわからんのだが、Undoイベントで処理すりゃいいんじゃねぇの?
>>813 素養に影響されるだろうから、そんなことわからんだろうよ。
815 :
812:2010/09/08(水) 22:54:45
表形式で入力中に誤入力に気付いて、ESCキーで入力を戻すと勝手にスクロールしちゃってフォーカスを失います
実際には画面上に表示されてないレコードにフォーカスがあります
非常に使いにくいです
画面上に新規行が見えるスクロール位置でESC操作をすると頻繁に生じます
Access2010使用しています。
「ID」「comment」「time」の三つのフィールドをもつ「T_test」というテーブルをつくりました。
「comment」を入力した際に自動的に「time」にその時刻が入力されるようにしたいと思っているのですが、
うまくいかず弱り果てております。
「デザインビュー」→「データマクロの作成」→「更新後処理」を選び、
以下のように記述しましたが、うまくいきません。
どのあたりが間違っているのでしょうか?
------------------------------------------------
If Updated([comment]) Then
レコードの編集
別名
フィールドとの設定
名前 T_test.Time
値 =Now()
レコードの編集の最後
If文の最後
------------------------------------------------
>>816 フィールドの規定値でいいじゃん。
T_testのtimeフィールドの規定値にNow。
つーか、timeなんてフィールド名をく使えるね。
俺は怖くて使えない。
>>817 フィールドの規定値にNowをいれると以下のような不具合が生じるのです。
なんとかならないでしょうか。
------------------------------------------------------
ID=1のデータを入力すると、次のレコード(ID=2)が新規で出現する。
そのタイミングで、ID=2の「time」に現在時間が入力されてしまう。
つまり
ID=2の「time」には、ID=1を入力した時間が入力され、
ID=3の「time」には、ID=2を入力した時間で入力される
といった具合に、一つずつずれていってしまうようです。
(なぜそんな仕様になっているのかは不可解ですが)
-----------------------------------------------------
実際には「Time」というフィールド名は使っておりません。
さすがに怖いですので。
819 :
813:2010/09/09(木) 00:38:55
そうですよね。自分、何から手をつけていけば良いのか分からないので、どなたか、vba+accessでソフト作れる程度になるまでの、アウトラインを提示していただけませんか?
例えば、まずコレ読んで、次アレ作って必要ならソレ習得して〜みたいな感じで。
>>818 いや、レコード確定時の時間が入るわけだから
次のレコードにフォーカスが移る寸前の時間が入るのは当たり前だが。
わりー、マクロは自信ないし2010は持っていないからほかの人の回答を待ってくれ。
>>819 とりあえずAccessの初心者本を何でもいいから買う。
そして最低限コミュニケーションできるだけの知識(要は用語)を身につける。
ネットで検索するにしてもヘルプを見るにしてもこれが最低条件。
VBは関数辞典みたいなのと応用プログラムとか実践編とかがあれば十分。
初心者的なのはいらない。
821 :
820:2010/09/09(木) 01:00:53
822 :
名無しさん@そうだ選挙にいこう:2010/09/09(木) 01:26:21
>>821 いえいえ、レスいただきありがとうございます。
同じ症状に悩んでいる方いそうなんですが・・・。
823 :
813:2010/09/09(木) 01:47:51
>>820 ありがとう。また躓いたら質問に来ます!
>>824 VBAならどのように組めばいいでしょうか?
また組んだプログラムをどこに登録すればよいでしょうか?
>>825 ありがとうございます。
しかしながら[変更前]では難しそうです。
828 :
825:2010/09/09(木) 11:02:53
変更前データマクロ
If Updated("[comment]") Then
フィールドの設定
名前 Time
値 =Now()
If文の最後
>>828 できました!!「難しそう」などといって申し訳ございませんでした。
さらにもう一歩進んで、
[ID](主キー)が更新されたとき =[入力日時]に時刻入力
[ID]以外のフィールドが更新されたとき=[最終更新日時] に時刻入力
としたいのですが、
下記マクロ中の(******)の部分に、
「[ID]以外のフィールド」を指定するには、どのように記載するとよいのでしょうか?
--変更前データマクロ-------------------
If Updated("[ID]") Then
フィールドの設定
名前 入力日時
値 =Now()
If文の最後
If Updated(******) Then
フィールドの設定
名前 最終更新日
値 =Now()
If文の最後
------------------------------------
ACCESSか.net(VisualStudio)か、というのはどういう基準で判断したら良いのでしょうか?
831 :
825:2010/09/09(木) 12:08:48
>>829 > [ID](主キー)が更新されたとき =[入力日時]に時刻入力
> [ID]以外のフィールドが更新されたとき=[最終更新日時] に時刻入力
[ID]も含めて、どこでも更新されたときに [最終更新日時] に時刻入力 で良いと思うが…
拘るなら、必要なケースのみ「更新後処理」で戻したら?
って、もうタイムアップ帰宅時間
832 :
名無しさん@そうだ選挙にいこう:2010/09/09(木) 13:10:45
>>831 >[ID]も含めて、どこでも更新されたときに [最終更新日時] に時刻入力 で良いと思うが…
たびたびありがとうございます。
たしかにそうでした。IDだけ変更するということは普通はありえないわけですし。
「いずれかのフィールドが更新されたとき」を表したい場合は、
以下の***になにをいれればいいのでしょうか?
ご存じの方がいらしたらご教授くださいませ。
If Updated("[***]") then
>>832 If Updated(******) Then ←削除
フィールドの設定
名前 最終更新日
値 =Now()
If文の最後 ←削除
>>833 Ifはいらないのですね・・・。
これで問題解決しました。
みなさまありがとうございました。
IsInsert 知ってれば悩むこともなかったろうに。
836 :
名無しさん@そうだ選挙にいこう:2010/09/10(金) 15:29:55
Access2002を使用しています
フォームでコントロールにフォーカスを移動した際
なぜか内容が見えなくなってしまうコントロールが一箇所だけあります
そこはSelstartで文末に自動で飛ぶようにしてあるコントロールなんですが
特定の複数の別のコントロールからフォーカスを移動すると
内容がきえてしまいます
矢印キーの左を押すと出てくるのですがきわめて使いづらいです
何が原因でしょうか?
837 :
名無しさん@そうだ選挙にいこう:2010/09/10(金) 22:14:14
Access2010をつかってます。
マクロでWhere条件によるフィルター実行をかけました。
ワイルドカードで部分一致するレコードを抽出するんです。
フォームは表形式で、抽出自体は上手くいったんですが
なぜか勝手にレコードの順番がバラバラになってしまうんです。
なぜ主キー通りの順番に抽出されないんでしょう?
>>815 各コントロールの更新後処理で、
Docmd.Runcommand acSaveRecord
を実行しておけば、ESCでUndoしないし、別のレコードにもフォーカス移動しない。
>>837 なぜ と言っても、君が順番を指定してないからなんだが、アクセス君はエスパーでないから君の希望を予測しての動作はしないよ
主キー通りの順番 にしたければ、そのように並び替えを指示しないと
で、つぎにくるのは「テーブルでは主キー順に並んでいるのに…」だろうな。
order by ascとかでもダメなもん?
id
質問です。
エクセルの表をアクセスにインポートし、リレーショナルで正規化・最適化して
いろいろ調整して3日かけて完成するとします。
この間、エクセルの表が3000件とか増えた場合、この分を取り込むにはどうしたらいいですか?
完成した奴をデータだけクリアして、ひな形にしても
だから何?って感じでなにも進まない
追加した分、インポートしてみても、当然正規化した後のテーブルとは何のつながりもないし
それをリレーショナル掛けて同じ形式で2重にテーブル作った後に、それぞれくっつけようとすると
まともにさらに3日かかってしまいイタチごっこに・・・・
まさか3日分の作業手順を「記録」かけて、一気に?
がんばれよ
>>838 > 各コントロールの更新後処理で、
> Docmd.Runcommand acSaveRecord
実は別の理由で既にそれを行っているんだが…
テキストボックス入力に間違いに気づいてESC押すとスクロールしちゃってカレントレコードが画面表示外に移動しちゃうのよ
レコード数が多い表形式フォームでスクロールした後に頻繁に生じる、特に新規行が見えるスクロール位置でのESC
データシートでは起こらない
Accessは表形式フォームはダメじゃないかと思える
>>843 >エクセルの表をアクセスにインポートし、リレーショナルで正規化・最適化して
>いろいろ調整して3日かけて完成するとします
大抵はここを自動化するプロセスから始めるんだけどね。
比較的簡単なのはExcelのデータを一時テーブルにそのままインポートして
その後、正規化したテーブルにデータを分解していくとこか。
>>846 要は設計中の更新分を後で取り込む芸当は無理難題ってことでFA?
>>847 excelのデータの形式というか様式がAccessのテーブルにそのまま取り込めるようなら
とりあえず取り込んでおけばいい。
重複とか出るのならクエリをかまして重複をなくしたり、一時テーブルにデータ取得日を設定しているのなら
それを条件にデータを抽出。
もしくはすでにあるデータと外部結合させれば追加分のデータが取れるだろう。
結論を言えば、スキルによるとしか言いようがない。
実務では製作中にデータが増えるなんて、ごく当たり前のことだし。
>>848 よくわかってないようだな・・・・
テーブル分けしてない元のエクセルのデータをどうやってそのまま取り込めるというんだ?
どうやってマスター増えた分のIDの整合性取るというんだ?
最悪、元の形にデータを戻して比較するっていう手もあると思うけど。
まあ、主キーにID使ってる時点で…
必要なら完全移行後にID作れば?
>>851 こいつわかってんのか?
主キー関係なく、テーブルはマスターファイルのID値で引っ張るだろ
お前、マスターテーブル別に作ってあるのに、各テーブルの商品名に、マスターID値じゃなく商品名書いてんのか?
それDBじゃなくテーブル分けてるだけじゃん
>>852 あえて商品コードとか商品名を直書きとかする場合はあるなぁ。
商品コード変更とか商品名変更とかはよくあることだから。
ここまで具体的な回答なし。
みんな口だけ。
>3日分の作業手順を「記録」かけて、一気に?
これでおk。
別に設計中にデータそのものをいじる作業は全くない。
インポートからレポート・フォームまで全部記録して
完成したら最新のエクセルファイルを用意して一気に「再生」で終わり。
>>853 馬鹿じゃねーの?
商品コード変更とか商品名変更なんてマスターテーブルだけで出来るだろ
なんで他のテーブルに商品名直書きする必要がある?
アホなDBだこと
>>855 過去の分が変わっちゃうじゃん。場合によっては商品コードを使いまわすことだってありうるんだよ。
>>854 そう、それ聞きたかったんだけど、マクロの記録見たいのが装備されたの?
>>856 馬鹿じゃねーの?
マスター変更履歴処理とか知らんのか
お前、結婚して苗字変わったとか、異動して部署配置変わったとかの処理したことねーの?
そういうの全部直書きかよwwww情けねー奴
エクセルから移行するならキーはテキストだろ常考、完了後にIDれば良いじゃん、俺はテキストのままにしとくが
>>858 全然意味不明
完了後にIDるって何のメリットがあるんだ?
それが10分で100件マスター増えるようなDBでも対応できるのか?
>>858 っていうかお前エクセルの何を移行するか自体把握してないだろ?
何時でもエクセルに戻しやすいようにキーをテキストのままにしている俺、先々MSaccessがポシャッても俺のデータは永遠だ
>>845 ちょっと間違えてたので訂正
× Docmd.Runcommand acSaveRecord
○ DoCmd.RunCommand acCmdSaveRecord
>レコード数が多い表形式フォームでスクロールした後に頻繁に生じる
ちゃんと手入力する可能性のある全てのコントロールの更新後処理に入ってる?
スクロールした後ESCでフォーカスが飛ぶんだから、どこかの記述が抜けてるんじゃないかな。
もしくは、DoCmd.RunCommand acCmdSaveRecordの前に
既にレコードが移動してしまっている原因があるとか?
とにかく、ステップインで1行ずつ、どこで別のレコードに移動しているのか
原因を探るしかないような気が。
>>861 お前はクエリで元のエクセルそっくりに出力させられることすら知らんかったのか?
つーかエクセルからのインポートウィザードで、最後親切にそれやってくれるだろ
テキストボックス入力中にESCキーで戻すとスクロールするのは大昔から治ってないよ、少なくともアクセス2000の時からはズーット。
DoCmd.RunCommand acCmdSaveRecord の有無も無関係で起こります。1つのテキストボックス編集を途中で戻すだけで起こりますから。
どうにもなりません。
なんか一人変なのがいるな
アクセスはバカバカしいのに気付いた
帳票フォームで何百行も表示するのは向いてないです。エクセルを使ってね。
>843
> いろいろ調整して3日かけて完成するとします。
> この間、エクセルの表が3000件とか増えた場合、この分を取り込むにはどうしたらいいですか?
今週末の三連休で完成させるといいよ。
Access2010です
1.テキストボックスAAA のBeforeUpdateイベントで、AAA.Undo って効きませんか? 何か変
2.フォームのBeforeUpdateイベントで、Me.Undo は効きましたが、Me.UndoしてもフォームのAfterUpdateイベントは発生してしまいますか?
フォームのAfterUpdateイベントで更新日時を書き込んでいますが、Me.Undo した時も更新日時が書きこまれてしまいます
870 :
969:2010/09/14(火) 13:23:24
自己解決しますた
>>862 > とにかく、ステップインで1行ずつ、どこで別のレコードに移動しているのか
> 原因を探るしかないような気が。
別のレコードには移動しませんです
フォーカス持つレコード・コントロールは維持されてますが、画面自体がスクロールしてフォーカス部分が表示領域外に移動してしまいます
>>864,
>>871 うーむ。
864も踏まえると、該当コントロールのキーイベントか何かで
ESCキーを無効にするしかないのかな。
それだと、入力中に間違い気づいたときESC出来ない…
874 :
名無しさん@そうだ選挙にいこう:2010/09/20(月) 20:55:41
レポートを作成しているのですが、
詳細セクターにおいて、他の隣のコントロールソース次第で条件分岐して、書式を変更することは可能なのでしょうか?
単位の表示形式を条件により変えたいのです。aのときは##回、bのときは##時間
formatだかprintだかでできるんじゃないの
876 :
名無しさん@そうだ選挙にいこう:2010/09/21(火) 00:09:02
>>875 標準機能では無理ですかやはり
VBAで、ifとかselect caseですね。
標準機能だろ
「やっぱり」?
878 :
名無しさん@そうだ選挙にいこう:2010/09/22(水) 09:33:58
access2002を使っています
フォーム上でCtrl+fの"検索と置換"を用いてレコードの検索を
行っているのですが,なぜか結果が表示されなくなってしまいました.
左下には"指定した文字列が見つかりました"と表示されているのですが,
検索したレコードに飛ぶことができません.以前はできていました.
また,違うコントロールで同様に検索したところ,検索したレコードに
飛ぶことができました.よってある特定のコントロールでのみ
検索ができないようです.なにか検索結果が表示されなくなるような
属性などがあるのでしょうか?
よろしくお願いします.
>>876 標準機能も何も普通に関数ifで出来るよ
詳細セクターで他ボックス内のフィールドを条件に使えばよろし
880 :
873:2010/09/23(木) 11:00:41
フッターで単位ごとに集計とるにはどうすればいいですか?
あれっ、873は俺なんだが…、君はレス番号ズレてないかい?
ところで、Tint と Shade で何故に別々に存在するんだ、解りにくいよ
両方100に戻さないと色戻らないし
882 :
名無しさん@そうだ選挙にいこう:2010/09/28(火) 19:16:55
初歩的質問で恐縮なのですが教えてください。
「インデックスが有効範囲にありません」というエラーはACCESSでも
存在するものですか?
>>882 あったと思う。つうか「インデックスが有効範囲にありません access」でググッたら
出てくるじゃないか。
884 :
名無しさん@そうだ選挙にいこう:2010/09/28(火) 21:14:29
>>883 ありがとう。
数分前にはうまく行っていた作業が、クエリもプログラムも変更してないのに
いきなりそのエラーが出て困ってたとこでした。
885 :
名無しさん@そうだ選挙にいこう:2010/09/29(水) 13:45:21
Access2010です
テーブルでメモ型フィールドを作成しました。
テーブルに直接データを入力しても途中までしか保存されません。
同じ文字列をtxtに張り付けてサイズを見たところ476バイトでした。
改行を1行減らしたところ478バイトまで保存されました。
情報をお持ちの方がいらっしゃったらアドバイスをお願いします。
>>885 環境ぐらい書きなよ。
OS 64/32 他バージョンと共存させてるとかさぁ
新規accdbでなるんかえ?別環境で試してみたか?
さっくり試すと仕様通りに入るからさ、原因を探せるようにしてみれ。
>>886 申し訳ないです。
いろいろ確認したところ、自己解決しました。
原因はフィールドの書式に設定されていた "@" でした。
もともとExcelからインポートしたテーブルで、テキスト型からメモ型へ変更したフィールドでした。
書式に "@" が残っているとテキスト型と認識してしまうようです。
新規テーブルでも "@" を追加したら同じ現象になりました。
お騒がせしました。
888 :
885:2010/09/29(水) 14:33:54
すみません追加です。
別PC Access2003でも同じだったので以前からの仕様かもしれません。
もしかしたらヘルプなどに載ってるのかもしれませんが探しきれませんでした。
知らんけど、書式上の話だから、表示が切れてるだけで、
保存・格納は全部されてる可能性はないの?
Len(DLookup(....))
とかでテーブル直で確認すれば分かると思うけど。
890 :
名無しさん@そうだ選挙にいこう:2010/10/02(土) 23:23:57
VBAの質問なんですけど
DSum("[test_aa]", "test_tbl", "[日付] = #2010/1/1# ")
なら、動作するんですが
Dim test_hizuke As Date
DSum("[test_aa]", "test_tbl", "[日付] = test_hizuke ")
は異常になります(#test_hizuke# 'test_hizuke'も)
教えてください
これでダメか? 試してないが
DSum("[test_aa]", "test_tbl", "[日付] =#" & CStr(test_hizuke) & "#")
結局、Excel と桐の組み合わせが最強
250万行×8行くらいのデータを
アクセスをデータベース本体として使って
計算をエクセルでやろうと思うんですが、重いですかね?
最近のパソコンなら屁でもない
つーか重いの重くないのはデータ量より処理による
DatasheetBorderLineStyle って設定できるの、なにも変化しないんだけど
>>895 バックエンドでやるなら、Accessじゃなくてもいいんじゃないか。
フリーのDBだってあるんだし。
899 :
名無しさん@そうだ選挙にいこう:2010/10/05(火) 13:16:03
ACCESS2003で作成したDBをOSがVISTAのPC上で動かそうとして
ACCESS2007ランタイムを入れました。そしてACCESS2003で作成したDBを実行すると
セキュリティ警告がでます。
「警告:コンテンツの発行元が信頼できるかどうか確認することができません・・・」と表示され、
そこで「開く」のボタンがあるので押しても画面は変わりますが開きません。
どうも、ACCESS2007があれば、セキュリティセンターで信頼できる場所をDBに
登録すれば動作するようなのですが、今のところ当方はACCESS2003しか
所有していません。結局、ACCESS2003で作成したDBはACCESS2007ランタイムでは
動かせないということでしょうか?(VISTAのPCのレジストリをいじる方法があるようですが、
配布するPCごとにそれはやるのは大変なのでそれは行ないたくありません。)
>>899 2007持ってないのに配布先で2007Runtime使うのはライセンス的な問題があるような気がする。サポートに確認して。
2007製品版で動作確認取らないっつーのもちと問題があるんじゃね?
まぁ2007Runtimeでも、mdbを開けるわけで。起動時の設定をしてないってことはないよな。
セキュリティの設定は、一台ずつちまちまやるか、レジストリ書き込むコード仕込んで最低一度は実行するとか
office2007インストールされていれば、Runtimeでもセキュリティーセンターを開くことできるし、
2007製品版のパッケージソリューションウィザードつかうとかさ、やり方はいろいろあるさ。
まぁ、がんばれ
901 :
名無しさん@そうだ選挙にいこう:2010/10/05(火) 15:38:05
>>900 >2007持ってないのに配布先で2007Runtime使うのはライセンス的な問題があるような気がする。サポートに確認して。
>2007製品版で動作確認取らないっつーのもちと問題があるんじゃね?
あーそうなんですか、サーセン。ライセンスについて確認します。
動作確認についてもそうなんですけど、やっぱり2007買うかな〜
>まぁ、がんばれ
ありがとうございます。
Access2000とかの頃は開発者ライセンス持ってないとランタイムの配布駄目だったけど、
今はどしどし配布できるようになってた気がする。
Form1 から ダイアログForm2 を開いて、ダイアログForm2 上の2つのテキストボックスに Form1.name と From1.ActiveControl.Name を表示したいです
どのようにすれば出来ますか?
>>903 遷移後フォーム上で遷移元のForm.nameとActiveControl.Nameを取りたいってことか?
遷移元
Private Sub コマンド0_Click()
DoCmd.OpenForm "formDialog", , , , , acDialog, Me.Name
End Sub
ダイアログ
Private Sub Form_Open(Cancel As Integer)
Me.txt01 = Me.OpenArgs
Me.txt02 = Forms(Me.OpenArgs).ActiveControl.Name
End Sub
これでいいか?まぁこれだとコマンドボタン名が取れるだけだがなぁ
906 :
903:2010/10/05(火) 17:12:20
ドモアリガト ミスターロボット
907 :
名無しさん@そうだ選挙にいこう:2010/10/06(水) 13:32:38
【 システム環境 】 Windows XP, Access 2000
【 VBAが使えるか 】 いいえ
【 VBAでの回答 】 できれば否
【 検索キーワード 】 access 入力規則 フィールド名 データ型 組み合わせ
フィールド名:得意先コード / データ型:数値型
フィールド名:商品コード / データ型:数値型
としてテーブルを作ってます。
入力規則として「商品コードは1 or 2 or3」といったものは設定できてます。
これに加えて、
「得意先コードが100の場合、商品コードは1 or 2のみ受け付ける」、
といったようなことがしたいのですが、どのように設定すればいいのかわかりません。
おわかりのかた、ご教示いただけないでしょうか?
テーブルでやりたければ、Access2010にする
フォームで良いのなら、更新前イベントで
>>907 フォーム上だったら、更新前処理で入力チェックしたほうが簡単なような気が。
Access2003で質問があります。
COMアドインの追加、削除をしたいのですが、COMアドインを操作するダイアログは
どうやって表示するのでしょうか。Access2007ですと、
[Officeボタン]-[Accessのオプション]-[アドイン]選択-[管理]「COMアドイン」選択-[設定]
にあたる画面です。
メニューの[ツール]-[アドイン]や[オプション]などそれっぽいところを探してみたのですが
見つけられず、ヘルプやGoogleで「COMアドイン」などで検索してみても探しきれませんでした。
どうぞよろしくお願いします。
>>910 ツール→アドインでアドインマネージャーを起動する。
>>911 返信有難うございます。
自分が勘違いしてしまっている可能性もあるので、念のため確認させてください。
Access2007のアドインマネージャは通常のアドインとCOMアドインは別管理になっていて、
アドインマネージャで管理可能なものは拡張子が accda、.accde、mda、mdeのアドインだけでした。
Access2003のアドインマネージャでも拡張子mda、mdeのファイル選択を要求されたので、
COMアドイン(拡張子exe、dll)は別管理だと考えていました。
試しにAccess2003アドインマネージャで対象のCOMアドインを選択してみたのですが、
データベースの形式を認識できません、というエラーになってしまいました。
>>912 わりー
ツール→ユーザー設定でコマンドタブ選択→分類(左側のボックス)からツール穂選択↓
コマンド(右側のボックス)からCOMアドインをツールバーまたはメニューにドラッグ
これでダイアログが表示できるようになる。
>>913 無事、COMアドイン管理画面を表示することが出来ました。
これは少なくとも、自力ではまず到達不可能でした。。。
有難うございました。
915 :
907:2010/10/07(木) 08:13:20
>>908,
>>909 ありがとうございます。
更新前処理というのがあるんですね。
入力はフォームからしてます。
(事後報告で申し訳ないです)
まだ具体的にやり方まではわかりませんが、調べてみて
わからなければまたよろしくお願いします。
助かりました、ありがとうございます。
916 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 12:08:35
ACCESS2002でシステムを社内で作って使っていたのですが、担当者が退社してしまいました。
その後、現在動いているACCESS2002のMDBファイルを改良しないといけなくなりました。
しかし、そのMDBファイルで例えばマクロの中身を見ようとすると
「○○○(←マクロ名)を読み取る権限がありません。
このオブジェクトを読み取るには、このオブジェクトの[構造の読み取り]権限が必要です。」
と表示されて見ることができません。
モジュールの中身は見ることができます。
クエリー、フォーム等のデザインは「読み取り専用」で開くことはできますが、読み取り専用なので
修正して保存することができません。
この「権限」というものはこの制限をかけられたMDBファイルを何かすると変更できるものなのでしょうか?
それとも、制限がかかってないMDBというのを探してそれを修正していくしかないのでしょうか?
よろしくお願い致します。
>>916 ユーザーレベル権限はPCに設定されています、MDBを別のPCにコピーして開いてね
918 :
907:2010/10/07(木) 12:14:39
>>907です。
初めてのVBA、調べながらなので今までかかってしまいましたが
なんとか思うとおりに出来ました。
Private Sub 商品コード_BeforeUpdate(Cancel As Integer)
If Me.得意先コード.Value = 100 Then
Select Case 商品コード
Case Is = 1, 2
Case Else
MsgBox "商品コードが違ってます"
End Select
End If
If Me.得意先コード.Value = 101 Then
Select Case 商品コード
Case Is = 2, 3
Case Else
MsgBox "商品コードが違ってます"
End Select
End If
End Sub
Case Is = 2. 3 の条件に一致したらスルーする、
If Me.得意先コード.Value = XXX Then を得意先コードの分だけ書くという
鈍臭いコードですが、希望のとおり動いたのでご報告まで。
もっとスマートな方法があればまたご教示ください。
ありがとうございました。
919 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 12:39:58
>>917 素早いご回答ありがとうございます。
「別のPCにコピー」は例えばMDBファイルをファイルとしてUSBメモリなどにコピーして
他のPCで動かしてみればいいのでしょうか?
この方法で他のPC2台でやってみたのですが、同じなのですが、その人の開発用PCで
実行しないと駄目なのでしょうか?
>>918 select〜caseが逆だろう。得意先コードがcase文。
Private Sub 商品コード_BeforeUpdate(Cancel As Integer)
Select Case Me!得意先コード
Case 100
If Not (Me!商品コード >= 1 And Me.商品コード.Value <= 2) Then
MsgBox "商品コードが違ってます"
Cancel = True
End If
Case 101
If Not (Me!商品コード >= 2 And Me.商品コード.Value <= 3) Then
MsgBox "商品コードが違ってます"
Cancel = True
End If
Case Else
If Not (Me!商品コード >= 1 And Me.商品コード.Value <= 3) Then
MsgBox "商品コードが違ってます"
Cancel = True
End If
End Select
End Sub
921 :
920:2010/10/07(木) 12:46:21
間違えた
Me!〜かMe.〜.Valueのどちらかに統一してコードを読んでくれ。
> ACCESS2002でシステムを社内で作って使っていた
とは関係ない自宅のPCとか
あと、当該PC内でファイル *.mdw を検索して、削除( *.mdw.org にリネーム)するとか
923 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 13:07:42
>>922 あまり詳しく書くと特定されるかと思って(w)書かなかったのですが、
開発した人が東京本社の人で、その人が作って私がいる田舎の工場に送って動かしていたんです。
>あと、当該PC内でファイル *.mdw を検索して、削除( *.mdw.org にリネーム)するとか
すみません、この「当該PC」とは開発者が開発に使っていたPCということでしょうか?
> 当該PC
普段そのMDBを動かしてるPC
925 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 13:24:48
>>924 >普段そのMDBを動かしてるPC
そうですね(汗)
↓この場所にあったので
C:\Documents and Settings\user name\Application Data\Microsoft\Access\System.MDW
System.MDW をSystem.mdw.org に変更してみました。そして該当MBDファイルを開いて見ましたが
制限はかかったままでした。
その後System.MDWがあったフォルダを見るとSystem.MDWがまた出来上がっちゃっていました。
難しですね〜
(長々とすみません)
ありゃあ、じゃあ Shiftキーを押したままmdbを立ち上げてみて
927 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 13:35:31
>>926 それでもだめでした。
(罠が仕掛けていったのかw)
因みにSystem.MDWは自動的にできたていたので、最初System.MDW をSystem.mdw.org にしたのは
ほっておいていいでしょうか?
928 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 13:44:18
>>927 追伸:最初System.MDW をSystem.mdw.orgのままでも
他のACCESSのファイルの試しに動かしてみても問題ないようです。
>>927 もしユーザーグループレベル権限が設定されてる場合は、戻さないと
自動的にできたのは、ユーザーグループレベル権限無設定の設定ファイルだから、無設定ならそのままでOK
930 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 15:02:11
>>929 無設定で使ってました。
サンクスです。
そのマクロを他のmdbにインポートできないの?
932 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 15:34:10
>>931 ご回答ありがとうございます。
今、やってみましたが、テーブルとクエリは出来ましたが、その他は「構造の読み取り権限がないので、インポートできません」というようなメッセージが出て
駄目でした。
> 「構造の読み取り権限がないので、インポートできません」
どうみても他にも、*.mdw ファイルがある筈だと思う
934 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 17:49:02
>>933 これってその○○.mdwによってかけられている制限なんでしょうか?
それなら工場出荷時に戻したPCにACCESSをインストして
この制限をかけるための○○.mdwは無いはずですから
制限なしで開くはずという理屈になるのでしょうか?
アホなこと言ってたらすみせん。
(今*.mdwでもう一度検索かけてみてます)
>>934 ヘルプの「ユーザー レベルのセキュリティを削除する」するはできないの?
936 :
907:2010/10/07(木) 19:04:31
>>907です。
>>920-
>>921 ありがとうございます。
落ち着いて考えたら理解できました。
>>907では単純な例として「商品コードは1 or 2のみ受け付ける」と
書きましたが、
「商品コードは 101〜105 と、201〜204 と、301と403」といった場合、
If Not ((Me!商品コード >= 101 And Me!商品コード <= 105) Or (Me!商品コード >= 201 And Me!商品コード <= 204) Or (Me!商品コード = 301) Or (Me!商品コード = 403))
という書き方しかないのでしょうか?
動いてるのですが、書き方が長いような気がしてるだけです。
937 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 19:37:16
>>936 >If Not ((Me!商品コード >= 101 And Me!商品コード <= 105) Or (Me!商品コード >= 201 And Me!商品コード <= 204) Or (Me!商品コード = 301) Or (Me!商品コード = 403))
この程度では長いとは感じないなぁ。せいぜい
If Not ((Me!商品コード >= 101 And Me!商品コード <= 105) _
Or (Me!商品コード >= 201 And Me!商品コード <= 204) _
Or (Me!商品コード = 301) Or (Me!商品コード = 403))
って改行するぐらいか。もっと条件ががあるのならcase文をネストする。
Select Case Me.得意先コード.Value
Case 100
Select Case Me.商品コード.Value
Case 101 To 105
Case 201 To 204
Case 301, 403
Case Else
MsgBox "商品コードが違ってます"
Cancel = True
End Select
>>916 関係ない話で悪いけどその前任者って相当ひどい辞め方か辞めさせられ方したんじゃない?
「てめーらなんかには使わせねーよ」って考えが透けて見える
940 :
名無しさん@そうだ選挙にいこう:2010/10/07(木) 22:20:54
>>939 ガ〜ン
エアウルフのシステムみたいに開発者が1年間以上使用しないと
攻撃始めるようになってたりして
これ、作り直したた方がいいかも知れませんね。
解決法考えて下さった方々ありがとうございました。m(。。)m
941 :
907:2010/10/08(金) 11:35:55
>>938 ありがとうございます。
改行できるんですね。
case文をネストすれば僕にとって直感的になったので、
この書き方にしてみます。
誰かが作ったAccess2007形式のaccdbに対して、
ADOX.Catalog / ADOX.Table を用いて[test_1]という名前のテーブルを追加するプログラムをC#で書きました。
処理実行した後、accdbをダブルクリックで開くと、
壊れています⇒修復(最適化)
となってしまうのですが、
ADOX.Catalogを用いてテーブル一覧を見ると、[test_1]というテーブルは
リストアップされました。
ADOXでは見れるのに、accdbをダブルクリック(Access2007で開く)と
壊れてますって出るのは変わりません。
そこで、
Dao(Microsoft.Office.Interop.Access.Dao)を使って、
DBEngine.compactDatabaseを行い、最適化したのですが、
やはりダブルクリックでは開けませんでした。
しかし、ダブルクリックした後の自動修復後は見れるようになります。
DBEngine.compactDatabase以外の方法とかないんですかね?
accdbのファイルサイズは40Mあるのですが、ファイルが大きすぎるのがいけないのかな〜
と思いました。
⇒ADOXで新規にaccdb開いたものに対しては、テーブル追加後もうまく良く。
943 :
名無しさん@そうだ選挙にいこう:2010/10/09(土) 19:53:42
誰かが作ったAccess2007形式のaccdbに対して、
ADOX.Catalog / ADOX.Table を用いて[test_1]という名前のテーブルを追加するプログラムをC#で書きました。
処理実行した後、accdbをダブルクリックで開くと、
壊れています⇒修復(最適化)
となってしまうのですが、
ADOX.Catalogを用いてテーブル一覧を見ると、[test_1]というテーブルは
リストアップされました。
ADOXでは見れるのに、accdbをダブルクリック(Access2007で開く)と
壊れてますって出るのはなぜだ!
そこで、
Dao(Microsoft.Office.Interop.Access.Dao)を使って、
DBEngine.compactDatabaseを行い、最適化したのですが、
やはりダブルクリックでは開けませんでした。
しかし、ダブルクリックした後の自動修復後は見れるようになります。
実験で、
ADOXで新規にaccdbを作成し、それにテーブル追加したのですが、
その場合はダブルクリックでエラーになることなく見れました。
DBEngine.compactDatabase以外の方法とかないんですかね?
accdbのファイルサイズは40Mあるのですが、ファイルが大きすぎるのがいけないのでしょうか
>>944 PCを再起動させても同様の現象が発生するの?
わかる範囲で答えると、40MBが大きすぎるということはない。
5〜600MB超になってから心配することじゃないか。
946 :
944:2010/10/09(土) 20:27:10
>>945 再起動してみました。再現しますね。
ファイルサイズ、ありがとうございました!
>>946 あとはタイミングぐらいかな。たとえばファイルを立ち上げたままADOで操作すると、
Teblesでは存在するのに、Accessのテーブルに表示されないしADOでも操作できなかった記憶がある。
なにか更新作業をした記憶があるのだが、すぐには思えだせないなぁ。
最適化ではないことは確かなのだが。
>>942 リソースの開放し忘れとか?
リソース持ったままプロセスが落ちると、タイミングによってはダーティフラグが立ったままになるけど。
接続は正常に閉じられてる?
表形式フォームで絞り込みを掛けた状態にSQL Updateを掛けれますか?
SQL文のテーブル名の所に、Me.Recordset をいれるとエラーになります。
やりたいこと、
表形式フォームで何回か絞り込みを掛けた状態での、YesNoフィールド[Check]を全部一気にTrue にしたい。
SQLで遣りたいです。
>>949 どういう風にやっているのかは知らんが、フィルターを使っているのなら
Me.Filterで抽出部の式をとって、あとは普通にUPDATEすればいいんじないの。
有難うございます。
抽出部の前のテーブル名は、どうしたら良いのでしょうか?
Me.Recordsource を入れるので良さそうですが、なんか旨くいきません。
Me.Recordsource の中に SELECT や ORDERBY が入っちゃってます。
>>951 ソースはクエリが元か? とにかくSQL的には
UPDATE テーブル名 SET フィールド名 = " & True & " WHERE " & Me.Filter
でいけるはず。
レコードソースがすでに抽出されている状態なら、WHERE以降を直書きの上
ANDで条件をつなぐ。
UPDATE テーブル名 SET フィールド名 = " & True & " WHERE 条件 AND 条件 AND " & Me.Filter
有難うございます。
> WHERE以降を直書き
それで出来ました。
が、直書きがなんとも不自由で、コマンドボタンに割り当てられない…
954 :
953:2010/10/10(日) 14:39:01
有難うございます。
直書きでも固定文字列ですので、大丈夫ですね。
解決しました。
Access2007で質問です。
以下のコードで、フォームのヘッダーの名前をprintしているですが、ヘッダーが無い場合
はエラーになってしまいます。ヘッダーが存在するか確認するには、どうすればいいでしょ
うか。
If not hoge is nothing や IsError等でもエラーになってしまいました。
Set ctn = db.Containers!Forms
For Each doc In ctn.Documents
FormName = doc.Name
Debug.Print FormName & ".Section(acHeader).Name = " & Forms(FormName).Section(acHeader).Name
Next Doc
>>955 On Error Resume Nextで逃げちゃえば?
であとは
Dim MySec As Section
Set MySec = Me.Section(acHeader)
If Not MySec Is Nothing Then
Debug.Print Me.Section(acHeader).Name
End If
こんな感じとか。
957 :
955:2010/10/12(火) 22:25:41
958 :
名無しさん@そうだ選挙にいこう:2010/10/14(木) 16:47:15
Access2010で2つ質問があります。
1
Access2003のように、マクロから作ったショートカットメニューをマウス操作でカスタマイズすることはできないのでしょうか?
2
マクロでshortcutmenubarを作りたいのですが、
○○に等しい
○○に等しくない
○○で始まる
○○で終わる
こういった2010標準?の機能はマクロ名でいうとどれになるのでしょうか?
>>958 1.
UIがないからできないんじゃね?
2.
ショートカットのサブマクロで、メニューコマンドの実行:コマンド:フィルタメニュー が一番近い形かな。
もしくは、CommandBars.FindControl(ID:=hogehoge).Executeをプロシージャ実行で呼び出すとか。
コーディングしてCommandBarを作るってのも。
960 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 12:45:49
>959
ありがとう!
コーディング挑戦してみます
961 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 13:45:42
今までACCESS2002で作成し、Office-Xp Developer でパッケージ化して
OSがXP SP1のパソコンに配布してインストールして使用していたシステムがあります。
それをVISTAのPCで使用したいのですが、XPのPCにインストールしていたものでは
「Office システム ファイル アップデートをこのシステムにインストールできません。
Windows NT 4.0 Service Pack 6 以降が必要です。 」
というエラーが出てインストールできません。
それで調べたら、今は「Access2007runtime」というものが無料で使用できるからVISTAで使用するには
それを使うか、または、Access2007のシステムをそのPCにインストールし、そこで使用したいシステムの
MDBファイルか、MDEファイルで運用するしかない・・・という結論に達しましたが、この考えはこれで
正解でしょうか?
続きまして、Access2007システム(ランタイムではなく本物)がインストされているPCでそのMDBファイル
の動作テストをしたのですが
Dim ○○ As DAO.Database
→ Set ○○ = DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt)
のところで「実行時エラー3001 引数が無効です」というエラーが出て動きません。
VISTAのPCで動かすのが目的なのですが、まず、VISTAはAccess2007を使うしかないのか、
そうだった場合、このDAO関係のエラー(?)のようなものを克服する方法がありますでしょうか。
(DAOでない方法に書き換えないといけないのでしょうか?)
よろしくお願い致します。
帳票フォームで下記コードで行コピーしようとしましたが、矢印部分で【フィールドを更新できません】黄色文字でエラー表示
どこが間違ってますか?
------------------------
Dim rs As Recordset , avarRecords As Variant, i As Integer
Set rs = Me.Recordset
avarRecords = rs.GetRows(1)
With rs
.AddNew
For i = 1 To .Fields.Count - 1
.Fields(i) = avarRecords(i, 0) ← 【フィールドを更新できません】
Next i
.Update
End With
963 :
962:2010/10/15(金) 14:24:12
訂正
× For i = 1 To .Fields.Count - 1
○ For i = 0 To .Fields.Count - 1
やはり、同じ個所で同じエラーがでます
>>962 なんとなく言わんとすることはわかったが、せめて環境とかバージョンとか書いておくれよ。
965 :
962:2010/10/15(金) 15:54:32
Access2010、VISTA です
>>962 とりあえず動くコードではあるのだけれども、
3164 フィールドを更新できません。
ってのがでるってんだから、更新不可のフィールドが含まれてるんじゃねぇの?
>訂正
>× For i = 1 To .Fields.Count - 1
>○ For i = 0 To .Fields.Count - 1
.Update で 3022エラーがでてるんかと思ってしまった。
967 :
962:2010/10/15(金) 17:23:39
>>966 > とりあえず動くコードではあるのだけれども、
有難うございます、助かります
計算項目とオートナンバーを順に削除してみます
968 :
962:2010/10/15(金) 17:57:23
結果報告
オートナンバーあってもOK
Meに計算テキストボックスあってもOK
レコードソースのクエリに計算フィールドがあると上記エラー
Meにクエリの計算フィールドを含んでても含んでいなくても同様に上記エラー
仕様が解りましたので、解決です
969 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 18:18:23
>>961 自己レスですが、
> Dim ○○ As DAO.Database
>→ Set ○○ = DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt)
>のところで「実行時エラー3001 引数が無効です」というエラーが出て動きません。
この「引数が無効です」の引数とはdbEncryptのようです。
「dbEncrypt」って暗号化の指定でしたっけ?ACCESS2007では無効なんですかね・・・
>>961 2007Runtimeで使用できるファイル形式は、一応、accdb/accde/accdr/accdcの4つってことらしいわ。
mdbでも作動した記憶あるから、もしかするとライセンス的な話か、サポート外ってことかもな
でもって、いまだに、
サポートされているオペレーティング システム : Windows Vista; Windows XP Service Pack 2 な。
お仕事でされてるんなら、サポートに聞いた方がいいでないの?2007からJetの後継ACEなんだぜ。
>>961 前半については、インストールパッケージを Vista 用に作り直すことで回避できます。
但し、Access 2002 は Vista で正式にサポートされていないので、不具合がなければ Access 2003 以降の Runtime を使用したほうが良いかもしれません。
パッケージを作り直す場合は、以下の方法を参照してください。
Windows XP SP2 または Windows Server 2003 を実行しているコンピュータに
Access 2002 ランタイム展開パッケージをインストールすると、エラー メッセージが表示されることがある
http://support.microsoft.com/kb/837150 Vista の場合は、上に書いてある
DBMSADSN.DLL 以外に、
DBNMPNTW.DLL
SQLOLEDB.DLL
MSXML.DLL
の行も削除する必要があるようです。
US の Google で「Access 2002 Runtime Vista」を検索すれば、いくつか情報が見つかりました。
後半は、Access 2007 で暗号化の仕組みが変わったことが原因です。
2行目で dbVersion30 を追加して、古いバージョンを使用することを指定すれば通ります。
Set p_db = DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt + dbVersion30)
ちなみに Access 2007 では暗号化の際には、以下の様にパスワードの指定が必須になりました。
Set p_db = DAO.CreateDatabase(Nd, dbLangJapanese & ";pwd=password", dbEncrypt)
972 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 18:40:06
>>970 ご回答ありがとうございます。
仕事で使うので、正式サポートされていないMDBとかMDBは駄目ですね。
Access2007形式に変換して、必要なところは手直しして使うことにします。
>2007からJetの後継ACEなんだぜ。
とうとう Jetとオサラバなんですか。
ネットごしで使っても速くなってればいいな〜
973 :
971:2010/10/15(金) 18:41:22
>>971 訂正です。
× dbVersion30
○ dbVersion40
すいません。
974 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 18:56:11
>>971 ご回答ありがとうございます。
DBMSADSN.DLL を消して作成する方法でVISTAのPCでやってみたのですが、
駄目だったので諦めていました。
VISTAはこれだけじゃ駄目なのですね。
ちょっとトライしてみます。
>後半は、Access 2007 で暗号化の仕組みが変わったことが原因です。
>2行目で dbVersion30 を追加して、古いバージョンを使用することを指定すれば通ります。
>Set p_db = DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt + dbVersion30)
これでうまく動きました。
ここらへんのことは自分で検索しても全然見つけられませんでした。
>但し、Access 2002 は Vista で正式にサポートされていないので、不具合がなければ Access 2003 以降の Runtime を使用したほうが良いかもしれません。
当方Access 2002(xp)の ディベロッパーしか所有してないので、やっぱりAccess2007Runtimeで使うことになりそうです。
ありがとうございました。m(。。)m
975 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 18:59:07
>>973 あれ?dbVersion30で動きました(汗)
976 :
971:2010/10/15(金) 19:08:33
>>975 dbVersion30 だと Access 95 形式のデータベースが作成されちゃうので。
Access 2002 からの移植なら dbVersion40 のほうを使ってくださいな。
977 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 19:11:41
>>976 わかりました。
重ね重ねありがとうございます。
978 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 21:50:16
すみません。961、977ですが、XP、SP3とACCESS2007の環境で成功して喜んでいたのですが、
VISTAと「Access2007runtime」の環境に持って行ったら次の表示がでました。
「セキュリティに影響を及ぼす可能性のある問題点が検出されました。
警告:このコンテンツの発行元が信頼できるかどうかを確認することが出来ません。」
と表示され、それでも「開く」を選択してみても何も開いてきません。
XP、SP3とACCESS2007の環境でセキュリティセンターで「信頼できる場所」として登録しておいて保存したaccdb
データ形式のものをVISTAの同じパスのフォルダにおけば開くものと思っていました。
妙なことにXPで使用していた旧形式のMDEファイルも同じ警告がでますが、「開く」を選択すると開いてきます。
(DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt) のところでエラーがでて使えませんが)
何故、修正したファイルが開かないかわかりますでしょうか?
>>978 Vistaなマシンに信頼できる場所のレジストリ登録がないからじゃないの?
あー、でも開く押下で実行されるか。。
AutoExecとか起動時の設定をしてなさそうだし、起動時になにやらエラーで止まっちゃってるとか?
980 :
名無しさん@そうだ選挙にいこう:2010/10/15(金) 22:54:08
>>979 ご回答ありがとうございます。
レジストリ登録ってRegeditで編集しないといけなんでしょうか?
試しに単純テーブルだけのaccdbファイルをxpとACCESS2007の環境で作って
そのVISTA、Access 2007 Runtime環境のPCに持って行きましたが、同じく開けませんでした。
私Access 2007 Runtimeの使い方が根本的に間違ってる(何か足りない)んですかね。
981 :
979:2010/10/16(土) 00:27:00
982 :
名無しさん@そうだ選挙にいこう:2010/10/16(土) 00:31:02
>>981 リンク先の
>Access 2007 データベースをパッケージ化して署名する
ここらへんの知識無くてやってました。
明日またトライしてみます。
ありがとうございました。
983 :
名無しさん@そうだ選挙にいこう:2010/10/16(土) 14:38:04
>>981 その後、「最初に開くフォーム等の設定をしてない」とそうなることを知りその設定をして、
開いて入力作業などできるようになりました。
しかし、今度は保存のタイミングで
「実行時エラーが発生した為、このアプリケーションの実行は中断しました。
アプリケーションを続行できません。システムはシャットダウンされます。OK」
という表示がでて、OKするとアプリが終了してしまうという現象がでます。
どこのステップ起きているのか調べる為
MsgBox Err.Number, vbExclamation, "Err"の文を
MsgBox Err.Number, vbExclamation
Set ○○ = DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt+dbVersion40)
MsgBox Err.Number, vbExclamation
と言うふうに置いたのですが、
「0」が1回返ってきた後に先程の「実行時エラーが発生した為・・・」が
表示されます。この為、
Set ○○ = DAO.CreateDatabase(Nd, dbLangJapanese, dbEncrypt+dbVersion40) でこけて
いるんだと思われます。
984 :
名無しさん@そうだ選挙にいこう:2010/10/16(土) 14:39:37
>>983の続きです。
試しにCreateDatabaseを使った単純なaccdbファイルを作ってみましたが、ACCESS2007、XPSP3環境では動きましたが
VISTA,2007Runtimeの環境では、データベース名を入力後に「実行時エラーが発生した為・・・」
という同じ表示がでます。
Private Sub コマンド0_Click()
Dim db As DAO.Database
Dim dbname As String
'作成したデータベース名を入力
dbname = InputBox("データベース名を入力して下さい")
Set db = CreateDatabase("C:\" & dbname & ".mdb", dbLangJapanese)
db.Close
Set db = Nothing
End Sub
これらのエラーの原因は何でしようか?
質問ばかりですみません。
985 :
名無しさん@そうだ選挙にいこう:2010/10/16(土) 16:08:02
>>984 自己レスですけど、テストプログラムは保存場所を
Set db = CreateDatabase("C:\Users\ユーザー名\Documents\" & dbname & ".mdb", dbLangJapanese)
の様にしたらうまくいきましたので、これはVISTAのセキュリティでC:\のような変なところにプログラムから保存
できなくなっているのですね。
で、問題の業務プログラムなんですけど、元は私が作ったのではないのでわからなかったのですが
保存のタイミングで"C:\Program Files\"にある特定のフォルダに何らかの
管理ファイルを記録するようになっていました。
それでコケている様です。
OSがVISTAで例えば"C:\Program Files\TEST"というフォルダにACCESS2007のランタイムで動かしている
accdbから保存するにはどうしたらいいのでしょうか?
VISTAのPC自体あまり使った事ないので、ちんぷんかんです。