- 1 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:46.88 ]
- AccessのVBAに関する質問スレです
★1 質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンは必ず書きましょう。 ★2 AccessのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 AccessのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、 コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★5 わからなければとりあえず「マクロの記録」(Alt, T, M, R) 関連スレ Excel VBA 質問スレ Part23 toro.2ch.net/test/read.cgi/tech/1327763113/l50
- 175 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 18:27:38.04 ]
- 脳みそコネコネの会社?なくなったのか?
- 176 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 18:29:57.41 ]
- マジレスしとこう
>>170 ソースプログラムを実行可能形式に変換する事 簡単に言えば、お前が書いたプログラムを実行できるように準備する作業 ACCESSなら勝手にやってくれるから、意識する必要はない
- 177 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 19:25:11.96 ]
- >>175
1998年に無くなって、落ちゲー関係はセガが買い取った
- 178 名前:デフォルトの名無しさん [2013/11/16(土) 21:35:05.65 ]
- >>176
なるほど。では、あえてコンパイルという作業をしなくてもOK ってことですね。 あるがとうございます!
- 179 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 21:45:32.92 ]
- Accessの場合、ソースを中間コードに変換する作業をコンパイルと呼んでる。
その過程でソースにエラーがあるかどうかをチェックするから 実行時エラーとかの対策にはコンパイル通しておいた方が良いと思う。
- 180 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 02:50:39.57 ]
- 実行時エラーってのは普通、コンパイルは通った後に発生するエラーの事を言うんだが
まあ、実行時にコンパイルエラー出るのもなんだし、事前にコンパイルしとけってのは同意するが
- 181 名前:デフォルトの名無しさん [2014/01/31(金) 12:48:48.93 ]
- Access独自の便利機能なのか分かりませんが
テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るのですが これをVBAでやるにはどうしたら良いのでしょうか? テキストに規則性が無いためにOrderByなどでは対応出来ません テキストフィールドに入ってる文字列の例: "第3四半期決算を1月10日に発表済み" "第3四半期決算を2月10日" "本決算を2月13日" "---" このようになってても、テーブルのフィールドを選択してソートが出来るとは初めて知ったのですが VBAからやる方法が分かりません
- 182 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 13:00:11.86 ]
- >>181
>テキストに規則性が無いためにOrderByなどでは対応出来ません 最初に書いたSQLが悪かったみたいで これで出来ました。サーセン
- 183 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 15:57:33.35 ]
- 辞書順と偶然一致しただけなんじゃないの
- 184 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 18:24:40.76 ]
- そもそも
>テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るの これが怪しいんだが どこでこんな事教えられたんだ
- 185 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:17:48.82 ]
- そうだな、俺も出来るとは思ってなかった
しかし、実際その通りに動くのだから仕方がないw だから最初に「Access独自なのか」と思ってるのだが これが出来るのは2013だからかもしれない
- 186 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:30:53.46 ]
- テキスト型だから、文字数順に並び替えてるのかと思って試してみた
"本決算を2月13日"、これを"本決算を1月13日"に書き換えて試すと 日付順に並び替わる>>181の例で言うと真ん中に来る 更に"第3四半期決算を2月10日"、これを"第2四半期決算を2月10日" とやっても日付順に並び替わるので間違いない、>>181の例で言うと一番最初に来る しかし、2月3日と02月03日表記では並び方が変わる 具体的にはMD表記郡の中でソートされ、MMDD表記郡の中でソートされる
- 187 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:54:34.74 ]
- 分かった。ググったら出てきた
2007から出来るらしいけど、勝手に日付を解釈してるのではなく 正確にはテキスト部分を無視して数値順に並び替えてる、らしい
- 188 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 21:40:18.27 ]
- ということはデータを統一しないといけませんね
- 189 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 22:33:10.45 ]
- ソートの問題じゃなくて暗黙の型変換の問題な気はするけど
>テキスト部分を無視して数値順に並び替えてる 普通にソートすればテキストでソートするんだが どうやったらそんなソートするんだ?
- 190 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 22:39:33.21 ]
- どんな型変換すればそうなるのか、逆に聞いてみたい
- 191 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 13:42:22.69 ]
- あいまいな検索をしたい場合はLike *検索文字列* だけど
これだと、先頭文字列に外字が含まれてる場合は検索されない のだけれど、回避方法はある?
- 192 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 23:15:37.86 ]
- >>191
ちゃんと検索できるっぽいけど 先頭文字に外字ってのは、検索対象のテーブルデータなのか、Likeに指定する文字列なのか?
- 193 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 09:59:08.52 ]
- >>192
先頭に含まれる外字は検索対象のテーブルデータです 文字列の中間に外字が含まれる場合は検索できるのに、 先頭だと検索されない減少が発生する…
- 194 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 16:26:19.10 ]
- >>193
かるく試したが再現しないな OSかACCESSのバージョンによる問題か 単にお前の勘違いか ACCESSでも限定された状況でのバグか MDB(ACCDB)がぶっ壊れてるか まあ、単に検索できないレコードに不正なデータが混じってるだけだと思うが
- 195 名前:191 mailto:sage [2014/02/03(月) 18:14:37.26 ]
- 一応解決したっぽい
原因として、dbmagicにodbc経由でリンクテーブルに したのがダメらしい リンクテーブルをやめて、テーブルデータごとインポートしたら 通常通りに検索できた みんなありがと
- 196 名前:デフォルトの名無しさん [2014/02/03(月) 18:49:01.92 ]
- 喰らえカスども、奥義「後出し特殊条件!」
- 197 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 18:58:14.00 ]
- 生データインポ時に変換されただけとかは?
つまりODBC接続でもデータを相応しい変換しておけば解決できるのかも
- 198 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 22:22:24.80 ]
- そもそも外字サポートされてるのかどうかしらんが
たんにdbmagicで外字がバグってただけだろ
- 199 名前:デフォルトの名無しさん [2014/02/08(土) 21:20:31.59 ]
- SQLのReplace Intoに相当する物って有るんですか?
- 200 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 01:08:00.70 ]
- フォームに伝票基本情報
サブフォームに詳細というか明細欄(だいたい30レコードくらい)配置して、 1売上1レコードになるようにしています。 サブフォームに、 内容 金額 委託 委託金 とフィールドがあり、委託したときに入力するですが、 (この委託の部分も、 1売上(外注)1レコードにできませんか?
- 201 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 01:42:27.90 ]
- 誰か翻訳
- 202 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 11:01:12.98 ]
- >>199
そもそも標準的なSQLにそんな命令聞いた事ない ACCESSでも聞いた事ない
- 203 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 11:05:35.28 ]
- >>200
なにがしたいか良くわからんが、サブデータシートとかサブフォームのネストとか たぶんそれでできるんじゃね
- 204 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 15:25:40.29 ]
- >>199
MySQLの独自実装か? SQL ServerにもPostgreSQLにもないが・・・。 どんな動きかググってまで答える気にならない。
- 205 名前:デフォルトの名無しさん [2014/02/16(日) 11:19:02.87 ]
- >>202
>>204 ググレカス
- 206 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 09:57:10.80 ]
- 練習がてらVBAでユーザー定義関数をつくろうかと思ったんですが思った通りのものが作れず困っています。
というか簡略化できないもんかと思っているわけですが。 OS XP Access 2003 Function AAA(Parm01,Parm02,Parm03...) AS String ’parmは最終的にParm24までできますがここでは簡略化 If Parm01 = "S" or Parm01 = "A" then AAA = "1" Exit Function Else AAA = "0" end if End function とすごく単純なものなのですが、Parm01〜Parm03(実際にはParmは24個)にはそれぞれS・A・B・Cのいずれかが入っているので それを数値に変換する仕組みを作りたいのです。 SかAだったら1を。それ以外(B・C)だったら0を返す。 上には記載していませんが最終的にはParmの中身を全て合計した値を返すようにいじる予定です。 で、問題なんですが、IF文の中でParmの中身を判定しているわけですが、これをParmの数だけ作るのはなんか美しくない。 Parm01〜24をまとめて判定するにはどのようにするのが美しいでしょう。 ご教授頂ければ嬉しいです。
- 207 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 11:20:17.13 ]
- >>206
まず24個も引数取るのを美しいか疑問に思えよ その24個をまとめたコレクションなり配列なり用意するとか その24個にあまり関連がないないならParamArrayつかえ (その前提でまとめて同じ引数にするのおかしいけどな)
- 208 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 11:34:23.61 ]
- >>207
ParamArrayというのがあるんですね。ありがとうございます。調べてみます! 美しさに関しては超ごもっともなんですが、如何せん元のデータをいじる権限がなくてですね。 元データの開発者をぐーで殴りたいレベル。 識別コード(一意)|24ヶ月前|23ヶ月前|22ヶ月前|21ヶ月前|・・・|当月| ってな感じなんですよ。 んでこの○ヶ月前ってのがParmになるんですけどコレクションにせよ配列にせよ、結局は同じことなので AAA(24ヶ月前,...当月)ってやっちまったほうが早いかなと。 大変助かりました。ありがとうございます。
- 209 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 14:06:57.28 ]
- VBAにそんなもんあんのか?構造体使うのが普通だろ
ただしVBAの構造体は遅いけどな
- 210 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 14:09:36.05 ]
- 有りますね、サーセンw
- 211 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 15:11:10.30 ]
- ACCESSなら元データはテーブルじゃないのか
だったらレコードセットなり渡せば済む話だとおもうが
- 212 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 22:15:26.86 ID:W4Gp9YVD]
- 設計の悪いDBだとたまに見る形だな
一々縦横変換とかしなきゃならんやつ
|

|