Access総合相談所 其の23 at BSOFT
Access総合相談所 其の23 - 暇つぶし2ch100:名無しさん@そうだ選挙にいこう
10/02/26 20:54:46
あるシミュレーションデータの生成を行うプログラムを作りました。

固定データのあるテーブル そして変動要素のあるテーブルの二つがあり、
それぞれを演算させて、1行ずつ、計算結果のテーブルへと指定した月数
分データを入れていく。

変動要素には何年目もしくは何ヶ月目の変数が格納されており、ジェネレート
する時の月数を素に今はDLookupで毎回ルックアップして変数を取り出し、演算
して、計算結果テーブルへと格納しています。

ただ、この変数がかなりの量でForループで廻しているわけなのですがもの凄く
遅いです。かなりマシンパワーを必要とします。Dlookupよりも効果的で速度の出
る何か秘策は有りませんか?



101:名無しさん@そうだ選挙にいこう
10/02/26 21:04:54
俗に言うSQLで一撃系に書き換えるしかないよ

102:名無しさん@そうだ選挙にいこう
10/02/26 21:30:52
Dlookupが必要な時点でテーブル設計間違ってる

103:名無しさん@そうだ選挙にいこう
10/02/26 22:54:40
>>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

こんな感じで廻すんでしょうか?


104:名無しさん@そうだ選挙にいこう
10/02/26 23:59:34
>>103
こういうテーブル構造って人間にはわかりやすいんだけど
DB的に後々苦労する筆頭なんだよな。

105:名無しさん@そうだ選挙にいこう
10/02/27 00:14:37
>>104
あのーすみませんが、俺が今つくっているこれは

データベースのテーブルの設計じゃないんですよ。はっきりいって
テーブル構造とか意味ナイんで。

テーブル設計の話はほかでやってもらえます?

106:名無しさん@そうだ選挙にいこう
10/02/27 00:24:51
あちゃー

107:名無しさん@そうだ選挙にいこう
10/02/27 00:28:13
>>105
そうなの? あなたの質問が速度を速くしたいというものだったから
DBには不向きなテーブル構造をしているよって書いただけなのに。
できるなら力になってあげようと思ったけど、俺は抜けた。

108:名無しさん@そうだ選挙にいこう
10/02/27 08:21:58
2抜けた

109:名無しさん@そうだ選挙にいこう
10/02/27 09:41:50
>>107
Dlookupをわざわざ使っている時点でそもそも、そういう話にならない。

というより、極めて簡単な資金繰りあたりのシミュレーションを作ってみる
といい。テーブル設計なんてできないから。



110:名無しさん@そうだ選挙にいこう
10/02/27 11:04:38
DLookUpが特段に遅いということではないと思うなぁ、俺は。
多用してると「んっ?」と思うことあるから、パフォーマンスを上げるにSQLに代替する
事があるけれども、超絶に良くなるということはないのでは?
さらなるパフォーマンス上げるには結果的にテーブル設計如何にかかってくるとことが多
いと思うんよね。テーブル設計なんてできねってんなら、マシンスペック上げるか、Access
を使わなくてもいいってことじゃね?

投げた質問の意図しない回答に対し必要以上に突っかかるのは格好わるいぜ

3抜けた

111:名無しさん@そうだ選挙にいこう
10/02/27 11:55:29
最初から参加さえしていない俺勝ち組

112:名無しさん@そうだ選挙にいこう
10/02/27 12:30:13
俺はあんまり頭悪くないんだけど今回はたまたま質問してるだけって気持ちが
こういう上から目線の書き込みになっちゃってるんだろうな。

まあこんな態度じゃ目的の解答がどんどん得にくくなるってことに気付いてない時点で
壊滅的に頭悪いわけだがw

113:名無しさん@そうだ選挙にいこう
10/02/27 13:22:28
質問の仕方が悪いよね。最初から
「DLookupより断然高速で、DLookupと同等の機能はありませんか?」
って聞けばよかったのに・・・

114:名無しさん@そうだ選挙にいこう
10/02/27 13:58:02
         ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    <あのーすみませんが、俺が今つくっているこれは
    |      |r┬-|    |      データベースのテーブルの設計じゃないんですよ。
     \     `ー'´   /      はっきりいって テーブル構造とか意味ナイんで。
    ノ            \      テーブル設計の話はほかでやってもらえます?
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ    <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /      |r┬-|    | (⌒)/ / / //  
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /  
ヽ    /      `ー'´      ヽ /    /     
 |    |   l||l 从人 l||l      l||l 从人 l||l   バ   
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、 ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒)) バ
                             ン

115:名無しさん@そうだ選挙にいこう
10/02/27 14:06:27
あ~あ、もう来ないんだろうな。

116:名無しさん@そうだ選挙にいこう
10/02/27 19:00:43
>>105
じゃ、なんでここに書き込んでんだよ

117:名無しさん@そうだ選挙にいこう
10/02/27 22:17:17
Forms!出納帳 を作って並べ替えました
[年月日]で昇順にして、同一[年月日]内では[ID]昇順です
[ID]、[年月日]の順で並び替えしたらそう出来ました

その並び替え順の状態で、特定のレコード以前のレコードをフィルタするwhere句はどう書けばよいですか?

118:名無しさん@そうだ選挙にいこう
10/02/27 22:59:21
>>117
[年月日]<特定レコードの[年月日] or ([年月日]=特定レコードの[年月日] and [ID]<=特定レコードの[ID])
って感じじゃなかろうか。

119:名無しさん@そうだ選挙にいこう
10/02/27 23:27:08
>>118
どうも有難うございます

帳票フォームで狙ったレコードにカーソル置いてDSUMのcriteriaに入れたいのですが、なんか大変そうですね
&とか'とか"とか、どう書いたら良いか解りません


120:名無しさん@そうだ選挙にいこう
10/02/27 23:43:02
>>119
じゃあ勉強しなよ

121:名無しさん@そうだ選挙にいこう
10/02/27 23:47:22
>>120
教えてください、お願いします

122:名無しさん@そうだ選挙にいこう
10/02/28 11:24:48
>>121
DSUMに拘ってるみたいだけど、出納帳の累計出したいとかじゃないの?

123:名無しさん@そうだ選挙にいこう
10/02/28 11:30:10
連投スマソ。
ちなみに
DSum("列名", "テーブル名 or クエリ名", "条件式") だけど
レコード多いと劇遅だよ。

124:名無しさん@そうだ選挙にいこう
10/02/28 11:33:05
>>123
それ言ったら代替策ないでしょ?



125:名無しさん@そうだ選挙にいこう
10/02/28 11:47:39
>>122
テーブルに累計書き込まずに、フッターとかの非連結テキストボックスに特定レコードまでの合計を表示したいのです
必要な時だけボタンを押して表示する感じ

126:名無しさん@そうだ選挙にいこう
10/02/28 12:46:31
桐にしとけ

127:名無しさん@そうだ選挙にいこう
10/02/28 15:47:22
>>125
ADOでいいんなら作ったやつアップできると思うがいるか?

128:名無しさん@そうだ選挙にいこう
10/02/28 16:27:12
>>127
ご親切に有難うございます
なんとか自分で解決しました
>>118 さんのアドバイスでクエリ作って、それをdomainに指定してcriteriaは省略でできました
あっさり過ぎて拍子抜けです

129:名無しさん@そうだ選挙にいこう
10/03/02 23:15:38
DDoS糞食らえ

130:名無しさん@そうだ選挙にいこう
10/03/02 23:51:01
2000なんだけど、レプリケーションをササッと解除してくれるようなツールないかな。
テーブル作成クエリの作業後に主キーやインデックス、規定値にリレーションシップの
再設定をしなきゃいけないのがどうにも。
知らない間にデザインマスターがなくなってたので、tsrelも退避してくれない。

131:名無しさん@そうだ選挙にいこう
10/03/03 09:22:17
一時テーブル作る時って、どういう命名の仕方がいいのかな。
MDBに複数からの同時アクセスがあるとTMPとかじゃマズいよね。
日時とかから生成するもん?

132:名無しさん@そうだ選挙にいこう
10/03/03 10:55:21
>>131
クライアントのマシンネームでも使えばいいんじゃね?
実際のところは、ファイル共有ではなくてC/Sのかたちにするのが本来だと思うけど.


133:名無しさん@そうだ選挙にいこう
10/03/03 11:31:08
>>132
なるほど、ごもっともです。

MDBへの多数のアクセスはやりたくないんですが、
もし壊れたらそれを言い訳に本格的に開発する時間をもらうつもりです。

134:名無しさん@そうだ選挙にいこう
10/03/03 20:56:58
Accessはパーソナルデータベースソフトです。

135:名無しさん@そうだ選挙にいこう
10/03/04 09:20:39
フロントエンドとして使う場合もあるだろ
・・・と思ったが、今はAccessで本格的に開発することなんてあんまり無いのかな。

器用貧乏なAccessの機能を覚えるよりは、PHP+MYSQLとかVS2008で開発
した方が効率いいし、そのへんの事務員が自分でやるならExcelとかFileMaker
を覚えた方が効率良さそうだ。

136:名無しさん@そうだ選挙にいこう
10/03/04 13:06:29
>>>135
システムの規模によるんじゃないかな。
それに未だにVB6.0やVBAが基本言語の会社もあるだろうしね。

137:名無しさん@そうだ選挙にいこう
10/03/04 15:07:40
短い開発期間に低予算に多出力とくればおのずとaccessに辿り着くような気がする。

138:名無しさん@そうだ選挙にいこう
10/03/04 20:51:56
社内で勝手にMySQLとか使えないし、申請しても許可が下りないんで
Access使うしかないって感じかな…。

139:名無しさん@そうだ選挙にいこう
10/03/04 21:59:18
>PHP+MYSQLとかVS2008で開発した方が効率いいし

ないわ

140:名無しさん@そうだ選挙にいこう
10/03/04 22:56:12
結局、桐が一番良いわけだ

141:名無しさん@そうだ選挙にいこう
10/03/04 23:19:15
ものすごく行き詰まってしまったので、相談させてください。

下記の固定長データをACCESS2000にインポートするにあたり、
ボタン押下でテーブルに取り込みたいと思います。

インポート定義を作成し、手動で定義を適用、インポートすると
定義通りにうまく作成されるのですが、VBAでボタンを作成して取り込むと、
フィールド1に固定長のすべてが入力されてしまいます。
マクロを作成してもうまくいきませんでした。

※DoCmd.TransferText acImportDelim,"インポート定義","テーブル", フルパス, false

どのようにコードを書いたら、定義通りに取り込めるのでしょうか?


-------------------------------------
1001ミツビシ
--------------------------------------
フィールド名 データ型 開始位置 幅 インデックス スキップ
フィールド1 テキスト型 1 1 いいえ FALSE
フィールド2 テキスト型 2 3 いいえ FALSE
フィールド3 テキスト型 5 5 いいえ FALSE


142:名無しさん@そうだ選挙にいこう
10/03/04 23:26:46
>>141
マクロでやってみて、上手くいったらVBAコードに変換すれば間違えてた記述が解る

143:141
10/03/05 00:19:36
>>142

それがマクロでやってもフィールド1にデータが全部入ってしまうのです。
VBAにこだわってないので、マクロでもよいんですが、
手動できるものが、同一定義を指定しながらなぜできないのかなと。

144:名無しさん@そうだ選挙にいこう
10/03/05 00:51:34
DoCmd.TransferText acImportDelim, FS, FS, FN, False, ""
ヒントになるか?

145:141
10/03/05 07:25:48
>>144

ありがとうございます。
会社に行って早速試してみます。

146:名無しさん@そうだ選挙にいこう
10/03/05 15:56:57
これ、ADOで引っ張ってきた複数のレコードをフォームのテキストボックスに
代入しようとしたら、一旦、一時テーブルに格納しないといけないの?

できるだけAccessのフォームの機能でやりたいので、レコードの移動を
フォームプロパティの移動ボタンでやりたかったんだが・・・。

147:名無しさん@そうだ選挙にいこう
10/03/05 15:59:21
もしかして、そもそも非連結で作ろうとしてることが間違ってる?

148:名無しさん@そうだ選挙にいこう
10/03/05 16:02:38
>>146
Formオブジェクトなどにrecordsetプロパティがあるから、これにレコードセットを代入するのじゃ。
でもって、フォームに配置してるコントロールのcontrolsourceプロパティを設定しておけば、
テーブル連結フォームと同様に操作できるのじゃ

149:名無しさん@そうだ選挙にいこう
10/03/05 18:32:42
>>148
神よ!うまくいきやした。
ありがとやんした。Accessが便利だと思えるようになりますた。

150:名無しさん@そうだ選挙にいこう
10/03/05 18:51:08
でもこれでも、フィルタ機能が使えない・・・・・orz

151:名無しさん@そうだ選挙にいこう
10/03/05 20:00:28
>>150
フィルタできないとな?普通使う分には、んなことねぇと思うんじゃが。
URLリンク(homepage3.nifty.com)
ここに答えはないかい?

152:名無しさん@そうだ選挙にいこう
10/03/05 22:53:59
ログインの時のパスワードの解除方法を教えて下さい


153:名無しさん@そうだ選挙にいこう
10/03/06 08:24:56
>>152
Access のバージョンは?

154:名無しさん@そうだ選挙にいこう
10/03/06 13:32:43
VistaSP2&Access2007。フォームにボタン配置しようとしたらAccessが落ちました。
2,3回やっても落ちたので新規DBを作って試してみたらボタンだけじゃなくテキストボックス
でも落ちるようです。ラベルならOK。もしやと思いテキストファイルのエクスポートを試して
見たら落ちました。どうも各種ウィザードのダイアログが開くタイミングで落ちるっぽいです。
クエリウィザードでも落ちたのでたぶん間違いないかと。

Officeを一旦アンインストールしてから再インストールしても同症状でした。
自宅のPCでAccessが使えなくても困ることはあまりないんですが、とても気持ち悪いです。
どこか調べてみるべき点など心当たりはあるでしょうか?

155:名無しさん@そうだ選挙にいこう
10/03/06 14:00:43
>>154
officeにもSP2あるけどまぁ治らん気がする
office入れなおしてだめだったらいい機会だと思ってOSから入れなおす。俺なら。

156:名無しさん@そうだ選挙にいこう
10/03/06 14:06:56
>>154
C:\Program Files\Microsoft Office\Office12\ACCWIZ\UTILITY.ACCDA
を削除してからAccessの修復インストール

結果を報告して

157:名無しさん@そうだ選挙にいこう
10/03/06 15:20:40
>>153
2007です


158:154
10/03/06 15:44:14
レスしていただきありがとうございます。
>>154
office入れ直したときにspを当てる前後でそれぞれ動作確認したんですがどちらでも
Accessは落ちました。
>>156
やってみましたが症状に変化はないようです。

症状的にDLL等の共有モジュールのどれかが壊れてるのかなとも思いますがどれだ
かは判明していません。
ふと気がついてイベントビューワをみたら「障害が発生しているモジュール VBE6.DLL」
となっていたのでこれも削除して修復しましたが変化なしです。

自宅PCだし現状では困ってる訳でもないので、暇つぶしがてら色々やってみて直ったら
報告しますね。

159:154
10/03/06 15:45:31
失礼、アンカミス。
上は>>155の間違いでした。

160:名無しさん@そうだ選挙にいこう
10/03/06 16:04:13
>>157
2007のデータベースパスワードなら現在までHackingされていない、総当たり方法しかない

161:名無しさん@そうだ選挙にいこう
10/03/06 16:14:30
>>124

つい最近試してみたのだが、レコードの数が多ければ多いほど
遅くなるわけだが、代替としては、SQLで記述する方法がある。

ただ、そのままでは意味がないので、関数化して使うのが定石。

これで、もともと作っていたアプリがおよそ30秒掛かっていた作業
が俺の場合には、6秒にまで短縮したよ。ということで、ありとあら
ゆるこういった集計関数使っている場所をSQLに置き換えた。



162:名無しさん@そうだ選挙にいこう
10/03/06 16:18:59
関係ないけど、やり方次第でホント短縮できるよね。
初心者だった頃に見様見真似で作った物が2時間ぐらいガリガリ動いてたのを、それを見たプロい人が手直しして
数秒で計算が終わったのを見た時は感動したもんだ…。

163:名無しさん@そうだ選挙にいこう
10/03/06 16:58:26
>>157です
パスワードが解らないんじゃなくて
起動時に出てくるパスワードの入力の設定を
解除したいということです



164:名無しさん@そうだ選挙にいこう
10/03/06 17:03:21
>>163
2007のデータベースパスワードなら、パスワード解らないと解除できない
2003以前にあったユーザーグループ権限パスワードを2007で使ってる話しなら、それは簡単に解除できる
アプリ作者が独自に起動フォームに作ったパスワードなら、色々と方法はある

どのパスワードよ?

165:名無しさん@そうだ選挙にいこう
10/03/06 19:48:55
>>140 acImportDelim -> acImportFixed で.

166:名無しさん@そうだ選挙にいこう
10/03/06 19:52:35
間違えました
>>141 acImportDelim -> acImportFixed で.

167:名無しさん@そうだ選挙にいこう
10/03/07 05:44:19
>>165
マナーの悪い奴は鮮人認定されてもしょうがなくね?
俺なにも間違ったこと言ってなくね?

168:名無しさん@そうだ選挙にいこう
10/03/07 10:27:10
>>151
解決したでヤンス!
どうもありがとうございました。

rs.CursorLocation = adUseClient
このおまじないが必要でした。

169:名無しさん@そうだ選挙にいこう
10/03/08 12:58:54
2010のDataMacroに期待したんだが、やはり残高計算は出来ないみたいだね

170:名無しさん@そうだ選挙にいこう
10/03/08 13:21:01
桐でも使ってろ

171:名無しさん@そうだ選挙にいこう
10/03/08 17:25:30
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)
みたいに書く方法があったら教えてほしい。

172:名無しさん@そうだ選挙にいこう
10/03/08 18:35:23
>>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


173:名無しさん@そうだ選挙にいこう
10/03/08 21:20:34
>>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)

174:名無しさん@そうだ選挙にいこう
10/03/08 21:46:16
>>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

175:名無しさん@そうだ選挙にいこう
10/03/08 23:27:49
Me!開始日付とMe.開始日付が普通に混在してる時点でいやになってきた

176:名無しさん@そうだ選挙にいこう
10/03/09 13:22:39
わりぃ。ちょっとメモらせて
URLリンク(msdn.microsoft.com)

177:名無しさん@そうだ選挙にいこう
10/03/09 17:16:31
ちょいと質問。
小数点以下2桁の項目に整数値と小数値が混ざっているデータの整数値は小数点以降を表示したくないとき、
以下のやり方よりもナイスなやり方ってある?

format([数値項目],iif((([数値項目]-int([数値項目]))*100)>0,"#,##0.##","#,##0"))

178:名無しさん@そうだ選挙にいこう
10/03/09 18:34:33
テキストボックスの書式じゃだめかい?

179:名無しさん@そうだ選挙にいこう
10/03/09 20:22:09
>>175
何が違うんだ?

180:名無しさん@そうだ選挙にいこう
10/03/09 21:02:47
>>177
*100を消す

181:177
10/03/11 10:47:07
>>180
ホントだ、指摘どもです。

182:名無しさん@そうだ選挙にいこう
10/03/12 11:52:18
従業員に使わせるアプリをAccessで作るときは、Ctrl+P とか Ctrl+S とか機能したらマズイんだけど
変なショートカット沢山あるけど、どうしたら良いの?

183:名無しさん@そうだ選挙にいこう
10/03/12 12:24:02
>>182
完全な抑制ができるわけではないけれど、
アクションのないマクロをキーに割り当てって感じ。
URLリンク(office.microsoft.com)
もしくは、イベントで管理じゃね?

184:名無しさん@そうだ選挙にいこう
10/03/12 12:47:22
>>183
ああ有難うございます
一つ一つ潰すんですね(^_^;)

185:182
10/03/12 19:11:27
>>184
フォームのKeyPreview=Trueにして、フォームのkeydownイベントとかで
if Shift>2 then KeyCode=0
で、単独押下と{Shift}+キーの操作以外は一気に取り消せるはず。
{Shift}:1 {Ctrl}:2 {Alt}:4 な。

186:183
10/03/12 19:12:50
おっと間違えたw ↑は183だ

187:名無しさん@そうだ選挙にいこう
10/03/13 00:02:55
>>184
そうは言ってもCtrl+CとかXとかVとかだけは使わせてって要望が絶対出るだろうし
一つ一つ潰すしかないだろ

188:名無しさん@そうだ選挙にいこう
10/03/13 00:58:35
>>185
おお、逆転の発想!

189:名無しさん@そうだ選挙にいこう
10/03/13 09:11:03
2010
詳細なテキストサービス を有効にしないとマトモにスクロールしなくなる
有効にすると、対応してない他の大部分のアプリでは不具合続出
どうすりゃ良いのよ?

190:名無しさん@そうだ選挙にいこう
10/03/13 12:59:29
ACCESSのマクロのフィルタ実行で式ビルダから条件式を実行したときと
クエリで条件式を設定して実行したときに
結果が異なることもあるのでしょうか。

191:名無しさん@そうだ選挙にいこう
10/03/15 11:09:44
ええ?!

192:名無しさん@そうだ選挙にいこう
10/03/15 23:29:06
まさかまた並びが違うから結果が違うとかいう戯言ぬかすんじゃ・・・

193:名無しさん@そうだ選挙にいこう
10/03/16 00:45:29
さぁて、Classでも作るべ。
どんなClassが使っておられるの?みなさん
使い甲斐があるのはなんだろうか
どんな感じで使っておられる?
もしかすっとClass使ってないかな

194:名無しさん@そうだ選挙にいこう
10/03/16 06:38:47
1993恋をした~
あ~

195:名無しさん@そうだ選挙にいこう
10/03/16 09:55:32
ACCESS97のサンプルについてたらしいcontact.mdbを入手する方法ないですかね。
97は入ってるけどインストールは出来ないです。


196:名無しさん@そうだ選挙にいこう
10/03/16 10:00:32
>>190
フィルタって対象がフォームじゃねーの?

197:名無しさん@そうだ選挙にいこう
10/03/16 16:22:18
>>193
クラスモジュールのこと?

198:名無しさん@そうだ選挙にいこう
10/03/16 18:23:19
>>179
Me のレコードソースが変数含んでると、データ滅茶苦茶に狂うだろ

199:名無しさん@そうだ選挙にいこう
10/03/17 02:58:05
>>197
んだんだ
複雑なことがちとつらくなってきてさ、きちんとコーディングしておくべきかと思って。

200:名無しさん@そうだ選挙にいこう
10/03/17 05:38:53
>>199
自分は使ってない、っていうかむしろこちらが参考にしたい
(フォームモジュールもクラスモジュールっていう突っ込みは置いといて)

よく使うのはチェックボックス全部ONにしたりとか
カレンダー呼び出しとかだけど数行で済むからそのまま書いてるし。

201:名無しさん@そうだ選挙にいこう
10/03/17 16:08:46
教えて下さい。
アクセス欲しくてパソコンショップいったら高すぎてとても手が出せません。
かといってフリーソフトで手に入れたアクセスもどきのデータベースは機能がしょぼくてガッカリでした。
色々とくぐっていたらベータ版という無料でダウンロードできるものがあるらしいことがわかったんですが
これは他のマイクロソフトオフィスもまとめてダウンロードしてしまうものなんでしょうか?
ワードとエクセルはすでにあるし、他のオフィスはいりません。アクセスだけ欲しいのです。
下手にダウンロードしたら今あるワードとエクセルを新しいヴァージョンに上書きしてしまうのでしょうか?
ベータ版はサポートないというのでいじりたくないのです。
それにベータ版は本来の製品と比べると機能とか悪いのでしょうか?
どうか詳しく教えてください

202:名無しさん@そうだ選挙にいこう
10/03/17 16:50:34
ごめんな、俺にもよくわからないんだ
googleとMicrosoftならきっと応えてくれると思うぜ

203:名無しさん@そうだ選挙にいこう
10/03/17 16:57:45
>>201
> 下手にダウンロードしたら今あるワードとエクセルを新しいヴァージョンに上書きしてしまうのでしょうか?

下手にダウンロードしても、上手にダウンロードしても、インストールしなければ何も起こりません
インストール最初にカスタムからアクセスだけ選んでインストールしてください

204:名無しさん@そうだ選挙にいこう
10/03/17 17:18:24
ありがとうございます

205:名無しさん@そうだ選挙にいこう
10/03/17 20:40:56
>>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
みたいなぁ~。そんなことかよと思わないでくれろ。俺にしては良くやったと思ってる。

206:名無しさん@そうだ選挙にいこう
10/03/17 22:49:08
>>205
うおお…なるほどこれ一つ作っとけばフォームの使い方統一できる訳か…
確かにコード量減るしモジュール側からあらかた設定できるしこれは参考になるわ・・・

207:名無しさん@そうだ選挙にいこう
10/03/18 07:04:04
ACCESS難しいよ。なにこれ。
妙に回りくどくてわかりづらい。

VBAを使った方が簡単そうに思えるが逃げたら負けかな?

208:名無しさん@そうだ選挙にいこう
10/03/18 12:21:06
>>207
別にいいんじゃね? 細かい制御をしようと思えばVBAが必須となるし。
回り道に思えても基本を抑えたほうが後々何かと楽できるだろうけど、
社内SE的な立場なら、早く作れてなんぼだろうよ。
ぶっちゃけ、利用者は内部的にどのような処理が行われているなんかは気にせんだろう。
気にするのはレスポンスと使い勝手、あと当たり前だけど正しい応答だ。
後任者のために─なんて考える必要はないよ。
まず後任者なんてありえないから。どうしても必要なシステムなら
会社が外注に頼んででも同等のシステムを用意するだろうし。

209:名無しさん@そうだ選挙にいこう
10/03/18 13:32:28
>>207
VBAわかるならVBAでやった方が楽。
ACCESSの機能だけで色々やろうとすると何かもうVBで最初から組んだ方が
楽なんじゃないかと思うことが多々ある。
事務員の方が詳しいかもしれん。

210:201
10/03/18 15:55:15
ベータ版をダウンロードしたんですが、その後どうやってインストールしたらいいのかわかりません。

まず『いますぐダウンロード』のボタンをクリックして、『実行』をクリックしてしまったんです。
それでダウンロード完了したのですが、次に何も表示されませんでした。
探したのですがそれらしいプログラムはどこにも保存されておらず、本日付けの意味不明なデータがたくさん見つかりました。
どうしたらいいのでしょうか?
今、『保存』で改めてダウンロードしなおしてるんですが、『実行』でダウンロードしたものは削除したいのですが・・。

211:201
10/03/18 16:07:12
マイクロソフトのよくある質問を見ても、なんだか『保存』してダウンロードする方法しか説明がなくて
だったらどうして『実行』なんていう選択肢があるのか……てっきり実行選択したら、自動的にインストールまでやってくれるかと思ってクリックしてしまったので、どうしたらいいのかさっぱりです。
ダウンロード先は一時ファイルとしか表示されなかったので、全然わからず『ファイル名を指定して実行』で検索しても出てこなかったので


212:名無しさん@そうだ選挙にいこう
10/03/18 17:39:07
>>211
日時指定で検索して、それらしいファイルをかたっぱなしから削除するしかないんじゃないか。
もはやスレ違いどころか板違いな質問だと思うが。

213:名無しさん@そうだ選挙にいこう
10/03/18 20:57:40
>>208
使う人は気にしないよね。

>>209
やっぱり?

ありがとう!吹っ切れました。VBAで組むことにします!

214:名無しさん@そうだ選挙にいこう
10/03/18 23:48:00
DBには興味があるが仕事につながりそうにない
アクセスってみんなどんな場面で使ってるの?
俺の生半可な知識だとDBのユーザー側エンドで使わない人は全く使わなそう
逆に使う人はSQL勉強した方がいいって言いそう

215:名無しさん@そうだ選挙にいこう
10/03/18 23:57:26
>>214
別に仕事につながらないのなら、無理して使う必要はないんじゃない?
似たようなことはEXCELでもできるだろうし。
ただEXCELだとデータをいじられやすくないか。
フォームを使うにしても、ACCESSより一段ハードルが高いような気がするし。
まぁ、顧客管理とか在庫管理なんていうのが比較的ポピュラーなんじゃないの。

216:名無しさん@そうだ選挙にいこう
10/03/19 00:13:47
まぁそうなんだけど知りたいという単純な興味からです
どうせ今求職中の身なので

217:名無しさん@そうだ選挙にいこう
10/03/19 00:17:11
アクセスを当座で見につけてLAN組んでっていうのを考えると
やっぱり在庫管理も顧客管理もエクセルでやってそうですね

218:名無しさん@そうだ選挙にいこう
10/03/19 00:25:27
>>216
たしかこのスレ内だと思ったが、やはり仕事に活かせるシステムを教えてって質問した人がいたけど、
ニッチなシステムが多いから、使っているところでは重宝するが
それ以外の人にはまったく理解不能なシステムが多いっていう回答があったな。
基本的にはまさにそれ。
大元の情報を自分の部署用にカスタマイズとかが多いんじゃない。
まぁ、単独系のシステムも作ったけどね。

219:名無しさん@そうだ選挙にいこう
10/03/19 00:30:20
やっぱり「使える」というレベルになるには深く勉強しろと
なかなか先が長そうですね
でもやっぱりじわじわ勉強はしてみようかな
ありがとう

220:名無しさん@そうだ選挙にいこう
10/03/19 02:35:02
基幹システムのデータベースにAccessのリンクテーブルで接続して
データを抽出、加工してExcelに貼り付けて帳票を作るというのが多い。
いわゆる帳票の一つで、普段良く使う帳票はシステムで作ってあるけど、
たまにしか必要ないとか、イレギュラーなものはテーブルをよく知っている
ヘルプデスクのDBチームが作ることが多い。

221:名無しさん@そうだ選挙にいこう
10/03/19 09:55:04
そういえば昔いた会社で、ACCESSを基幹システムに繋げて見積システムにしてたな。
拠点同士でレプリケーション機能とか使ってるし、すぐにMDBが2G到達するしで、、、、
せめてMSDEにしろよと思いながら、横から生温かい目で見てたのを思い出した。

ACCESSはさ、中途半端に知ってるエンドユーザがうざいんだよな。
安易にテーブルのデータを手修正したり、更新クエリを多用してるのを見てると、
Excelでやるデータ加工よりも手順が確認しずらく危ない気がしてならない。

222:名無しさん@そうだ選挙にいこう
10/03/19 11:12:35
OS-XP access2003

Error 3197 って出てデータ開けない・・・
新しいデータベース作成してインポートも出来ないです
googleで調べてJETCOMPと言う物を使ったけど無理?でした
入力してたテーブルにある基本データだけでも取り出したいのですが無理でしょうか?

223:名無しさん@そうだ選挙にいこう
10/03/19 11:45:13
URLリンク(www.bitpower.co.jp)

224:名無しさん@そうだ選挙にいこう
10/03/19 12:13:27
Access2007、AccessRuntimeでadp→ade作成
クライアントはWindowsXP SP3
サーバーはWindowsServer2003でSQLSERVER2008EE

300件を超える請求先への請求書とその控を印刷します。
フォームのボタンを押したら、請求先ごとにレポート「請求書」「控」を
印刷してクローズ、を繰り返します。

最初の数十件くらいは正常に印刷されるのですが、その後の数百件全て、
日本語(ひらがなや漢字)が全く印刷されなくなります。

よくよく調べてみると、1件印刷するたびに1~2MBの物理メモリを消費しており、
使える物理メモリが無くなったタイミングでおかしくなってしまうようです。

VBAのプログラム上、開いたオブジェクトは全てCloseやNothingで解放してあります。
しかし、1度開いたフォームやレポートが使用した分の何割かは、Accessそのものを
完全に終了させないと解放されないままになってしまいます。

このメモリリークを解消する手立てを探しています。
アドバイスお願いします。

225:名無しさん@そうだ選挙にいこう
10/03/19 12:21:35
>>224
> よくよく調べてみると、1件印刷するたびに1~2MBの物理メモリを消費しており、

Access の問題か?
スプール設定を調べてみろ、指定フォルダの容量とか

226:224
10/03/19 13:55:58
>>225
MSACCESS.EXEのメモリ使用量がぐんぐん増加します。
また、現象が起こった際に、フォーム上のボタンやラベルのキャプションが
一部消えてしまいます。(「印刷」「閉じる」等の文字)
これが、クライアント端末3台、テスト端末2台全てで発生します。

スプール設定というと、プリンタのプロパティの詳細設定でしょうか?
「すぐに印刷データをプリンタに送る」となっていたので、「全ページ分のデータを
スプールしてから…」に変えてみましたが、現象変わりませんでした。

指定フォルダの容量とは、adeファイルの場所のことでしょうか?
CやDドライブにフォルダを作成して、その中にadeを置いて動かしていますが、
Accessが使用する容量をどこかで設定できるのでしょうか?

227:名無しさん@そうだ選挙にいこう
10/03/19 14:11:25
C:\の空きが少なくて \System32\spool\PRINTERS が溢れるんじゃねえのか?
とりあえず、スプールフォルダを空きの大きい別ドライブに指定しろ

228:224
10/03/19 14:34:26
>>227
クライアント端末は今見れませんが、テスト端末ではCドライブの容量は
それぞれ30GB、70GB以上空いています。

連続で印刷しながら、Cの空き容量とspool\PRINTERS内を
モニタしてみましたが、数KBのファイルが出来ては一瞬で消えていくだけで、
特に溢れている様子はありませんでした。

229:名無しさん@そうだ選挙にいこう
10/03/19 15:00:32
2007ランタイムは「Windows Vista」「Windows XP Service Pack 2」のみじゃなかった?

230:名無しさん@そうだ選挙にいこう
10/03/19 15:12:40
>>222
Error Number 3197 はメモ型かOLE 型のフィールドが壊れたときに出るエラーみたい。
VBA を使ってテーブルを開き、壊れているレコードを特定して削除すれば開けるかも。
URLリンク(www.granite.ab.ca)
URLリンク(support.microsoft.com)

231:名無しさん@そうだ選挙にいこう
10/03/19 15:49:17
Runtimeでadpってありなん?
パッケージソリューションに乗るの?

232:名無しさん@そうだ選挙にいこう
10/03/19 15:55:49
>>224
まず、リークの原因を突き止めることだと思う。
他のプリンタを使用した場合は?
印刷時のみ発生するのか?
OLEオブジェクト、サブレポートとかがリークしてないか?

233:名無しさん@そうだ選挙にいこう
10/03/19 16:03:25
>>224
レポートじゃなくて、きちんとデータが取得できてるかどうかシミュレーションしてみたら?
全ての環境で同じ状況ってんだから、コード見直すしかねーべな

>>229
まぁ問題ないと思うけど、そうなってるよね

234:名無しさん@そうだ選挙にいこう
10/03/19 16:14:53
>>224
>請求先ごとにレポート「請求書」「控」を
>印刷してクローズ、を繰り返します。

普通は取引先ごとにグループ化して作るものじゃない?
クローズする必要がわからん。

235:名無しさん@そうだ選挙にいこう
10/03/19 16:18:06
adpってSQLServerから非同期っぽくデータをロードするんじゃねかったけか?
ロードが間に合ってないってことがありえるんかな?

236:名無しさん@そうだ選挙にいこう
10/03/19 16:35:58
スプールやめてみたら。処理が追いついてないんだろう。

237:234
10/03/19 16:41:43
>>224
ExcelVBAでセルを色塗りするツールを作ったとき、セルが多すぎると
Excelが落ちるエラーがあった。
一定数色塗りするごとにブックのセーブをかけると落ちなかった。

仕組みはよく解らんが、OS(Windows)がExcelを立ち上げるとき、
アプリ領域、データ領域、機能ごとの作業領域という風にメモリを確保するらしい。
作業領域は意外と狭く実行中には広がらないようで、これを超えると
エラーになるが、保存処理を行うと開放されるということらしい。

今回のエラーも作業領域不足で、Accessファイルを保存すると
回避できるかもしれないが、Accessの保存はフォームや、レポートの保存で
アプリの保存というのはないんじゃなかったっけか?
だとすると回避策はないかもしれない。

238:名無しさん@そうだ選挙にいこう
10/03/19 16:50:07
そういえばCANONのプリンタってビジネス機でも早いほうのメモリを使うとかなかったっけ。
案外プリンタがメモリを食っているんじゃない?

239:名無しさん@そうだ選挙にいこう
10/03/20 00:34:29

SELECT * INTO [Excel 5.0;Database=c:\0000.xls;].[1-3月] FROM TMP;

とすると、TMPテーブルの内容をXLSファイルへエクスポートできた
のですが、シート名「1-3月」が「__3月」に化けてしまいます。
全て全角で「1-3月」とすると問題無いのですが、
半角文字と全角文字を混在する事はできないのでしょうか?

240:名無しさん@そうだ選挙にいこう
10/03/20 01:09:14
>>239
ダブルクォーテーション " の場合2つ "" つづけるとエスケープできるけど。
- の前に " をつけて [1"-3月] とかでできないかな?

241:240
10/03/20 01:18:47
>>239
ダブルクォーテーションやシングルクォーテーョンで
囲むとできないかな?
["1-3月"]
['1-3月']

242:224
10/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
10/03/20 16:13:56
手を変え品を変えやってみましたが、やっぱり解決しません…。
プリンターのプロパティの詳細設定で「プリンタに直接送る」チェックしてもダメでした。
(「スプールを使わない」というのはこれでいいんですよね?)

224で「使える物理メモリが無くなったタイミング」と書いていますが、
よくよく眺めてみると、「使える仮想メモリが無くなったタイミング」でした。
処理中に物理も仮想も減っていきますが、仮想メモリ使用量が設定の上限に
達したところから、おかしな現象が起こりはじめます。

どうやっても
「Docmd.Open acReport, [レポート名]」でレポート/プレビュー→印刷、
「Docmd.Close acReport, [レポート名], acSaveNo」で閉じた後に、
その分のメモリが解放されません。

試しに、新規accdbファイルを作って白紙のレポートにテキストボックスを数個貼り付けて
OpenClose繰り返してみたところ、白紙なので量は少ないものの、
MSACCESS.EXEの使用メモリがいくらか増えたままになっていました。
請求書の罫線やデータ山盛りの状態だと、その分多いだけで、
これはAccess2007のバグなのかもしれないと思いはじめました…。

244:名無しさん@そうだ選挙にいこう
10/03/20 17:40:50
>>243
1回の作業で1万枚以上印刷しても問題はなかったけどなぁ。VB+mdbの環境だったが。
何かほかの作業をするとボタン等が消えてしまう現象は発生したが、動作的には問題はなかったし。
レコードソースが多段クエリだと、たまに印字されないとかの不具合が発生した気も。


245:名無しさん@そうだ選挙にいこう
10/03/20 18:17:18
>>242
>印刷前にプレビューで開いて設定値を取得・セットし

どんな値を設定してるのかわからんがクエリに値をセットして
レポートのレコードソースにはできないのか?

246:名無しさん@そうだ選挙にいこう
10/03/20 19:39:28
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使わない方向でいいかなと俺は思ってる。


247:名無しさん@そうだ選挙にいこう
10/03/20 19:46:54
OSの問題?
Accessの問題?

248:名無しさん@そうだ選挙にいこう
10/03/20 20:08:05
>>247
Accessの問題じゃない? 印刷ってフォーマット時と印刷時イベントがあることから
単純に考えて倍の労力が使われている気が。

249:224
10/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しつつ、
別プロセスで印刷していく仕組みにしようと思います。

250:名無しさん@そうだ選挙にいこう
10/03/20 21:02:25
ビル「Runtime では印刷させません」

251:名無しさん@そうだ選挙にいこう
10/03/21 11:20:31
アクセスがやっと桐に追いついたかなぁって思ったが、マダマダじゃん

252:名無しさん@そうだ選挙にいこう
10/03/21 14:36:03
【 システム環境  】 WindowsXP, Access2007
【 VBAが使えるか 】 いいえ
【 VBAでの回答  】 否
【 検索キーワード 】 リレーションシップ

業務マニュアルのDBをつくりたいです。個別の業務を副次業務としたメタ業務もあります。
「1チャーハンつくる」「2ラーメンつくる」「3お昼ごはんをつくる」という業務があって、1、2は3の
副次業務であるとき、1を選ぶとチャーハンのつくりかた、3を選ぶとチャーハンとラーメンの
つくりかたと3自身のマニュアルも一度に表示されるクエリーをつくりたいです。
副次のネストのレベルは無制限にしたいです。

そこでつぎのようなリレーションシップを作りました。t業務とt業務_1は同一のテーブルです。
URLリンク(www.dotup.org)

t業務:ID
t業務サブ:サブ業務ID
t業務_1:業務名
t業務内容:内容
のクエリーをつくれば
1 1 チャーハン いためる
2 2 ラーメン  ゆでる
3 3 お昼ごはん 300円以内
3 1 チャーハン いためる
3 2 ラーメン  ゆでる
のような結果が得られることを期待してました。

しかし、リレーションシップの保存後はこうなってしまいます。
URLリンク(www.dotup.org)

そもそもつくりかたがまずいような気もするんですが、どうしたらいいでしょうか?


253:名無しさん@そうだ選挙にいこう
10/03/21 15:43:36
読解力がなくてすまないが、抽出条件でサブ業務ID >=抽出条件で済むんじゃないの?
つうか、業務IDでチャーハン、ラーメン、お昼ご飯だけでよさ気だが。

254:253
10/03/21 15:44:39
<=だたorz

255:252
10/03/21 16:03:26
実際にはグラタンやらハンバーグやら晩御飯やらが順不同で
入力されてるので、単に「お昼ごはんより業務IDが小さい」だけで
その副次業務を抽出することはできないのです。

256:252
10/03/21 17:40:03
つらつら考えてみるに

業務ID 上位業務ID

2    
3    2
4    2
5    
6    4

上のようなテーブルがあるとき、業務IDに2を指定すると

業務ID





のテーブルかクエリーをつくれれば解決なわけです。
こういうのはVBAを使わないと無理でしょうか。

257:名無しさん@そうだ選挙にいこう
10/03/21 20:24:43
>>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
10/03/21 20:41:26
ありがとうございました。
段数無制限で再帰的につくれる方法があるといいんですが。

259:名無しさん@そうだ選挙にいこう
10/03/22 16:18:27
【 システム環境  】 Windows xp, Access2003
テーブルにあるデータ一列に置換で文字を変換(日々増えて、数百あるものを3種類に集約)
→・その結果を反映させて、それをあらかじめ並べてあるピポットで集計
→・これをExcelにシートを分けて、エクスポートって可能でしょうか?

置換しようとしたら、グレーゾーンで押せず、ピポットで型は作ったけど、
反映されず、都度Excelでエキスポートした後に置換、ピポットってやってるのが手間で。



260:256
10/03/22 17:59:52
間口広げます。
VBAでうまい方法があれば教えてください。

261:256
10/03/22 18:11:06
たびたびですみません。
結果はこう出力したいです。

業務ID レベル
2    1
3    2
4    2
6    3

262:名無しさん@そうだ選挙にいこう
10/03/22 22:21:57
>>260
>>261
> 間口広げます。
上から目線かよ

その前に、もう少しわかるように説明してくれ。
何をどうしたいのかよくわからん。

263:名無しさん@そうだ選挙にいこう
10/03/22 22:58:14
>>260
で、>>80との関係は?

264:256
10/03/22 23:03:32
自分の間口広げてみました。

業務ID 上位業務ID


3    2
4    2
4    3

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
10/03/22 23:05:39
>>263 >>80は別人です。

266:259
10/03/22 23:08:13
自分もアドバイス頂けるとたすかります!

267:名無しさん@そうだ選挙にいこう
10/03/22 23:23:56
>>259
エクスポートではないけんど、コピーしてExcellに貼り付けってできたと思うから、
なんとかかんとか可能な処理じゃね?2003環境ないから責任はとらんぜよ。

>>256
間口広げるのはどうぞご自由になんだが、
こうやってみたけどうまくいかないとかさ、評価や意見を求めるならレスしやすいけど、
ズバリ解答っぽいのを求められてもなぁさらに後だしでしょ。はははは。

268:名無しさん@そうだ選挙にいこう
10/03/22 23:28:56
>>256
よくわからんなぁ。最初の例で言うと要は単品メニューとセットメニューがあるようなものか?

269:256
10/03/22 23:49:34
>>268
そんな感じです。チャーハンのレシピはさまざまな上位グループに従属します。

健康管理-食事-お昼ごはん-チャーハン
健康管理-炭水化物-チャーハン
家計管理-食費-チャーハン
材料-野菜-にんじん-チャーハン

みたいなイメージで。もっときちんと統制掛けないと自分でもわけわかめになりそうですけど
自由度がほしい。


270:名無しさん@そうだ選挙にいこう
10/03/22 23:55:50
もう少しで2010でますね。
64bitにしてみたいけど、アプリ配布先は2007以前+32bitOSが多勢だからどうしようか迷い中だぜ。
runtimeが早めに出てくれたらいいなぁと思う連休最終日。ちょっと鬱。
寝れないのでRibbonUIでも勉強するべ。

271:名無しさん@そうだ選挙にいこう
10/03/23 00:00:46
2010のランタイムはもう出てるじゃん

272:名無しさん@そうだ選挙にいこう
10/03/23 00:08:12
正式にリリースされてないものは、製品の一部としても検収してくれねぇってことよ

273:名無しさん@そうだ選挙にいこう
10/03/23 00:14:23
2010ランタイムは即時に出すって方針で、βでもほぼ同時に出した、製品版でもほぼ同時にでる予定になってる

274:名無しさん@そうだ選挙にいこう
10/03/23 00:24:34
おっほ、そうなのか。
SharePointとの絡みもあるからさほど後にならんだろうと思っていたのだけど、
ほぼ同時なら俺にはありがてぇ話だ。RTMでもほぼ同時になることをお祈りするわ。

275:名無しさん@そうだ選挙にいこう
10/03/23 20:02:22
ACCESS2003を勉強する必要があって、価格.comを調べてみたら
URLリンク(kakaku.com)

2年前は3万円代で買えたのに、同じ店で今は7万円前後と金額が約倍に跳ね上がっています。
その理由をご存知の方いらっしゃったら教えて下さい。
よろしくお願いします。

276:名無しさん@そうだ選挙にいこう
10/03/23 20:04:11
もう入荷しないから

277:名無しさん@そうだ選挙にいこう
10/03/23 20:06:54
早速のお返事有難うございます。
そうですか、じゃあこの値段で買うしかないという事ですか・・・

278:名無しさん@そうだ選挙にいこう
10/03/23 20:08:59
別に無理に買ってくれんでも良いよ

279:名無しさん@そうだ選挙にいこう
10/03/23 20:28:34
別に2003に拘んなくても...という俺は2000でも使いこなしてない

280:259
10/03/23 21:58:49
>>267
ありがとうございました。やっぱり置換、ピボットはExcelエキスポートしてからにします。
何かうまく自動化できないもんですかね?

281:名無しさん@そうだ選挙にいこう
10/03/23 22:11:29
そもそも7万あったら桐が買えるんじゃね?

282:名無しさん@そうだ選挙にいこう
10/03/23 22:13:03
桐か・・・/(^o^)\

283:名無しさん@そうだ選挙にいこう
10/03/23 23:29:07
うん、桐が買えちゃうから、その2003は不要。

284:名無しさん@そうだ選挙にいこう
10/03/24 07:26:02
>>259
後出しになってる時点で終わってる。

質問は「こうやったら、こうなる」という例を
自分で説明できるようになってから。

285:名無しさん@そうだ選挙にいこう
10/03/24 15:35:49
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に戻ってきたときにレコードソースを戻す

もしかして無理?

286:名無しさん@そうだ選挙にいこう
10/03/24 17:01:30
>>285
フォームB閉じるときにForms("フォームA").Requeryで出来ないのかい?


287:名無しさん@そうだ選挙にいこう
10/03/24 17:19:21
単に、フォームAのレコードソースに同じものをセットし直せば良いんジャマイカ

288:285
10/03/24 17:37:45
>>286
どうもです、試してみましたが空白表示のままでした。
(念のため追加の許可TRUE、FALSE両方試したけどダメでしたorz)
>>287
どうもです、レコードソースのセットし直しでもなんか動いてくれなかったので、
フォームBからフォームAのコントロールに直接値をセットしたらOKでした。
 例)Forms(FORMNAME_MAKE).項目名.VALUE = Me.項目名.VALUE ※ フォームBのソースで記述

ありがとうございます!

289:名無しさん@そうだ選挙にいこう
10/03/25 03:04:12
リボンのカスタマイズとか自前のリボン作れるようになったんだけどさ
使いどころがいまひとつピンとこないんよね。頭が固くなっちゃったかなぁ

290:名無しさん@そうだ選挙にいこう
10/03/25 11:27:42
けっきょく桐を買いますた。

291:名無しさん@そうだ選挙にいこう
10/03/25 18:11:28
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の内周部を使うのであれば
変化は感じ取れるのでしょうか?
(すべてメモリ上で処理する?)

データベースとハードウェアスペックにどれくらいの依存度が
あるかわかりませんが、可能であれば、
良い状態にしたいのでアドバイスお願いします。


292:名無しさん@そうだ選挙にいこう
10/03/25 18:22:27
そのPCで他に何かの作業をするかどうかは考えないとして、
CPU:前者
メモリ:効果なし
HDD:プラッタ容量次第では感じる


293:名無しさん@そうだ選挙にいこう
10/03/25 19:20:37
OS:xp ACCESS2003です

クエリの並べ替え→昇降順では並び替えられない文字列を、好きなように並べる式ってありますか?
お願いします

294:名無しさん@そうだ選挙にいこう
10/03/25 19:34:45
並び替え用のフィールドをつくる

295:名無しさん@そうだ選挙にいこう
10/03/25 20:38:11
>>291
メモリーを2GBつんでいたのなら4GBにしたところで効果はないだろうな。
でも4GB中2GB程度をRAMディスクにして、そこで作業すれば効果があるかも知れん。

296:名無しさん@そうだ選挙にいこう
10/03/25 20:38:36
おじさんが使いだした頃はAccessでODBC使うとネットワークトラフィックが・・・
とか言われたんだが、今時のギガビットネットワークでも同じなのかな?

297:名無しさん@そうだ選挙にいこう
10/03/25 20:54:08
>>296
仕様自体は変わっていないから通信量は変わらんだろうな。
ただ、相対的に回線使用率は下がっているだろうけど。

298:名無しさん@そうだ選挙にいこう
10/03/25 21:46:45
Me.サブフォーム.Form.Requery と
Me.Sub_サブフォーム.Requery
の違いを教えてください

299:名無しさん@そうだ選挙にいこう
10/03/25 22:01:27
>>298
上はサブフォームのリクエリ
下はメインフォームのコントロールのリクエリ

300:名無しさん@そうだ選挙にいこう
10/03/27 13:50:23
>>299
ありがとうございます

301:あぼーん
あぼーん
あぼーん

302:名無しさん@そうだ選挙にいこう
10/03/31 13:01:39
>>224
メモリリークの問題は俺も過去に経験した。結果、未だ解決できていない。
なのでメモリをたくさん搭載したマシンで動かすという力業をやっている。
URLリンク(virtual.haru.gs)
URLリンク(virtual.haru.gs)

およそ100件の勤怠データを個別にPDF化してメールでそれらを個別に送信
というプログラムを作ったわけだが、これだけでだいたいメモリを1GBちょっと
消費する。

いくらオブジェクトを解放してもVMでつかんでいるメモリの量が減ることはなかった。
だからメモリの少ないマシンでやるとメモリ不足でハングする。

AccessのPDFアドインを使った場合も、ReportToPDF使った場合もどちらも同じ。
やや後者のほうがメモリ消費量が少ない。Accessのメモリリークの問題は既知の
問題だが未だに解決されてないよ。

303:名無しさん@そうだ選挙にいこう
10/03/31 13:46:45
スレチだが、
>>302リンク先の別記事でGoogle Map API KeyをAccessローカルアプリ上でつこうてるよう
に見受けられるね

304:名無しさん@そうだ選挙にいこう
10/04/02 17:12:37
2010 RTM まだかいなっ♪

305:名無しさん@そうだ選挙にいこう
10/04/02 17:21:29
部門内のお仕事便利化ツールをお勉強がてら作りたいな~と思っているんですが、
これから覚える開発環境としてはどちらがお勧めですか?
経験があるのはVBAとPHP+MYSQLくらいです。

1.Access2007+ADO+SQLServer2008Express
2.VB.net Webアプリ+SQLServer2008Express

306:名無しさん@そうだ選挙にいこう
10/04/02 18:54:04
>>305
両者を比較するにはスケールというか何かが違いすぎねか?
手っ取り早く始められるってんなら1.でえーじゃろうがなぁ、
ちょっと色がちがうけどSharePointってのも部門内ツールとして面白いよ

307:名無しさん@そうだ選挙にいこう
10/04/03 23:17:59
3 .桐V9 + Oracle10gXE

これが最強だろ

308:名無しさん@そうだ選挙にいこう
10/04/05 16:28:44
人すくねー。つまらんからRibbonXmlでも書いてひつまぶし。くいてー
<customUI xmlns="URLリンク(schemas.microsoft.com)">
 <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:名無しさん@そうだ選挙にいこう
10/04/10 21:33:59
桐にしとけ

310:名無しさん@そうだ選挙にいこう
10/04/10 21:49:14
質問です。

Access2007を使っております。今までメニューもフォームで作っていたのですが、
これをリボンで作ることにしました。普通のボタンは設置できて作れたわけなので
すが、以下の問題点がどう解消したらいいのかわかりません。

1.コンボボックスをどうやって設置したらよいのかわからない。
2.そのコンボボックスにとあるレコードをレコードソースとして割り当てたい
3.そのコンボボックスにある値(0番目のIDを対象)をVBAで読みとりたい。
4.そのコンボボックスのソースを更新したい

これらはどうやったらできるのでしょうか?

311:名無しさん@そうだ選挙にいこう
10/04/10 22:12:55
>>310
URLリンク(msdn.microsoft.com)
ここの内容を先に理解すべきかと思う。
1.>>308のようなRibbonXmlを作成する必要がある
2.リボンに配置した要素のコールバック(get~)で設定する
3.リボンに配置した要素のコールバック(on~)で取得する
4.object.Invalidateもしくはobject.InvalidateControlで強制更新し発生するコールバックで更新する。

312:名無しさん@そうだ選挙にいこう
10/04/11 18:42:44
Access 2003でページ設定からの印刷設定が全く保持されないんだけど
これって対処可能なのかな不可能なのかな?

用紙サイズ・給紙方法を毎回変えるのがだるいんだけど Acc2000/Acc2007はともかく2003のはみつからんかった


313:名無しさんφ ◆rNiNKtLPbM
10/04/11 18:58:17
>>312
2007でも当初その問題があったが、バグということで、パッチが出て対処されたよ。

2003でもパッチか何かあるんじゃないかい?

あとこういうのがあった。
URLリンク(www.nbcom.co.jp)
URLリンク(www.bitpower.co.jp)
URLリンク(pinka99.ddo.jp)

とりあえず最新のSPは当てて於くべしでしょう

314:名無しさん@そうだ選挙にいこう
10/04/12 11:41:21
20フィールドあるテーブルで全てを対象に抽出したい場合、どうするのが速度が速いのでしょうか?
検索は曖昧検索です。
フィールドは、テキスト、メモが入り混じってます。

今は、クエリでフィールドを全て一つのフィールドのように見立ててLikeでしています。
ただし結果の表示は遅いです。

315:名無しさん@そうだ選挙にいこう
10/04/12 16:26:16
>>314
20フィールドそれぞれで like検索して orで繋げて試してみたら?

316:名無しさん@そうだ選挙にいこう
10/04/13 15:05:22
tes

317:名無しさん@そうだ選挙にいこう
10/04/14 16:36:35
テーブルのデータをコピーしたいと思います。ただ当DBで他の作業をしたままコピーしたいので
時間よりも処理を軽くしたいと思うのですが、そういうのは可能なんでしょうか?
データのコピー先はLANで接続されたネットワーク越しになります。

318:名無しさん@そうだ選挙にいこう
10/04/14 16:51:16
>>317
MDBファイルを他所へコピーして、そこからテーブルのデータをコピーすれば、
他作業への影響は全く無いんじゃない?

319:名無しさん@そうだ選挙にいこう
10/04/14 19:16:09
test

320:名無しさん@そうだ選挙にいこう
10/04/14 20:50:34
桐ってOracleに接続できるの?

321:名無しさん@そうだ選挙にいこう
10/04/14 23:09:18
桐はDOS時代からオラクル接続が売りの一つ

322:名無しさん@そうだ選挙にいこう
10/04/16 18:34:37
そうだったんですか?初耳だな~

323:名無しさん@そうだ選挙にいこう
10/04/18 19:40:32
何でこんなに高いんでしょう。
三万じゃなく一万五千くらいなら買うのに


324:名無しさん@そうだ選挙にいこう
10/04/18 19:58:02
googleのなら無料だよ!

325:名無しさん@そうだ選挙にいこう
10/04/18 20:05:39
ライセンス体系は見直した方が良いとは俺も思うな。

326:名無しさん@そうだ選挙にいこう
10/04/18 20:36:18
>>324
それは何でしょうか?フリーソフトか何かですか?

327:名無しさん@そうだ選挙にいこう
10/04/18 21:10:33
>>323
通販でアカデミックかアップグレード版を買うべし

328:名無しさんφ ◆rNiNKtLPbM
10/04/18 23:45:31
>>323
長年、Access使ってきた身としては、特に高いとは感じないな。

様々なアプリケーションを作ってきたけれど、十分価格以上のリターン
を得られたし。金だけじゃなくてね。

高いと感じる人は、オフィスとしてのAccessっていう位置付けしか感じ
ない 使っていないからだと思うよ。VBA駆使したり他のデータベース
のフロントエンドとしての使い方だとか、VBの代わりとして使うとかそう
いう開発環境としての使い方はしていないでしょ。

住所録だとか台帳だとか、そういったお決まりで尚かつVBA駆使しない
で作るアプリケーションとかね。さらに一歩踏み込んで開発環境として
使う 使い道を探る 応用してみると、この価格は価格相応だと思うよ。



329:名無しさん@そうだ選挙にいこう
10/04/19 00:00:17
でもMSだからなぁ。
2000でSR-1が来るまでは辛かったぜ。
金もらってもいいと思うくらいのレベルだったよ。

330:名無しさんφ ◆rNiNKtLPbM
10/04/19 00:10:14
>>329
Access2007でも、終了時に最適化を行うと最適化失敗したあげくに
ファイルが消滅するバグがあったよ・・・・あれは最悪だった。

パッチやSPが出るまでヒヤヒヤものだった。

331:名無しさん@そうだ選挙にいこう
10/04/19 01:01:14
>>327
学生じゃないし、グレードアップも何も前ヴァージョン買ってないので。
ベータ版を使用してますよ。使えるうちにデータ作るつもり

332:名無しさん@そうだ選挙にいこう
10/04/19 22:43:14
>>323
Access2007は22,000円位で実売してるだろ
自分はoffice2010へのアップグレードを考えて
アップグレード版のプロフェッショナル買ったけど

333:名無しさん@そうだ選挙にいこう
10/04/22 23:18:21
access2003の以下の症状で困ってます。

1.access2003のレポートでword2003文書を貼り付けて使用していた。

2.パソコンがクラッシュしリカバリ

3.リカバリ後、access2003のレポートに貼り付けた、word2003文書を編集すると
  貼り付けた文書のサイズが小さくなる。

リカバリ前は、貼り付けた文書を編集してもサイズは変わりませんでした。

対処方法はどうしたらいいのでしょうか?



334:名無しさん@そうだ選挙にいこう
10/04/22 23:48:40
パッチをあてる

335:名無しさん@そうだ選挙にいこう
10/04/23 02:27:42
Access2010 RTM 記念sage

336:名無しさん@そうだ選挙にいこう
10/04/23 04:53:58
backstage ちょっとおもしろいねぇ
配布アプリケーションの設定とかに使えそうな気配

337:名無しさん@そうだ選挙にいこう
10/04/23 13:24:10
64bit版で作成したaccdeは32bit版では作動しねぇの忘れてたぁ。ぐぬぬぬ
32→64も同じだぁ。ぐぬぬ

VBA7へのVerUp!

338:名無しさん@そうだ選挙にいこう
10/04/23 14:45:35
まじで?
32→64は問題なさそうだが、そうもいかないの?

339:337
10/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:名無しさん@そうだ選挙にいこう
10/04/24 19:11:22
高すぎるが、これって待っていれば新しいバージョンどんどんでて
そのうちに安くなる可能性ってある?(二万円くらいならなんとか)

341:名無しさん@そうだ選挙にいこう
10/04/24 21:19:34
>>340
6月に発売される Access 2010 は既にアップグレード版が \11,813, 通常版が \13,986 だよ。
URLリンク(kakaku.com)

342:名無しさん@そうだ選挙にいこう
10/04/24 22:20:24
ようやく2010のレイアウトに慣れてきたばかりだと言うのに・・・
ところで、何が違うんだ?

343:名無しさん@そうだ選挙にいこう
10/04/25 07:50:48
>>341
おお!サンクス!!

344:名無しさん@そうだ選挙にいこう
10/04/27 08:04:23
長いことjetで使っていたaccessのシステムをMSDEにしようと思っています。
ただデータはサーバー側に置くのは当然として
プログラムは今までどおりクライアントに置いた方がいいのか迷ってます。
サーバーに置いても構わないのならプログラムの修正の時簡単ではいいのですが?
どなたかアドバイスいただけないでしょうか?


345:名無しさん@そうだ選挙にいこう
10/04/27 09:08:26
MSDEってどういう意味で使ってるんだ?
俺が無知なだけなのかもしれないけど。

でも、プログラム修正の手間を考えたらMDBからSQLServerに
接続して使う方が楽なんじゃないかと思うんだけど…。

Thinクライアントで、ってこと?

346:名無しさん@そうだ選挙にいこう
10/04/27 15:24:04
>>344
アップサイジングして終了じゃないか。

347:名無しさん@そうだ選挙にいこう
10/04/27 16:31:43
プログラムはADP内じゃないの?

348:名無しさん@そうだ選挙にいこう
10/04/27 18:47:23
Access2002のファイルを2007に変換したいのですが、
[ホスト名]のユーザAdminが排他的に開いています。データベースが使用可能になった時点で、再度実行してください。
と出てしまい、変換できません。

このファイルをアップサイジングしたいのですが、
一度2007形式にしないとダメなようで困ってます…。

349:名無しさん@そうだ選挙にいこう
10/04/27 20:26:09
>>346
> アップサイジングして終了じゃないか。
おお、すっかり忘れていた。こんな便利な機能があったんだ。
どうもありがとうございました。

350:名無しさん@そうだ選挙にいこう
10/04/28 17:21:26
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


351:名無しさん@そうだ選挙にいこう
10/04/28 19:24:58
主キーが「連番、行」ってどういう意味?
連番と行をつなげたものを主キーにしてるってこと?

352:名無しさん@そうだ選挙にいこう
10/04/28 19:38:05
>>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'

353:名無しさん@そうだ選挙にいこう
10/04/28 21:38:29
同じ連番内に同じコードが複数存在することはないの?
あるなら>>352でもまずいと思うけど

354:名無しさん@そうだ選挙にいこう
10/04/29 17:09:10
辞書データみたいなテーブルがあるとして
外来語というかカタカナだけで構成された文字列を抜き出すには
どんな抽出条件を書けばいいんでしょう

355:名無しさん@そうだ選挙にいこう
10/04/29 17:13:50
ごめんなさい、途中で送信しちゃった。
like "*[ア-ン]*"
この書き方だとよけいなものも引っ張り出されてきます。

356:名無しさん@そうだ選挙にいこう
10/04/29 17:16:44
ア-ン

357:名無しさん@そうだ選挙にいこう
10/05/01 11:08:17
一般的にGWだ。俺は仕事だ。だけど少々暇だ
てなわけで、2010でデータマクロをいじってみるぜぇ

ときに、データマクロって実際のところ何に使うよ?
ログとったりタイムスタンプっぽくしてみたりか?
非正規化するあたりで、親子関係のテーブルでレコード数とか関連を補うっつー感じかな?



358:名無しさん@そうだ選挙にいこう
10/05/01 11:22:27
>>357
> ときに、データマクロって実際のところ何に使うよ?

主な目的は、Webに上げた時の参照整合性を自分で組む

359:名無しさん@そうだ選挙にいこう
10/05/01 12:09:36
Windows7 Access2003
で開発しています。

自分のパソコンでは正常に動作するのに
ほかのパソコンで実行するとエラーが発生します。

環境はエラーが起きるマシンもWindows7 Access2003です。
確認できる症状としてはDateadd関数で

実行時エラー'5' プロシージャの呼び出し、または引数が不正です。
と表示される。

SQL文にてReplaseで対象文字列の変換をかけているけど、変換が行われない。
(SQLを流すと特にエラーも発生せず、そのまま実行される)
ちなみにInsertとかDelete,Updateは正常に動く。

このような症状です。

エラーが起きるマシンでAccess2003を再インストールしましたが、
症状はなおりませんでした。

参照設定とか確認してみましたが、特に変わったところとかありません。

エラーが起きるマシン以外の他のマシンにて動作確認してみましたが、
正常に動作しました。

何かが壊れているのでしょうか。


360:名無しさん@そうだ選挙にいこう
10/05/01 14:38:19
>>359
Microsoft Data Access Components (MDAC) のバージョン違い。

361:357
10/05/02 01:29:54
>>358
>主な目的は、Webに上げた時の参照整合性を自分で組む

そーなんだろーなぁ。と思いSharePoint2010も用意してみた。
ええなぁと思った。WSSに比べるとだいぶ使いやすくなってんのなぁ。
しかし、コスト的に敷居が高いなぁ。foundationでもaccess使わして欲しいぜ

マクロの役割が向上したということで、どううまく使うかってとこか。

362:名無しさん@そうだ選挙にいこう
10/05/04 19:44:10
すいません、スレの主旨から外れるのですが、
「アクセスでこんなことが可能ですか?」という質問させてください。

(質問)
現在使用中の会計ソフトには、仕訳データをテキストファイルでエクスポートする機能が付いています。
このテキストファイルを取り込んで、次のように総勘定元帳を出力できるでしょうか?

・任意の勘定科目を指定
・任意の部門を指定
・任意の期間を指定

もちろん、仕訳データは「勘定科目」「部門」「期間」といった情報を持っています。

よろしくお願いいたしますm(_ _)m

363:名無しさん@そうだ選挙にいこう
10/05/04 23:15:01
>>362
魔法の道具じゃねぇから、出来る出来ないはYou次第

364:名無しさん@そうだ選挙にいこう
10/05/04 23:32:09
>>362
できる。

以上

365:名無しさん@そうだ選挙にいこう
10/05/05 05:35:51
>>362
Accessにはテキストデータを[テーブル]にインポートする機能がありますので、
会計ソフトの仕訳データを利用することは可能です。(>>364
ただし、インポートしたデータを希望される形で抽出したり印刷したりする仕組みは
ご自身で作り込む必要があります。(>>363

366:名無しさん@そうだ選挙にいこう
10/05/05 08:15:11
>>362
会計だの定型つーか、ありがち想定内の処理は、
桐にしとくと簡単確実

367:名無しさん@そうだ選挙にいこう
10/05/05 13:05:13
access2010いじり倒しましたぁ
アプリケーションパーツとフィールドテンプレートは、ちょろっと便利ですなぁ
ナビゲーションウインドウは画面遷移がすっきりするのですが、利用の際は検証したほうがよさげ
分割フォームは2007での不具合がいくつか解消されている模様
標準になったWebブラウザコントロール、以前のものより使えそう。ぐぐるまっぷ表示でもするべ
コントロールのサイズを規定値として記憶してくれるのはええなぁ
マクロエディタと式ビルダ、IntelliSenseが効くから使いやすくなった
ショートカットメニューバーをRiboonXmlで運用できたらよかったなぁ

GWそろそろ終了のお知らせ

368:367
10/05/05 13:06:52
ナビゲーションフォームでしたね

369:名無しさん@そうだ選挙にいこう
10/05/05 14:19:30
ブラウズツゥーマクロアクションは試したかい

370:名無しさん@そうだ選挙にいこう
10/05/05 17:06:39
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:名無しさん@そうだ選挙にいこう
10/05/05 21:35:54
色々と報告乙でやんス
非常に参考になった

372:名無しさん@そうだ選挙にいこう
10/05/06 07:46:50
ソフトウェアバージョン:WindowsXPPro,Access2003

VBAにのブレークポイントについてです.
ブレークポイントを設定したのですが,テスト中に中断されません.
ブレークポイントを有効にする方法はありませんでしょうか?

検索の結果,
URLリンク(support.microsoft.com)
の文書を参考にしようとしましたが,
[ ツール ] メニューの [ スタートアップ ]が見つからず手詰まりになってしまいました.

よろしくお願いします.

373:名無しさん@そうだ選挙にいこう
10/05/06 07:48:36
夏発売だが予約したぜ
URLリンク(www.amazon.com)

374:372
10/05/06 18:10:23
自己解決しました

375:名無しさん@そうだ選挙にいこう
10/05/07 22:38:42
2010のパッケージソリューションウィザードがダメな子なのじゃ
セキュリティ設定のレジストリキーをまちがっとるので、設定が有効にならんの
ご利用の方は、修正が来るまでキー追加して使うとよいのじゃ。
ファイルのパッケージ追加できない事象もある。ヒッヒッフー


376:名無しさん@そうだ選挙にいこう
10/05/07 23:04:11
などと意味不明な供述を繰り返しており
動機は未だ不明である

377:名無しさん@そうだ選挙にいこう
10/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


378:名無しさん@そうだ選挙にいこう
10/05/08 18:03:52
フラグ使わずに、金額入力欄のダーティープロパティで出来ないか?

379:377
10/05/08 18:53:05
>>378
すみません、事故解決しました。
本当にありがとうございました。

380:名無しさん@そうだ選挙にいこう
10/05/09 19:41:54
Access2010 βで俺が報告した不具合が治ってねーな
表形式でESCキーアンドゥすると表示位置がズレる

381:名無しさん@そうだ選挙にいこう
10/05/09 21:31:44
Access97/WindowsXP

不一致クエリで二つのフィールドを比較して一致するデータがない名前(間違っている名前)
を抽出してるんですが、ここから更に名前を正しく書き換えたいんです。
クエリだと編集できないのでフォームでも同じような事って出来ないでしょうか?


382:名無しさん@そうだ選挙にいこう
10/05/10 00:31:13
>>381
     *      *
  *  MURIです  +
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

383:名無しさん@そうだ選挙にいこう
10/05/10 12:35:11
Access2003で詳細の部分に編集ロックをかける事はできますでしょうか。
詳細の部分に入っているコントロールに対して一つ一つ編集ロックをかけると手間かかるので
詳細の部分自体に編集ロックをかけられないかと思ったのです。

384:名無しさん@そうだ選挙にいこう
10/05/10 12:40:36
詳細セクションの全てのコントロールをロックしたいの?

385:383
10/05/10 13:07:11
>>384
そうです。
一括でできないのかなと。

386:名無しさん@そうだ選挙にいこう
10/05/10 13:15:51
For each control In Section.acdetail.contorols じゃダメか?
いま出先で記述不正確だが
一括でもAccessの中の人は同じことを行ってる

387:383
10/05/10 13:42:36
>>386
     *      *
  *  できました!  +
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *


388:350
10/05/10 14:38:55
>>352-353
どもです、GW明けで何のことを質問したかすっかり忘れてたのを今日思い出したorz
INとHAVINGを使って実現できました、どうもありがとう!
ちなみに同じ連番内に同じコードが複数存在することはあるけど、
連番とコードでGROUP BYしてから INとHAVINGを使ったらいけたよ。

>>351
テーブルのデザインビューで項目「連番」と「行」の2行に主キーを設定した状態だよん。

389:名無しさん@そうだ選挙にいこう
10/05/10 22:06:41
>>382
無理ですか…(´・ω・`)
ありがとうございました

390:名無しさん@そうだ選挙にいこう
10/05/11 14:51:24
access2010 runtime
URLリンク(www.microsoft.com)
待ってたんだよ

391:名無しさん@そうだ選挙にいこう
10/05/13 07:31:19
もぐにしつこい人が沸いてるな。

392:名無しさん@そうだ選挙にいこう
10/05/13 11:38:38
あーうー、ここにきて64にしよか32にしよか迷ってる。
どーすっかなー。
基本的に64版で開発して、そのまま64用パッケージ作って、VitualPC上の32版で32用パッケージ製造か。
2010Runtime使ってもらうことを前提として、、、ん、2003/2007製品版インストール済みに2010Runtime
インストールするとどうなるか未確認だったわ。ちと確認してくる。後で勝手に報告しにくる

>>391
2003でexcelにエクスポートしたいって件かな?
お付き合いしてる人はえらいよなw
解決したっぽいけど、結局どうすんだろな。。まさかのXML書き出してxlsx製造するんだろか
テンプレ用意してODBCで流し込めばいいか。

393:名無しさん@そうだ選挙にいこう
10/05/13 11:53:25
Null、Falseを論争しているやつかと思った。

394:名無しさん@そうだ選挙にいこう
10/05/13 11:57:54
2010 Updated 関数はメモ型フィールドではサポートされていません。orz

395:392
10/05/13 13:14:24
チラ裏言われようが勝手に報告
2007/2003製品版インストール済み環境に2010Runtimeいれっと、
いつもの通りofficeのprofile設定が走るぜ。わかってればなんともないが
ユーザが騒ぐかも知らんからちとやだな。
64で開発して、2010-32/64と2007の配布3本立てでいくわ。
accessインストールしてるユーザすくねぇしよ。腹くくった。

>>393
そっちもなかなかだな

>>394
[F_メモ型] <> Old.[F_メモ型] ではあかんかな。試してないけど。

396:392
10/05/13 13:32:49
>>394
Oldもだめだったね。o....rz
メモ型フィールドのLenか何かを別フィールドで格納しておいて、
そっちでUpdatedを見る感じならだね

2010runtime修復インストールすると、プロダクトキー入力のオプションがでるんだぜ。


397:名無しさん@そうだ選挙にいこう
10/05/13 13:36:57
>>395
とも、
Old.[F_メモ型] は、メモ型であるために使用できません。 orz

つーか、変更前データマクロでは Old. 自体が無理かなぁ。

398:名無しさん@そうだ選挙にいこう
10/05/13 15:41:11
>>397
変更前でOld使うのはもんだいないっしょ。データ型に制限あるっつーことで。
後考えられるのは、メモ型フィールド同士の比較ができるとして、
名前付きデータマクロにパラメータで渡して比較して処理って感じ?
パラメータにメモ型使えるんかな。あーでも、変更前ってとこから外れちゃうな

399:名無しさん@そうだ選挙にいこう
10/05/13 15:58:03
評価版がきてたのね....

400:名無しさん@そうだ選挙にいこう
10/05/13 15:58:23
変更前でも Oldありなんだな、ありが㌧
実はまだ余り試していない
やはりDBでメモ型は邪道だ

401:名無しさん@そうだ選挙にいこう
10/05/13 16:52:03
邪道だけど、それがACCESSの良いところ。

402:391
10/05/13 18:45:51
>>393
一度閉じたスレ建て直してまで
マジ、こえーよ。

絶対、関わりたくない人種だw

403:名無しさん@そうだ選挙にいこう
10/05/14 07:15:54
知識をひけらかしたいだよ

404:名無しさん@そうだ選挙にいこう
10/05/16 17:05:29
Access2007を使用しています。
アクションクエリを実行時に警告メッセージを出さないようにしたいのですが、上手くいきません。
メッセージの設定という項目で表示を出さないように設定するため、
すべてのアクションを表示を選択して表示させるということまでは調べてわかりました。
しかし、それが選択できない状態になっていて、メッセージの設定が出せません。
セキュリティセンターで、開いているデーターベースファイルを信頼できる場所に設置して開いているのですが…。
全てのアクションを表示を選択可能状態にさせるにはどうしたらよいでしょうか?


405:名無しさん@そうだ選挙にいこう
10/05/16 17:10:43
>>404
> メッセージの設定という項目で表示を出さないように設定するため、
> すべてのアクションを表示を選択して表示させるということまでは調べてわかりました。

どこを調べれば、そんなトンチンカンなことが書いてあるのよ?

406:名無しさん@そうだ選挙にいこう
10/05/16 17:17:37
「Access メッセージの設定」でぐぐるとでてきたのですが・・・。
あと、Accessクエリの本にも載っていました。

407:名無しさん@そうだ選挙にいこう
10/05/16 17:41:19
君はあまりに頭が良すぎるみたいだ
どんなに検索しても、どんな本も、君には無意味だろう

408:名無しさん@そうだ選挙にいこう
10/05/16 17:53:26
>>407
おそらく自分が勘違いしてると思うのですが、その点をご指摘願えないでしょうか・・・。

409:名無しさん@そうだ選挙にいこう
10/05/16 18:02:20
どんな指摘も無意味の気がするが、とりあえず…

> 「Access メッセージの設定」でぐぐるとでてきたのですが・・・。
> あと、Accessクエリの本にも載っていました。

なのか?
そうなのか?
指摘を求める前に、本当にそうなのか? ただ適当に書いただけじゃないのか?
本当にそうなら、それで良いじゃん

410:名無しさん@そうだ選挙にいこう
10/05/16 18:08:21
うーん、>>404の語句の使い方がおかしくて上手くお伝えできなかったのでしょうか・・・。
一応、紹介されていたところをはってみます。
URLリンク(www.relief.jp)

411:名無しさん@そうだ選挙にいこう
10/05/16 18:15:26
>>410
ああ、君が正しかった
レジストリ弄ってサンドボックスモードを解除してみれ
ヘルプで調べて

412:名無しさん@そうだ選挙にいこう
10/05/16 18:17:36
マクロの使い方の話なんだなw
クライアントの設定かと思ったぜ。あーははは


413:名無しさん@そうだ選挙にいこう
10/05/16 18:24:30
言葉足らずですみません。
アドバイスありがとうございます、やってみます。

414:名無しさん@そうだ選挙にいこう
10/05/16 23:06:54
accessを本で勉強しておりますが、DAOが出てきてから疑問が湧き進めません。
DAOのメリットがわからないのどの状況で使えばいいのか分からないのです。
DAOを介して操作するのはなんの為なんでしょう。
最初はaccessが無くてもVisual Basicで作ったソフトから操作するためなのかな?と思っておりましたが、それならランタイムでもいけます。
抽出や入力等はクエリでもVBAでも同じ事が出来ますよね。
DAO使用を前提にVBAを書いて行く理由等を教えていただけませんでしょうか。

415:名無しさん@そうだ選挙にいこう
10/05/16 23:34:46
>>414
> 抽出や入力等はクエリでもVBAでも同じ事が出来ますよね。
抽出や入力等は、もともとAccessで出来るだろ
Accessアプリケーションレベルで出来ないことを、オマケに付いてるVBAで扱いたいが、
データベーステーブルはVBAで扱えるオブジェクトでないから普通には無理
DAOを通せばデータオブジェクトとして扱えるっと

こんな不自由なことしてるから不安定でバグが多い
全て専用で出来てる桐の安定感が気持ち良く感じる

416:名無しさん@そうだ選挙にいこう
10/05/17 00:26:15
>>414
accessって単体で動いているわけじゃないのよ。
実際にはJETとかのDBエンジンが本体で、
accessはDBを扱いやすくするためのお助けツールみたいなもの。

標準の機能でなければ、プログラム的手続きを踏んで接続する必要がある。
つうことじゃないの?

417:名無しさん@そうだ選挙にいこう
10/05/17 03:43:12
>>414
>44
>100

418:名無しさん@そうだ選挙にいこう
10/05/17 20:01:01
返答ありがとうございます。
accessを介さないでデーターベースをいじる方法としてDAOがあると考えてしまえばいいのでしょうか。
(メリットは速さ)
単にVBAではaccessが間に入ってしまう(ある程度は早くなるが)
そういう認識でもいいのでしょうか? 自信ないですが。

419:ジョニー
10/05/17 23:53:03
すみません。accessの初心者なので、当たり前的な質問をさせてもらいます。
accessのデータ型で「テキスト型」のフィールドプロパティのフィールドサイズ
で0を入力するとどんな効果があるのでしょうか?


420:名無しさん@そうだ選挙にいこう
10/05/18 02:08:09
>>419
いくら初心者でも、自分で確認できるものは人に聞くなよ。
ちなみに0を指定していったんテーブルを閉じ再度開くと255となる。
テキスト型はあまりにも短い文字列では(10文字程度)、効率が悪くなる。

421:名無しさん@そうだ選挙にいこう
10/05/18 06:09:20
というか、フィールドサイズ0のテキスト型フィールドを作ることに
いったい何の意味があるのか、そっちの方を聞きたい。
漏れの想像力を超えていて、何も思いつかない。

422:名無しさん@そうだ選挙にいこう
10/05/18 07:54:21
気持ちはわからんでもない。
意味が無いと思われる設定がなぜできるのか?
みたいな感じだろ?

423:名無しさん@そうだ選挙にいこう
10/05/18 09:59:36
2010試用の方に問い合わせですよ。
[テーブルツール]タブ-[フィールド]タブ-[フィールドサイズ]でフィールドサイズの変更ってさ、
0~255を指定しろよって怒られること多いんだが、俺だけか?
正直、その契機もわからんのである。

424:423
10/05/19 18:35:04
>>423の件、なんとなく原因がわかった、、
64bit版がダメみたいだ。32はすこぶる調子がよい。
別件、64bitはIMEModeプロパティが効かないダメな子になってる。とても面倒だ

実際使って、32bit推奨ということは骨身にしみた


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