1 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:46.88 .net] 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
96 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 11:57:39.57 .net] >>92 参考にさせてもらいました。 ありがとうございます。 引き続き質問なのですが、 Windows8(32bit) + Access2010(32bit)環境で作成したファイルを Windows8(64bit) + Access2010(32bit)環境で実行した場合に毎回ではないのですが、 レーダーチャートの目盛りが正常に表示されません。(-3E+259と表示される) なお、表示しているデータは毎回同じものです。 ちなみに、Windows8(64bit) + Access2010(32bit)環境で作成したファイルを Windows8(64bit) + Access2010(32bit)環境で実行した場合も同様でした。 この現象について何かご存知の方がいらっしゃいましたらお願いします。
97 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 17:36:38.89 .net] >>94 もう少しシンプルなコードはないですか? わがままですみません。
98 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 17:42:08.68 .net] >>96 Private Sub チェックボックス_Click() Me.テキストボックス1.Enabled = Me.チェックボックス.Value Me.テキストボックス2.Enabled = Me.チェックボックス.Value Me.テキストボックス3.Enabled = Me.チェックボックス.Value End Sub
99 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 18:36:06.95 .net] >>97 すばやいご回答ありがとうございました。 いろいろな書き方があるんですね。
100 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 22:29:10.45 .net] Excelスレでも聞いたのですが、 以下のような時間の計算結果を出す関数として 0:00〜0:44 0:30 0:45〜1:14 1:00 1:15〜1:44 1:30 =IF(A1<"0:15"*1,"0:30"*1,MROUND(A1,"0:30")) というアドバイスをしてくれた方がいましたが、 これに相当するコードが全くわかりません。 丸投げですがどなたか教えてくださいませ。
101 名前:桃白白 mailto:sage [2013/04/13(土) 02:40:34.80 .net] >>99 Function marume(ByVal s As Double) As Double Dim Q As Double Dim H As Double Q = TimeValue("0:15") H = TimeValue("0:30") If s < Q Then marume = H Else marume = Fix((s + Q) / H) * H End If End Function
102 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 17:33:29.73 .net] >>100 フォームの[実時間]の時間によって[時間]に結果を出す場合で、 Function 時間(ByVal 実時間 As Double) As Double Dim Q As Double Dim H As Double Q = TimeValue("0:15") H = TimeValue("0:30") If 実時間 < Q Then 時間 = H Else 時間 = Fix(([実時間] + Q) / H) * H End If End Function としましたがうまくいかず、どこをどうしたら良いのかまるでわかりません。 ご指摘お願いいたします。
103 名前:桃白白 mailto:sage [2013/04/13(土) 20:28:48.85 .net] >>101 あら。結果がずれてた? それともなんか変な動きした? 引数の形式が違うのかな。どういう入力でどう出力された?
104 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 21:29:31.16 .net] >>102 [開始時間]に入力、[終了時間]に入力後、 時間の差を[実時間]に表示し、これを基に[時間]に結果を表示したい、という流れですが、 フォームを開くだけで以下の、 「イベント プロパティに指定した式 読み込み時でエラーが発生しました: このメンバー識別子は既にオブジェクトモジュールの中に存在しています。」 ※マクロ名、ユーザー定義関数、[イベント プロシージャ]以外の式が指定されています。 ※関数、イベント、マクロの評価でエラーが発生しました。 というエラーメッセージがでますが、正直理解できていません。
105 名前:桃白白 mailto:sage [2013/04/14(日) 01:59:24.64 .net] >>103 コントロールの名前と関数の名前が競合してるんでない? コントロールと関数を別の名前にしてコントロールソースで紐付けて やっちゃえばいいよ。こんな感じで。 Database1.zip download kie.nu/Xug
106 名前:デフォルトの名無しさん mailto:sage [2013/04/14(日) 14:28:32.69 .net] >>104 うわー、ファイルのアップまでしていただき本当にありがとうございます。 テーブルに記録しておく必要があったため、 Private Sub 終了時間_AfterUpdate() 時間 = Marume(実サービス時間) End Sub ということで全てスッキリしました。 いただいたコード自体見てもほとんど理解しきれてませんが、 これから勉強しながら頑張ってみます。 再度、本当にありがとうございました。
107 名前:デフォルトの名無しさん mailto:sage [2013/04/19(金) 11:54:05.25 .net] フォームのプロパティにある「コード保持」って何でしょうか? 「はい/いいえ」はどのように使い分けるのでしょうか?
108 名前:デフォルトの名無しさん mailto:sage [2013/04/19(金) 12:30:11.35 .net] 存在しないオブジェクトに関連したコードを不要になったときに自動で削除する機能がある たとえば"ボタンA"をクリックしたときのコードを書いてある状態で あとで"ボタンA"を"ボタンB"に名称変更したりしたときに コード保持が「いいえ」だと"ボタンA"をクリックしたときのコードは捨てられる
109 名前:デフォルトの名無しさん mailto:sage [2013/04/19(金) 16:04:50.27 .net] どもです つまりコード保持は、名称変更をした際に以前のコードが消えても良い または名称変更は絶対にしないような状況であれば、「いいえ」を選択しておいても良い と言うことで間違いないですか? どこかで「いいえ」にした方が速度が速くなる的なことが書いてあった覚えがあるので・・・
110 名前:デフォルトの名無しさん mailto:sage [2013/04/19(金) 16:43:59.98 .net] >>107 名前の自動修正オプションとこんがらがってないか? >>108 コード消えるのはフォームかレポート単位だぞ 名前変更とか関係なくて、そのフォームのコード全部消えるぞ ヘルプにはコードが無いからいいえの方が処理が早いとは書いてあるな その分制約もあるが ヘルプみて意味がわからないなら、設定変えるのはやめとけ
111 名前:デフォルトの名無しさん mailto:sage [2013/04/22(月) 10:00:33.47 .net] >>109 遅くなりましたが、ありがとです 試しにフォームを作成時に、「いいえ」を選択しておいた状態で イベントプロシージャを設定してみました。 その時点で自動的に「はい」に切り替わるんですね。 そしてコードを使うフォーム、レポートが1000個を超えるものは作れないと言う事なんですね。 勉強になりました。
112 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 11:56:04.36 .net] タブコントロールでページ5枚作る。 チェックボックスによって表示ページ数を切り替えたい。 ・チェックなし : ページ1〜ページ5 ・チェックあり : ページ2〜ページ4 そのため、チュックボックスのイベントプロシージャで、一旦全部のページを非表示にして そのあと、必要なページを表示するようにしてみました。 For i=0 To 5 Me.Controls("ページ" & i).Visible = False Next i For i=Starrt To Start+Cnt Me.Controls("ページ" & i).Visible = False Next i それで、ページ5を選択している状態でチェックありにすると 消したはずのタブの周りの枠が残ってしまいます。 これを綺麗に消す方法ってありませんか? 環境はAccess2010です。
113 名前:111 mailto:sage [2013/04/25(木) 12:00:42.84 .net] 忘れてましたがタブの背景色を変更したいので タブコントロールのプロパティで「テーマの使用」を「はい」に設定してあります。
114 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 14:29:36.88 .net] 消す前に違うページを選択すれば良いだけじゃないのか?
115 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 13:36:25.32 .net] チェックボックスの true が -1 から 1 に変わったようです 2007からでしょうか? 変更がめんどくさい
116 名前:デフォルトの名無しさん mailto:sage [2013/05/22(水) 11:48:10.00 .net] >>114 2003と2007で試したけど非連結で画面でチェックした場合はどちらも-1になる ただし、コードで1をセットしたら1のままだった まず1をセットするコード書くのが悪い そして、1でも-1でもBooleanとして評価したらTrueなんだから そんな事に影響されるコード書くのが悪い
117 名前:デフォルトの名無しさん mailto:sage [2013/05/22(水) 14:18:44.22 .net] >チェックボックスの true が -1 から 1 に変わったようです >2007からでしょうか? キリっ
118 名前:デフォルトの名無しさん [2013/05/22(水) 14:27:02.75 .net] 知らんがな ってレスしようと思ったけど かわいそうなので放っといた
119 名前:デフォルトの名無しさん mailto:sage [2013/06/04(火) 02:35:18.23 .net] 月曜会社を休んで家で土曜から月曜までVBAをひたすら書き続けた結果 頭が超重くなって3日目は何やってるかよくわからないまま終わってしまった VBAのコーディングをぶっ通しでやるのは2日が限界か?
120 名前:デフォルトの名無しさん mailto:sage [2013/06/05(水) 22:11:38.14 .net] >>118 限界は人それぞれだろうが、無理はすんなよ
121 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 00:57:48.54 .net] access 2003 にて SendObjectメソッドを利用して、メールを送信したいと思っています。 実際にメールを送れるようにはなっているのですが、 送信メール本文に「mdbファイルと同一ディレクトリにある単体の.msgファイルの本文」(.msgファイルの場所はフルパス指定でも構いません) を表示させる事は可能でしょうか? イメージ的には、テーブルから送信先アドレスを収集し、.msgファイルの本文の内容をテンプレートとして一括送信する と言った感じです。
122 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 01:01:26.56 .net] 書き忘れました。 メール送信ソフトはoutlookです。
123 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 07:11:37.65 .net] .msgファイルの形式ってたぶん公開されてないんだよなぁ どうやってメールを.msgで保存してるかしらんが、そっちを変更した方が楽な気がする outlookでもVBAは使えるぞ
124 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 18:38:52.19 .net] >>120 OutLookのSession.OpenSharedItemで.msgファイルの読み込みできるが 他のアプリからOutLookいじるのはお勧めしない OutLook側でmdbに書きだすとか、プレーンテキストで保存するとかした方が良いんじゃね
125 名前:デフォルトの名無しさん [2013/08/31(土) NY:AN:NY.AN .net] 質問です ODBCの接続する際に IDとパスワードを入力するボックス(VBAで設定したものではない)がありますが、 初めから半角英数字になるように設定はできますか?
126 名前:デフォルトの名無しさん mailto:sage [2013/08/31(土) NY:AN:NY.AN .net] VBAで設定したものではないものを、VBAでどうこうするのは無理があります
127 名前:デフォルトの名無しさん [2013/08/31(土) NY:AN:NY.AN .net] >>125 ですよね。 IDやパスワードを入力するときに各々気を付けてもらうしかないですね。
128 名前:デフォルトの名無しさん mailto:sage [2013/08/31(土) NY:AN:NY.AN .net] >>126 プロパティにないの?
129 名前:デフォルトの名無しさん mailto:sage [2013/08/31(土) NY:AN:NY.AN .net] ODBCのミドル層で出てるダイアログだから、アクセス側からいじれるプロパティなんてないだろ 自分でIDとパスワード入力してもらうフォーム作ってそこに入力してもらえ
130 名前:デフォルトの名無しさん mailto:sage [2013/08/31(土) NY:AN:NY.AN .net] DBの持ち物か。すまん。 ダイアログの出る直前にACCESSで入力を固定して終わったら解除ってできないのかね。 (調べてない、ただの理想を述べてみた。)
131 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 00:30:06.54 .net] >>129 >>124 が言ってるのは多分、ODBCで接続するときにユーザとパスワードを指定しなかったときに出るやつ 自分でちゃんと接続できるユーザとパスワード指定したら出ない 間違ったユーザやパスワード設定したらしらん
132 名前:デフォルトの名無しさん [2013/09/01(日) 02:59:29.29 .net] Access初心者です。 VBAでExcelからデータをコマンドボタンで自動インポートさせる物を 作っています。 インポート漏れがないかのチェック処理もさせたいのですが、 どのようにすればいいかわかりません、ご教授お願いします。
133 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 03:24:10.08 .net] >>131 レコード数で比較すれば?
134 名前:デフォルトの名無しさん [2013/09/01(日) 03:48:29.03 .net] >>132 ありがとうございます。 仮に件数が合わなくてインポート漏れしたレコードを 特定するための処理をいれることはできますか?
135 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 03:59:24.56 .net] ユニークキーで差分とれよ 少しは考えろよ
136 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 04:00:02.93 .net] >>133 ユニークキーで差分とれよ 少しは考えろ
137 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 08:49:32.79 .net] インポート漏れなんてあるの?
138 名前:デフォルトの名無しさん [2013/09/01(日) 09:02:48.06 .net] 結構ある あと勝手にデータ変換されてたりもする
139 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 09:25:38.41 .net] そうか ならインポートしてからチェックするより自前のコードでインポートした方がいいんじゃない?
140 名前: 【だん吉】 [2013/09/01(日) 09:31:40.27 .net] 自分はそうしてる
141 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 10:05:17.59 .net] ウィザードにまかせてるとひどい目にあう
142 名前:デフォルトの名無しさん [2013/09/01(日) 10:35:21.42 .net] Access初心者なので、そのVBAのコードの書き方がわかりません 教えていただけませんか
143 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 10:36:54.67 .net] いいですよ
144 名前:132 mailto:sage [2013/09/01(日) 19:42:00.26 .net] >>131 www.nurs.or.jp/~ppoy/access/access/acX014.html
145 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 20:23:21.63 .net] インポート漏れするデータ欲しい 試してみたい
146 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 23:14:50.69 .net] 数字型のとこに文字入ってるデータとか用意したらいいんじゃね
147 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 23:38:03.38 .net] >>145 うーん、そういうデータをインポートすると普通にエラーとして扱われて 「テーブル名_$インポート エラー」 ってテーブルが生成されるから インポート漏れのレコードがわからなくて困る、なんて状況にはならないんだよね
148 名前:デフォルトの名無しさん mailto:sage [2013/09/02(月) 10:35:57.67 .net] インポート漏れのレコードがわからなくて困る、なんて状況になると言ってる人はいないが
149 名前:デフォルトの名無しさん [2013/09/02(月) 10:57:43.03 .net] おもろいな
150 名前:デフォルトの名無しさん [2013/09/05(木) 23:50:52.09 .net] DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True, strrange 上記でインポート エラーになるので引数のacImportのところに、 作成したインポート定義にしたいのですができるのでしょうか
151 名前:デフォルトの名無しさん [2013/09/07(土) 03:42:11.28 .net] よし
152 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 16:59:26.27 .net] そもそもワークシート変換にインポート定義とかないだろ
153 名前:デフォルトの名無しさん [2013/09/09(月) 01:4
] [ここ壊れてます]
154 名前:6:05.73 .net mailto: Accessの初心者です。 レポート印刷でページヘッダーのコードが変わったタイミングで改ページしたい かつ詳細の明細行は4レコードだけで改ページさせる、両方の条件を満たせるには、 どうやって作成したらよいかご教授お願いします。 [] [ここ壊れてます]
155 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 02:08:51.60 .net] ページヘッダーじゃなくて、その項目でグループ化してヘッダー作る そのヘッダーかフッターで改ページを設定する 詳細の高さを4行分になるようにヘッダ、フッタや余白を調整する つか、VBAまったく関係ない話
156 名前:デフォルトの名無しさん [2013/09/09(月) 07:18:08.57 .net] >>153 ここはVBAのスレですよね?VBAと関係ある話をしてください。 VBAとまったく関係ない話をしたのはあなたです。VBAでお願いします。
157 名前:デフォルトの名無しさん [2013/09/09(月) 13:03:59.99 .net] VBAを一言で表すと
158 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 13:20:44.56 .net] >>154 マジレスしといてやるが、VBAでやるよりよっぽど>>153 の方法の方が良いぞ だがあえてVBAでやりたいなら 明細セクションの最初と最後に改ページコントロール(改ページ1,2)を配置して Dim 行数 As Integer Dim 前コード Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) Me.改ページ1.Visible = False Me.改ページ2.Visible = False 前コード = Me.フィールド5 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Me.フィールド5 <> 前コード Then Me.改ページ1.Visible = True 行数 = 0 Else Me.改ページ1.Visible = False End If 前コード = Me.フィールド5 行数 = 行数 + 1 If 行数 > 4 Then Me.改ページ2.Visible = True 行数 = 0 Else Me.改ページ2.Visible = False End If End Sub こんな感じ。この例ではフィールド5が変わったら改ページな
159 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 13:22:34.74 .net] う。 は空白に置換してくれ つか普通に貼り付けできなくなったのかよ
160 名前:デフォルトの名無しさん [2013/09/10(火) 00:16:36.47 .net] >>156 もう少し教えてください。。。 明細が5明細あった場合、 コードA 00001 00002 00003 00004 改ページ コードA 00005 改ページ コードB 00001 00002 00003 改ページ コードC 00001 こんな感じで出したいのですが
161 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 02:26:08.63 .net] >>158 >>156 が理解できないなら、VBAでやるのやめとけ
162 名前:sage [2013/09/17(火) 19:50:09.24 .net] Accessのクエリで、「クエリの並び替え条件を動的に変更する」方法を 教えて頂けないでしょうか。 現状は、下記のクエリを作成しましたが、並び替え条件として判定されません。 SELECT * FROM テーブル1 ORDER BY FORMS!画面1!テキスト1.Value よろしくお願いします。
163 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 20:22:56.49 .net] >>160 SELECT * FROM テーブル1 ORDER BY FORMS!画面1!テキスト1.Value これってどこに書いてるの?
164 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 21:44:28.61 .net] >>160 どうしてもやりたいならQueryDefとか使えばできるかもしれんが 動的にSQLつくってDoCmd.RunSqlでやる方がいいんじゃね
165 名前:160 mailto:sage [2013/09/17(火) 22:09:44.82 .net] >>161 Accessの「クエリ」で定義していました。 >>162 ご指摘を受けた点を参考にクエリを作成した所、うまく行きました。 ありがとうございます。
166 名前:デフォルトの名無しさん [2013/10/20(日) 21:44:25.62 .net] 株価のデータベースを作りVBAで銘柄の抽出をしています VBAを呼ぶ度にSQLで株価データを読み込んでるので日に何度もやると結構無駄です そこでフォームをロードした時に纏めて銘柄毎のクラスオブジェクトを作り フォームをアンロードするまで保持したいのですが可能でしょうか? 変数の保持はStaticで良いようですが、配列化してるオブジェクトの保持はどのようにするのでしょうか?
167 名前:デフォルトの名無しさん [2013/10/20(日) 22:06:18.65 .net] view
168 名前:デフォルトの名無しさん mailto:sage [2013/10/20(日) 22:10:51.15 .net] すごいVBA発見w esuafai.digi2.jp/
169 名前:164 mailto:sage [2013/10/20(日) 22:56:11.74 .net] フォームと連動させるのではなく、最初に実行させる時にStaticで保持し 2度目からオブジェクトが空ではないならデータを取りに行かずに 値渡しするようにして解決しました
170 名前:デフォルトの名無しさん mailto:sage [2013/10/21(月) 00:11:20.78 .net] なんか色々つっこみどろこ満載だな まあ、動いてるならいいか
171 名前:デフォルトの名無しさん [2013/11/05(火) 18:56:30.39 .net] VBAでリモートのデータベースにトランザクション処理を開始して、コミット/ロールバックするのはわかりました。 これをマクロのアクションだけではできないですよね。 Vbaを嫌がる仲間が同一プロジェクト内にいるので。
172 名前:デフォルトの名無しさん [2013/11/16(土) 13:17:48.50 .net] 初心者ですみません。コンパイルってなんですか?
173 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 13:19:54.03 .net] 疲労困憊る
174 名前:デフォルトの名無しさん [2013/11/16(土) 13:40:52.90 .net] コンパイルダー・オン
175 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 15:59:42.46 .net] 昔広島にあったSTGや落ちゲーキャラゲー開発してた会社
176 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 17:51:44.57 .net] あったなぁ
177 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 18:27:38.04 .net] 脳みそコネコネの会社?なくなったのか?
178 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 18:29:57.41 .net] マジレスしとこう >>170 ソースプログラムを実行可能形式に変換する事 簡単に言えば、お前が書いたプログラムを実行できるように準備する作業 ACCESSなら勝手にやってくれるから、意識する必要はない
179 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 19:25:11.96 .net] >>175 1998年に無くなって、落ちゲー関係はセガが買い取った
180 名前:デフォルトの名無しさん [2013/11/16(土) 21:35:05.65 .net] >>176 なるほど。では、あえてコンパイルという作業をしなくてもOK ってことですね。 あるがとうございます!
181 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 21:45:32.92 .net] Accessの場合、ソースを中間コードに変換する作業をコンパイルと呼んでる。 その過程でソースにエラーがあるかどうかをチェックするから 実行時エラーとかの対策にはコンパイル通しておいた方が良いと思う。
182 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 02:50:39.57 .net] 実行時エラーってのは普通、コンパイルは通った後に発生するエラーの事を言うんだが まあ、実行時にコンパイルエラー出るのもなんだし、事前にコンパイルしとけってのは同意するが
183 名前:デフォルトの名無しさん [2014/01/31(金) 12:48:48.93 .net] Access独自の便利機能なのか分かりませんが テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るのですが これをVBAでやるにはどうしたら良いのでしょうか? テキストに規則性が無いためにOrderByなどでは対応出来ません テキストフィールドに入ってる文字列の例: "第3四半期決算を1月10日に発表済み" "第3四半期決算を2月10日" "本決算を2月13日" "---" このようになってても、テーブルのフィールドを選択してソートが出来るとは初めて知ったのですが VBAからやる方法が分かりません
184 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 13:00:11.86 .net] >>181 >テキストに規則性が無いためにOrderByなどでは対応出来ません 最初に書いたSQLが悪かったみたいで これで出来ました。サーセン
185 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 15:57:33.35 .net] 辞書順と偶然一致しただけなんじゃないの
186 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 18:24:40.76 .net] そもそも >テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るの これが怪しいんだが どこでこんな事教えられたんだ
187 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:17:48.82 .net] そうだな、俺も出来るとは思ってなかった しかし、実際その通りに動くのだから仕方がないw だから最初に「Access独自なのか」と思ってるのだが これが出来るのは2013だからかもしれない
188 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:30:53.46 .net] テキスト型だから、文字数順に並び替えてるのかと思って試してみた "本決算を2月13日"、これを"本決算を1月13日"に書き換えて試すと 日付順に並び替わる>>181 の例で言うと真ん中に来る 更に"第3四半期決算を2月10日"、これを"第2四半期決算を2月10日" とやっても日付順に並び替わるので間違いない、>>181 の例で言うと一番最初に来る しかし、2月3日と02月03日表記では並び方が変わる 具体的にはMD表記郡の中でソートされ、MMDD表記郡の中でソートされる
189 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:54:34.74 .net] 分かった。
190 名前:Oグったら出てきた 2007から出来るらしいけど、勝手に日付を解釈してるのではなく 正確にはテキスト部分を無視して数値順に並び替えてる、らしい [] [ここ壊れてます]
191 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 21:40:18.27 .net] ということはデータを統一しないといけませんね
192 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 22:33:10.45 .net] ソートの問題じゃなくて暗黙の型変換の問題な気はするけど >テキスト部分を無視して数値順に並び替えてる 普通にソートすればテキストでソートするんだが どうやったらそんなソートするんだ?
193 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 22:39:33.21 .net] どんな型変換すればそうなるのか、逆に聞いてみたい
194 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 13:42:22.69 .net] あいまいな検索をしたい場合はLike *検索文字列* だけど これだと、先頭文字列に外字が含まれてる場合は検索されない のだけれど、回避方法はある?
195 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 23:15:37.86 .net] >>191 ちゃんと検索できるっぽいけど 先頭文字に外字ってのは、検索対象のテーブルデータなのか、Likeに指定する文字列なのか?
196 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 09:59:08.52 .net] >>192 先頭に含まれる外字は検索対象のテーブルデータです 文字列の中間に外字が含まれる場合は検索できるのに、 先頭だと検索されない減少が発生する…