1 デフォルトの名無しさん 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 http://toro.2ch.net/test/read.cgi/tech/1327763113/l50 2 デフォルトの名無しさん 2012/02/09(木) 00:43:50.48
くその山
3 デフォルトの名無しさん 2012/02/10(金) 08:46:53.06
まさかの3
4 デフォルトの名無しさん 2012/02/13(月) 03:22:20.27
期待あげ
5 デフォルトの名無しさん 2012/02/24(金) 00:33:06.69
問題なく使えてるけど
6 デフォルトの名無しさん 2012/02/24(金) 07:50:36.35
とりあえず使ってみたいんだけど、解説してるwebページ教えて
7 デフォルトの名無しさん 2012/02/24(金) 10:58:16.76
うぜえ
8 デフォルトの名無しさん 2012/02/24(金) 13:25:33.52
9 デフォルトの名無しさん 2012/02/24(金) 20:57:22.20
10 デフォルトの名無しさん 2012/03/06(火) 16:43:20.41
すいませんが質問です。 XPから7へ移行したいのですがaccessのvba上で excelのマクロを操作してセルの中身を変えて上書き保存してたのですが、 今まで前面にexcelのメッセージで上書きしますか?的なメッセージが出てたのですが 7だとaccessが出っ放しでexcelがタスクに隠れてメッセージが前面に出てこないのです。 何かやり方ありませんか?ググり方すら分からない…アドバイス下さい;
11 デフォルトの名無しさん 2012/03/06(火) 16:49:39.47
12 デフォルトの名無しさん 2012/03/06(火) 17:05:38.78
>>11 早々とありがとうございます。本当に嬉しい!! しかし、自分で作ったメッセじゃなくてデフォルトの置き換えますかってメッセなんです。 XPから7に変わると設定変えるんじゃなくてvbaに追加せんと駄目なんですかね…無知でスイマセン 13 デフォルトの名無しさん 2012/03/06(火) 17:46:46.30
14 デフォルトの名無しさん 2012/03/07(水) 00:32:47.13
すみません、フォームが開く順序は Open→Load→…が規定だと思いますが、 Loadが飛ばされる条件はどのような条件か ご存じの方いらっしゃいませんか?
15 デフォルトの名無しさん 2012/03/07(水) 11:20:11.27
HideしてShowするとLoadに飛ぶ
16 デフォルトの名無しさん 2012/03/08(木) 16:02:20.11
17 デフォルトの名無しさん 2012/03/12(月) 09:45:47.59
すみません ADOで新規にブール型のフィールドをテーブルに作成する場合、 VBAではどうかくのでしょうか (テーブル).Columns.Append "XXXX", adBoolean だとエラーになってしまうんですが
18 17 2012/03/12(月) 10:52:54.08
すみません環境を書きます OS:Vista Ver:Access2010(accdbファイルを使用。実際のコードはExcel2007ファイルに記述)
19 デフォルトの名無しさん 2012/03/12(月) 14:16:24.17
DoCmd.RunSQL "ALTER TABLE (テーブル) ADD COLUMN XXXX BOOLEAN;"
20 17 2012/03/13(火) 01:56:43.81
回答ありがとうございます ただ他のフィールド(adGUID・ adInteger・adVarWChar)は問題なく Appendできるので、SQL文ではなく、これらに合わせたADOXによる コードにしたいと思ってます んん、というかadBooleanのフィールドを追加するとtablesへのAppend時に エラーとなる原因がどうしても知りたいです 散々ググったのですが、結局実際にadBooleanのフィールドを追加している サンプルコードにはお目にかかれませんでした 何が原因なんだろう… adBooleanの時はAppendの他に何か処理が必要なんだろうか…
21 デフォルトの名無しさん 2012/03/13(火) 15:50:44.64
Office2010 64bit版を使ってるのだとしたら32bit版に入れ替えてみると良いかも。 そうじゃないとしたら、参照設定でバージョンの違うADOモジュールを試すとか。
22 17 2012/03/14(水) 01:05:25.66
原因が分かりました 普段ACCESS使ってる人からは、当たり前やんけ!って怒られそうな話ですが アドバイス下さった方もいらっしゃるので報告しますと (テーブル).Columns.Append "XXXX",adBoolean が原因ではなく、その次に入れておいた次の文 (テーブル).Columns("XXXX").Attributes = adColNullable が原因でした ブール型フィールドには初期値(True)があり、Nullを設定できないのにNull許容を設定したせいで エラーになっていたようです 本やネットで情報漁って、ADOでEXCElからACCESSファイル作れてテーブルも作れるなら、ACCESS買わなくてもいいんじゃね? なんて思ってましたが、ソフト買って普段からいじって慣れておいた方かいいのかも
23 デフォルトの名無しさん 2012/03/15(木) 23:06:37.82
ADOのDynamicPropertyについて かなり詳細な解説が知りたいのですが、 なにか参考となるURLや書籍はありませんか?
24 デフォルトの名無しさん 2012/03/17(土) 19:33:03.28
Access初心者です。質問があります。 前任者のAccessで作られた業務ソフトを担当することになりました。 まずは全体を見通したいので、Basicのコードやコントロールのプロパティ、 イベントなど、すべての情報をテキストファイルに書き出したいです。 どうやったら良いのでしょうか? Access2003 です。 教えてください。
25 デフォルトの名無しさん 2012/03/19(月) 00:50:30.92
コードはともかくとして、プロパティなんかは 自分でそれをリストするプログラムを書けばいい。
26 デフォルトの名無しさん 2012/03/22(木) 05:39:40.85
VBAでそんなこと出来るんですね。 どこかのHPにソースが公開されていないかな〜 参考になるページなど、探して見ます。
27 デフォルトの名無しさん 2012/03/22(木) 21:28:12.01
28 26 2012/03/25(日) 17:47:30.63
29 デフォルトの名無しさん 2012/04/16(月) 23:53:45.24
hosyu
30 デフォルトの名無しさん 2012/04/18(水) 00:22:57.54
Accessで同時利用の限界ってどれくらい? プログラム工夫すれば50人くらいは兵器?
31 デフォルトの名無しさん 2012/04/18(水) 13:07:20.08
50人がそれぞれ日一回違う時間帯に読み書きするとかならぜんぜん平気かもしれないよ
32 デフォルトの名無しさん 2012/04/26(木) 11:59:42.32
WindowsXP Access2003 DoCmd.RunCommand acCmdSaveRecord の使いようがよくわかりません。 例えば テーブルA フィールド1〜3 についてフォームで値を入力できるようにしたとします。 フォームに入力して閉じるとテーブルのレコードは更新されています。 DoCmd.RunCommand acCmdSaveRecord を使うとフォームを閉じる前の時点でレコードが更新されるんでしょうか? しかしこの命令文を通過した後でテーブルを開いてみても更新されていませんでした。
33 デフォルトの名無しさん 2012/04/26(木) 13:16:55.86
馬鹿には無理
34 デフォルトの名無しさん 2012/04/26(木) 15:30:07.48
>>32 テーブルAを表示させたメインフォームの中に同じテーブルAを表示させたサブフォームを置いて Private Sub 1_AfterUpdate() End Sub Private Sub 2_AfterUpdate() DoCmd.RunCommand acCmdSaveRecord End Sub と書け メインに表示されたフィールド1を変更して、フォーカスをフィールド2に移すとサブに表示された内容も変わるメインに表示されたフィールド2を変更して、フォーカスをフィールド3に移してもサブの内容は変わらない ただしどちらもメインフォームからサブフォームにフォーカスを移せば内容は変わる これでレコードがどういうタイミングでセーブされるか判るべ 35 デフォルトの名無しさん 2012/05/17(木) 20:45:31.33
人の手でデータ加工する過程はすべてVBAに置き換えられるのでしょうか?
36 デフォルトの名無しさん 2012/05/18(金) 03:27:32.55
37 デフォルトの名無しさん 2012/05/19(土) 00:18:15.14
import os import win32com.client MDBFILE = "test.mdb" if os.path.exists(MDBFILE): os.remove(MDBFILE) dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s" % MDBFILE adox = win32com.client.Dispatch("ADOX.Catalog") adox.Create(dsn) adodb = win32com.client.Dispatch("ADODB.Connection") adodb.Open(dsn) adodb.Execute("create table hoge (id counter primary key, c1 varchar(10));") adodb.Execute("insert into hoge (c1) values ('fuga');") adodb.Execute("insert into hoge (c1) values ('hage');") adodb.Close()
38 デフォルトの名無しさん 2012/05/24(木) 11:34:52.22
VBAじゃないんだけどmdbファイルからSQLで指定テーブルのフィールド名を列挙するSQLを教えてくださ
39 デフォルトの名無しさん 2012/05/24(木) 11:40:53.57
>>30 バックエンドにMySQLを使うといったようなクラサバにすれば50人だろうが 100人だろうが行ける。 40 デフォルトの名無しさん 2012/05/25(金) 03:16:51.66
41 デフォルトの名無しさん 2012/05/25(金) 23:17:09.33
>>38 import win32com.client adox = win32com.client.Dispatch("ADOX.Catalog") adox.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb" for t in adox.Tables: if t.Type != u"TABLE": continue print t.Name, t.DateCreated, t.DateModified for c in adox.Tables(t.Name).Columns: print c.Name, c.DefinedSize, c.Type 42 デフォルトの名無しさん 2012/07/04(水) 17:05:23.99
Access2010(x86) Windows7(x64) PostgreSQL9 パススルークエリ+PostgreSQLの関数でナンバリング実装したんだが、 PostgreSQLの関数直接叩く → 1づつ進む クエリをデータシートビューで開いてリロード → 1づつ進む DLookup(結果フィールド, パススルークエリ名) → 2〜3づつ進む ADOのExecuteでレコードセット取り出し → 2〜3づつ進む になってしまう。(直接叩く&データシートビューで問題なしなので、VBAからの呼び出しの問題だと思う。) 試しにVBAの方にテスト用の関数(デバッグメッセージ出してダミーの値を返す)を作って それを呼び出すパススルーじゃないクエリを作ってDLookUp実行してみたが、デバッグメッセージは1回しか出ない。 (Accessのパススルーじゃないクエリは1回の実行毎に1回しか開かれない?) VBAからパススルークエリ実行する時は、1回の実行でも複数回(2〜3回)開かれるのか? 何とかして1回に1づつ進むように出来ないんだろうか・・・。
43 42 2012/07/04(水) 17:12:27.30
age忘れたorz
44 デフォルトの名無しさん 2012/07/04(水) 19:17:26.30
馬鹿には無理
45 42 2012/07/05(木) 10:34:27.66
>>44 d。 おまいのおかげで目が覚めた。 パススルークエリやめて、直接ADOからPostgreSQL開いてクエリ送ったら1づつカウントするわ。 助かったよ。 46 デフォルトの名無しさん 2012/07/05(木) 11:25:53.31
やれば出来る子
47 デフォルトの名無しさん 2012/07/06(金) 19:18:40.79
おまえみたいなやつが伸びる。 かもしんない。
48 デフォルトの名無しさん 2012/08/12(日) 10:55:28.80
Access2003 WinXP SP3 Firefox14.0.1です。 質問ですが、hyperlinkaddressプロパティというのがありますよね。 url文字列を代入すると、そのページをデフォルトのブラウザで 開いてくれるというやつ。 で、このurlのCGI何とかっていう文字列が入っていますので、 CGIで何らかのプログラムを起動しているんでしょうが、その時に、 ページが表示されないんです。 正確に言うと、デフォルトのブラウザがIE(自分の機械には6しか 入ってないんですが)だと、表示されるんですが、Firefoxだと表示できません。 でも、FFのURLボックスには灰色でうurlが表示されていて、 再読み込みボタンを押すと、表示します。 試しに、コマンドラインからurlをパラメータにして起動すると、表示します。 症状から見て、VBAの問題なのか、FFの問題なのか、判断しかねたので、 こちらでお聞きする次第です。 どなたか、詳しい方、アドバイをおねがいします。
49 デフォルトの名無しさん 2012/08/12(日) 14:26:35.97
「""」で囲んでみた?
50 デフォルトの名無しさん 2012/08/12(日) 15:32:13.48
”で囲むと、「”url”を開くことができません。指定したファイルを開くことができません」というエラーダイアログが出ます。
51 デフォルトの名無しさん 2012/08/23(木) 22:10:14.57
他の方法でFFにそのuriを送ってみる ショートカットやコマンドライン、メールやワープロ、表計算ソフトから 同じ現象になると思うのでFFの仕様かバグ、設定のせいだとわかるのではないかと
52 デフォルトの名無しさん 2012/08/27(月) 21:38:06.30
500件ぐらいのDATAをどんどん追加していくと、3、4回で重くなってしまうんですけど、 どっから手を付けていいのやら分かりません。 ヒントください。
53 デフォルトの名無しさん 2012/08/27(月) 21:43:01.77
ソース貼れ
54 デフォルトの名無しさん 2012/08/28(火) 07:43:56.82
55 デフォルトの名無しさん 2012/09/12(水) 21:30:27.45
VBAで既存のAccessデータベースを開いて、その中にあるクエリを実行して得られる「テーブル構造とデータ」をVBAの呼出し元にテーブルとしてインポートする方法教えてください。 [外部データ] タブの [インポート]からはうまくいくのですが、それをVBAで実行したいです。
56 デフォルトの名無しさん 2012/09/13(木) 00:20:33.72
import win32com.client adox = win32com.client.Dispatch("ADOX.Catalog") adox.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb" for t in adox.Tables: if t.Type != u"TABLE": continue print t.Name, t.DateCreated, t.DateModified for c in adox.Tables(t.Name).Columns: print c.Name, c.DefinedSize, c.Type
57 デフォルトの名無しさん 2012/09/13(木) 03:17:38.00
>>55 DoCmd.TransferDatabase でできるんじゃね 58 デフォルトの名無しさん 2012/09/13(木) 09:47:05.31
ExcelのVBAについて勉強中です。 まだ初心者なので、VBAについてお詳しい方、 ExcelのVBAでのテーブル作成方法を教えてください。 データーベース中心で、入力画面からデーターをmoveしてくるものを作りたいです。
59 デフォルトの名無しさん 2012/09/13(木) 10:07:40.73
import os import win32com.client MDBFILE = "test.mdb" if os.path.exists(MDBFILE): os.remove(MDBFILE) dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s" % MDBFILE adox = win32com.client.Dispatch("ADOX.Catalog") adox.Create(dsn) adodb = win32com.client.Dispatch("ADODB.Connection") adodb.Open(dsn) adodb.Execute("create table hoge (id counter primary key, c1 varchar(10));") adodb.Execute("insert into hoge (c1) values ('fuga');") adodb.Execute("insert into hoge (c1) values ('hage');") adodb.Close()
60 デフォルトの名無しさん 2012/09/26(水) 09:10:07.57
Access初心者です . 現在、ある地区の人口増減表を作成しています。 そのデータを格納するためにAccessを使用しています。 1回のデータを入れるたびに〈男or女〉〈転入or転出〉で元々設定された数値から(男性人口数)(女性人口数)(総人口数) が自動的ににカウントアップする(データシートビューに)ロジックを作成したいと思っています。 現在、「データシートビュー」「デザインシートビュー」まで作成したのですが、これからどのように手を加えていけばいいでしょうか? クエリで演算フィールドなどを作成するのでしょうか。 Access自体が全くの初心者なので、できるだけ詳しく書いていただけると助かります。 是非よろしくお願いします。
61 デフォルトの名無しさん 2012/09/26(水) 11:25:57.96
馬鹿には無理
62 デフォルトの名無しさん 2012/09/26(水) 11:36:38.59
Microsoft Office Chart10 あるいは、OWC10というグラフを描くコンポーネントで、 クリックやダブルクリックのイベントを使えないですか? クリックしたグラフの要素を得たいのですが。
63 デフォルトの名無しさん 2012/09/26(水) 12:53:17.87
使えますよ。
64 デフォルトの名無しさん 2012/09/26(水) 12:59:35.45
>>63 どのようにするのですか? 何か参考になるページなど教えてもらえませんか? 65 デフォルトの名無しさん 2012/09/26(水) 17:04:56.08
66 デフォルトの名無しさん 2012/09/26(水) 18:11:11.92
>65 使えますね。
67 デフォルトの名無しさん 2012/09/26(水) 18:20:01.38
68 デフォルトの名無しさん 2012/10/01(月) 21:06:32.64
>>57 サンキュー助かった! スマホで規制で返信できずすスマソ。 69 デフォルトの名無しさん 2012/11/25(日) 21:58:23.52
Access 2007のフォームで、オプショングループ内でトグルボタンを作成し、各トグルボタンをクリックすると、フォームのMe.RecordSourceにトグルボタンに対応させたクエリを設定するプログラムを書いています。 今のところ、機能は追加できたのですが、トグルボタンの表示がうまく更新されず、最初に押したボタンが引っ込んだままもどりません。 トグルボタンの表示を更新する方法はあるのでしょうか?
70 デフォルトの名無しさん 2012/11/26(月) 00:10:07.28
引っ込んだら戻らなくなるのがトグルボタンなんだけど
71 デフォルトの名無しさん 2012/11/26(月) 21:19:17.24
お前らここまでやるならC#でEXCELデータいじった方が簡単だろ
72 デフォルトの名無しさん 2012/11/26(月) 21:20:11.62
>>70 すみません。言葉足らずでした。 トグルボタン1を押した後、トグルボタン2や3を押しても、トグルボタン1が押されたままの表示になってしまいます。トグルボタンに割り当てたRecordSourceの切替え機能はちゃんと動いています。 。 73 デフォルトの名無しさん 2012/11/26(月) 21:38:01.20
トグルボタン1を押したあと トグルボタン2を押して トグルボタン3を押したら トグルボタン2はどうなってますか
74 デフォルトの名無しさん 2012/11/26(月) 22:19:50.73
>>73 トグルボタン2の表示は押されていない状態です。 トグルボタン1が押されたままの表示になっています。 75 デフォルトの名無しさん 2012/11/26(月) 22:27:05.15
1がグループに入ってないな
76 デフォルトの名無しさん 2012/11/27(火) 06:18:00.99
馬鹿には無理
77 デフォルトの名無しさん 2013/02/09(土) 15:50:52.56
ACCESS2013はどうですか?
78 デフォルトの名無しさん 2013/03/04(月) 07:41:06.45
>>77 adpがつかえん クラサバの旗降ってきた漏れの立つ瀬がない囧rz 79 デフォルトの名無しさん 2013/03/04(月) 13:02:19.07
ACCESS2013の利点は無いのかね!
80 デフォルトの名無しさん 2013/03/05(火) 15:27:52.54
Office2013にメリットなんて無いよ。 見た目がヌルヌルしてキモいけど、価格分の性能&利便性向上はない Office使ってなくてOpen系で駄目なら、仕方ないから買ってやるか程度
81 デフォルトの名無しさん 2013/03/24(日) 06:36:06.38
無料バージョンアップできると聞いて2010買ったのに、発売の2/6までにインスコしないといかんかった囧rz 血も涙もないよ
82 デフォルトの名無しさん 2013/03/24(日) 07:16:09.59
おめでとうw
83 デフォルトの名無しさん 2013/03/26(火) 11:24:23.03
Win8でACCESS2010です。 Form_test.Filter = "分類 Not Like ""*あああ*"" And Not Like ""*いいい*""" Form_test.FilterOn = True コンボボックスの更新後処理イベントで上記のコードを走らせると、 「構文エラー:演算子がありません」と返されます。 初歩過ぎる質問ですんまそん。文法何か間違ってますでしょうか。
84 デフォルトの名無しさん 2013/03/26(火) 12:05:53.53
Form_test.Filter = "分類 Not Like ""%あああ%"" And Not Like ""%いいい%"""
85 デフォルトの名無しさん 2013/03/26(火) 13:24:28.20
たぶん "分類 Not Like ""*あああ*"" And 分類 Not Like ""*いいい*"""
86 デフォルトの名無しさん 2013/03/26(火) 15:56:56.54
>>84->>85 返信ありがとうございます。どちらも「演算子がありません」エラーは解消されませんでした。 ちなみに、↓は問題ないので、And Notがまずいのかなと思ったんですが、書式は問題なさそうですか・・・。 Form_test.Filter = "分類 Not Like ""*あああ*""" Form_test.FilterOn = True 他の方法も探してみます。 ヘルプ開くとBingとかいうのが出て何も表示されないお・・・。2010使いづらいお(;´Д`) 87 デフォルトの名無しさん 2013/03/26(火) 17:04:55.32
Form_test.Filter = "Not (分類 Like ""*あああ*"" Or 分類 Like ""*いいい*"")"
88 デフォルトの名無しさん 2013/03/27(水) 08:35:25.18
>>87 これでいけました!ありがとうございます! 89 デフォルトの名無しさん 2013/03/27(水) 11:51:17.13
>>88 >>84 は文法間違いあるけど、>>85 はいけるはずだが、ほんとにダメだったのか? 先頭の のとこは無視しないとだめだぞ 90 デフォルトの名無しさん 2013/03/27(水) 17:54:38.17
"Not 分類 Like ""*あああ*"" And Not 分類 Like ""*いいい*"""
91 デフォルトの名無しさん 2013/04/04(木) 18:20:58.41
1.OS(64bit) + Office2010(64bit) 2.OS(64bit) + AccessRuntime2010(64bit) 3.OS(64bit) + Office2010(32bit) 4.OS(64bit) + AccessRuntime2010(32bit) 5.OS(32bit) + Office2010(32bit) 6.OS(32bit) + AccessRuntime2010(32bit) ※ OS:XP〜Windows8まで 上記のどの組み合わせでも動くようなAccessの実行ファイルは作成可能ですか?
92 デフォルトの名無しさん 2013/04/04(木) 19:39:15.05
93 デフォルトの名無しさん 2013/04/12(金) 00:23:04.15
使用不可にいている3つのテキストボックスを、 チェックボックスをonにすると使用可能にするにはどうしたらいいでしょうか?
94 デフォルトの名無しさん 2013/04/12(金) 01:37:21.85
>>93 Private Sub チェックボックス_Click() If Me.チェックボックス.Value = True Then Me.テキストボックス1.Enabled = True Me.テキストボックス2.Enabled = True Me.テキストボックス3.Enabled = True Else Me.テキストボックス1.Enabled = False Me.テキストボックス2.Enabled = False Me.テキストボックス3.Enabled = False End If End Sub 95 デフォルトの名無しさん 2013/04/12(金) 11:57:39.57
>>92 参考にさせてもらいました。 ありがとうございます。 引き続き質問なのですが、 Windows8(32bit) + Access2010(32bit)環境で作成したファイルを Windows8(64bit) + Access2010(32bit)環境で実行した場合に毎回ではないのですが、 レーダーチャートの目盛りが正常に表示されません。(-3E+259と表示される) なお、表示しているデータは毎回同じものです。 ちなみに、Windows8(64bit) + Access2010(32bit)環境で作成したファイルを Windows8(64bit) + Access2010(32bit)環境で実行した場合も同様でした。 この現象について何かご存知の方がいらっしゃいましたらお願いします。 96 デフォルトの名無しさん 2013/04/12(金) 17:36:38.89
>>94 もう少しシンプルなコードはないですか? わがままですみません。 97 デフォルトの名無しさん 2013/04/12(金) 17:42:08.68
>>96 Private Sub チェックボックス_Click() Me.テキストボックス1.Enabled = Me.チェックボックス.Value Me.テキストボックス2.Enabled = Me.チェックボックス.Value Me.テキストボックス3.Enabled = Me.チェックボックス.Value End Sub 98 デフォルトの名無しさん 2013/04/12(金) 18:36:06.95
>>97 すばやいご回答ありがとうございました。 いろいろな書き方があるんですね。 99 デフォルトの名無しさん 2013/04/12(金) 22:29:10.45
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")) というアドバイスをしてくれた方がいましたが、 これに相当するコードが全くわかりません。 丸投げですがどなたか教えてくださいませ。
100 桃白白 2013/04/13(土) 02:40:34.80
>>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 101 デフォルトの名無しさん 2013/04/13(土) 17:33:29.73
>>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 としましたがうまくいかず、どこをどうしたら良いのかまるでわかりません。 ご指摘お願いいたします。 102 桃白白 2013/04/13(土) 20:28:48.85
>>101 あら。結果がずれてた? それともなんか変な動きした? 引数の形式が違うのかな。どういう入力でどう出力された? 103 デフォルトの名無しさん 2013/04/13(土) 21:29:31.16
>>102 [開始時間]に入力、[終了時間]に入力後、 時間の差を[実時間]に表示し、これを基に[時間]に結果を表示したい、という流れですが、 フォームを開くだけで以下の、 「イベント プロパティに指定した式 読み込み時でエラーが発生しました: このメンバー識別子は既にオブジェクトモジュールの中に存在しています。」 ※マクロ名、ユーザー定義関数、[イベント プロシージャ]以外の式が指定されています。 ※関数、イベント、マクロの評価でエラーが発生しました。 というエラーメッセージがでますが、正直理解できていません。 104 桃白白 2013/04/14(日) 01:59:24.64
>>103 コントロールの名前と関数の名前が競合してるんでない? コントロールと関数を別の名前にしてコントロールソースで紐付けて やっちゃえばいいよ。こんな感じで。 Database1.zip download http://kie.nu/Xug 105 デフォルトの名無しさん 2013/04/14(日) 14:28:32.69
>>104 うわー、ファイルのアップまでしていただき本当にありがとうございます。 テーブルに記録しておく必要があったため、 Private Sub 終了時間_AfterUpdate() 時間 = Marume(実サービス時間) End Sub ということで全てスッキリしました。 いただいたコード自体見てもほとんど理解しきれてませんが、 これから勉強しながら頑張ってみます。 再度、本当にありがとうございました。 106 デフォルトの名無しさん 2013/04/19(金) 11:54:05.25
フォームのプロパティにある「コード保持」って何でしょうか? 「はい/いいえ」はどのように使い分けるのでしょうか?
107 デフォルトの名無しさん 2013/04/19(金) 12:30:11.35
存在しないオブジェクトに関連したコードを不要になったときに自動で削除する機能がある たとえば"ボタンA"をクリックしたときのコードを書いてある状態で あとで"ボタンA"を"ボタンB"に名称変更したりしたときに コード保持が「いいえ」だと"ボタンA"をクリックしたときのコードは捨てられる
108 デフォルトの名無しさん 2013/04/19(金) 16:04:50.27
どもです つまりコード保持は、名称変更をした際に以前のコードが消えても良い または名称変更は絶対にしないような状況であれば、「いいえ」を選択しておいても良い と言うことで間違いないですか? どこかで「いいえ」にした方が速度が速くなる的なことが書いてあった覚えがあるので・・・
109 デフォルトの名無しさん 2013/04/19(金) 16:43:59.98
>>107 名前の自動修正オプションとこんがらがってないか? >>108 コード消えるのはフォームかレポート単位だぞ 名前変更とか関係なくて、そのフォームのコード全部消えるぞ ヘルプにはコードが無いからいいえの方が処理が早いとは書いてあるな その分制約もあるが ヘルプみて意味がわからないなら、設定変えるのはやめとけ 110 デフォルトの名無しさん 2013/04/22(月) 10:00:33.47
>>109 遅くなりましたが、ありがとです 試しにフォームを作成時に、「いいえ」を選択しておいた状態で イベントプロシージャを設定してみました。 その時点で自動的に「はい」に切り替わるんですね。 そしてコードを使うフォーム、レポートが1000個を超えるものは作れないと言う事なんですね。 勉強になりました。 111 デフォルトの名無しさん 2013/04/25(木) 11:56:04.36
タブコントロールでページ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です。
112 111 2013/04/25(木) 12:00:42.84
忘れてましたがタブの背景色を変更したいので タブコントロールのプロパティで「テーマの使用」を「はい」に設定してあります。
113 デフォルトの名無しさん 2013/04/25(木) 14:29:36.88
消す前に違うページを選択すれば良いだけじゃないのか?
114 デフォルトの名無しさん 2013/05/21(火) 13:36:25.32
チェックボックスの true が -1 から 1 に変わったようです 2007からでしょうか? 変更がめんどくさい
115 デフォルトの名無しさん 2013/05/22(水) 11:48:10.00
>>114 2003と2007で試したけど非連結で画面でチェックした場合はどちらも-1になる ただし、コードで1をセットしたら1のままだった まず1をセットするコード書くのが悪い そして、1でも-1でもBooleanとして評価したらTrueなんだから そんな事に影響されるコード書くのが悪い 116 デフォルトの名無しさん 2013/05/22(水) 14:18:44.22
>チェックボックスの true が -1 から 1 に変わったようです >2007からでしょうか? キリっ
117 デフォルトの名無しさん 2013/05/22(水) 14:27:02.75
知らんがな ってレスしようと思ったけど かわいそうなので放っといた
118 デフォルトの名無しさん 2013/06/04(火) 02:35:18.23
月曜会社を休んで家で土曜から月曜までVBAをひたすら書き続けた結果 頭が超重くなって3日目は何やってるかよくわからないまま終わってしまった VBAのコーディングをぶっ通しでやるのは2日が限界か?
119 デフォルトの名無しさん 2013/06/05(水) 22:11:38.14
>>118 限界は人それぞれだろうが、無理はすんなよ 120 デフォルトの名無しさん 2013/06/21(金) 00:57:48.54
access 2003 にて SendObjectメソッドを利用して、メールを送信したいと思っています。 実際にメールを送れるようにはなっているのですが、 送信メール本文に「mdbファイルと同一ディレクトリにある単体の.msgファイルの本文」(.msgファイルの場所はフルパス指定でも構いません) を表示させる事は可能でしょうか? イメージ的には、テーブルから送信先アドレスを収集し、.msgファイルの本文の内容をテンプレートとして一括送信する と言った感じです。
121 デフォルトの名無しさん 2013/06/21(金) 01:01:26.56
書き忘れました。 メール送信ソフトはoutlookです。
122 デフォルトの名無しさん 2013/06/21(金) 07:11:37.65
.msgファイルの形式ってたぶん公開されてないんだよなぁ どうやってメールを.msgで保存してるかしらんが、そっちを変更した方が楽な気がする outlookでもVBAは使えるぞ
123 デフォルトの名無しさん 2013/06/30(日) 18:38:52.19
>>120 OutLookのSession.OpenSharedItemで.msgファイルの読み込みできるが 他のアプリからOutLookいじるのはお勧めしない OutLook側でmdbに書きだすとか、プレーンテキストで保存するとかした方が良いんじゃね 124 デフォルトの名無しさん 2013/08/31(土) NY:AN:NY.AN
質問です ODBCの接続する際に IDとパスワードを入力するボックス(VBAで設定したものではない)がありますが、 初めから半角英数字になるように設定はできますか?
125 デフォルトの名無しさん 2013/08/31(土) NY:AN:NY.AN
VBAで設定したものではないものを、VBAでどうこうするのは無理があります
126 デフォルトの名無しさん 2013/08/31(土) NY:AN:NY.AN
>>125 ですよね。 IDやパスワードを入力するときに各々気を付けてもらうしかないですね。 127 デフォルトの名無しさん 2013/08/31(土) NY:AN:NY.AN
128 デフォルトの名無しさん 2013/08/31(土) NY:AN:NY.AN
ODBCのミドル層で出てるダイアログだから、アクセス側からいじれるプロパティなんてないだろ 自分でIDとパスワード入力してもらうフォーム作ってそこに入力してもらえ
129 デフォルトの名無しさん 2013/08/31(土) NY:AN:NY.AN
DBの持ち物か。すまん。 ダイアログの出る直前にACCESSで入力を固定して終わったら解除ってできないのかね。 (調べてない、ただの理想を述べてみた。)
130 デフォルトの名無しさん 2013/09/01(日) 00:30:06.54
>>129 >>124 が言ってるのは多分、ODBCで接続するときにユーザとパスワードを指定しなかったときに出るやつ 自分でちゃんと接続できるユーザとパスワード指定したら出ない 間違ったユーザやパスワード設定したらしらん 131 デフォルトの名無しさん 2013/09/01(日) 02:59:29.29
Access初心者です。 VBAでExcelからデータをコマンドボタンで自動インポートさせる物を 作っています。 インポート漏れがないかのチェック処理もさせたいのですが、 どのようにすればいいかわかりません、ご教授お願いします。
132 デフォルトの名無しさん 2013/09/01(日) 03:24:10.08
133 デフォルトの名無しさん 2013/09/01(日) 03:48:29.03
>>132 ありがとうございます。 仮に件数が合わなくてインポート漏れしたレコードを 特定するための処理をいれることはできますか? 134 デフォルトの名無しさん 2013/09/01(日) 03:59:24.56
ユニークキーで差分とれよ 少しは考えろよ
135 デフォルトの名無しさん 2013/09/01(日) 04:00:02.93
>>133 ユニークキーで差分とれよ 少しは考えろ 136 デフォルトの名無しさん 2013/09/01(日) 08:49:32.79
インポート漏れなんてあるの?
137 デフォルトの名無しさん 2013/09/01(日) 09:02:48.06
結構ある あと勝手にデータ変換されてたりもする
138 デフォルトの名無しさん 2013/09/01(日) 09:25:38.41
そうか ならインポートしてからチェックするより自前のコードでインポートした方がいいんじゃない?
139 【だん吉】 2013/09/01(日) 09:31:40.27
自分はそうしてる
140 デフォルトの名無しさん 2013/09/01(日) 10:05:17.59
ウィザードにまかせてるとひどい目にあう
141 デフォルトの名無しさん 2013/09/01(日) 10:35:21.42
Access初心者なので、そのVBAのコードの書き方がわかりません 教えていただけませんか
142 デフォルトの名無しさん 2013/09/01(日) 10:36:54.67
いいですよ
143 132 2013/09/01(日) 19:42:00.26
>>131 www.nurs.or.jp/~ppoy/access/access/acX014.html 144 デフォルトの名無しさん 2013/09/01(日) 20:23:21.63
インポート漏れするデータ欲しい 試してみたい
145 デフォルトの名無しさん 2013/09/01(日) 23:14:50.69
数字型のとこに文字入ってるデータとか用意したらいいんじゃね
146 デフォルトの名無しさん 2013/09/01(日) 23:38:03.38
>>145 うーん、そういうデータをインポートすると普通にエラーとして扱われて 「テーブル名_$インポート エラー」 ってテーブルが生成されるから インポート漏れのレコードがわからなくて困る、なんて状況にはならないんだよね 147 デフォルトの名無しさん 2013/09/02(月) 10:35:57.67
インポート漏れのレコードがわからなくて困る、なんて状況になると言ってる人はいないが
148 デフォルトの名無しさん 2013/09/02(月) 10:57:43.03
おもろいな
149 デフォルトの名無しさん 2013/09/05(木) 23:50:52.09
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True, strrange 上記でインポート エラーになるので引数のacImportのところに、 作成したインポート定義にしたいのですができるのでしょうか
150 デフォルトの名無しさん 2013/09/07(土) 03:42:11.28
よし
151 デフォルトの名無しさん 2013/09/07(土) 16:59:26.27
そもそもワークシート変換にインポート定義とかないだろ
152 デフォルトの名無しさん 2013/09/09(月) 01:46:05.73
Accessの初心者です。 レポート印刷でページヘッダーのコードが変わったタイミングで改ページしたい かつ詳細の明細行は4レコードだけで改ページさせる、両方の条件を満たせるには、 どうやって作成したらよいかご教授お願いします。
153 デフォルトの名無しさん 2013/09/09(月) 02:08:51.60
ページヘッダーじゃなくて、その項目でグループ化してヘッダー作る そのヘッダーかフッターで改ページを設定する 詳細の高さを4行分になるようにヘッダ、フッタや余白を調整する つか、VBAまったく関係ない話
154 デフォルトの名無しさん 2013/09/09(月) 07:18:08.57
>>153 ここはVBAのスレですよね?VBAと関係ある話をしてください。 VBAとまったく関係ない話をしたのはあなたです。VBAでお願いします。 155 デフォルトの名無しさん 2013/09/09(月) 13:03:59.99
VBAを一言で表すと
156 デフォルトの名無しさん 2013/09/09(月) 13:20:44.56
>>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が変わったら改ページな 157 デフォルトの名無しさん 2013/09/09(月) 13:22:34.74
う。 は空白に置換してくれ つか普通に貼り付けできなくなったのかよ
158 デフォルトの名無しさん 2013/09/10(火) 00:16:36.47
>>156 もう少し教えてください。。。 明細が5明細あった場合、 コードA 00001 00002 00003 00004 改ページ コードA 00005 改ページ コードB 00001 00002 00003 改ページ コードC 00001 こんな感じで出したいのですが 159 デフォルトの名無しさん 2013/09/10(火) 02:26:08.63
160 sage 2013/09/17(火) 19:50:09.24
Accessのクエリで、「クエリの並び替え条件を動的に変更する」方法を 教えて頂けないでしょうか。 現状は、下記のクエリを作成しましたが、並び替え条件として判定されません。 SELECT * FROM テーブル1 ORDER BY FORMS!画面1!テキスト1.Value よろしくお願いします。
161 デフォルトの名無しさん 2013/09/17(火) 20:22:56.49
>>160 SELECT * FROM テーブル1 ORDER BY FORMS!画面1!テキスト1.Value これってどこに書いてるの? 162 デフォルトの名無しさん 2013/09/17(火) 21:44:28.61
>>160 どうしてもやりたいならQueryDefとか使えばできるかもしれんが 動的にSQLつくってDoCmd.RunSqlでやる方がいいんじゃね 163 160 2013/09/17(火) 22:09:44.82
>>161 Accessの「クエリ」で定義していました。 >>162 ご指摘を受けた点を参考にクエリを作成した所、うまく行きました。 ありがとうございます。 164 デフォルトの名無しさん 2013/10/20(日) 21:44:25.62
株価のデータベースを作りVBAで銘柄の抽出をしています VBAを呼ぶ度にSQLで株価データを読み込んでるので日に何度もやると結構無駄です そこでフォームをロードした時に纏めて銘柄毎のクラスオブジェクトを作り フォームをアンロードするまで保持したいのですが可能でしょうか? 変数の保持はStaticで良いようですが、配列化してるオブジェクトの保持はどのようにするのでしょうか?
165 デフォルトの名無しさん 2013/10/20(日) 22:06:18.65
view
166 デフォルトの名無しさん 2013/10/20(日) 22:10:51.15
167 164 2013/10/20(日) 22:56:11.74
フォームと連動させるのではなく、最初に実行させる時にStaticで保持し 2度目からオブジェクトが空ではないならデータを取りに行かずに 値渡しするようにして解決しました
168 デフォルトの名無しさん 2013/10/21(月) 00:11:20.78
なんか色々つっこみどろこ満載だな まあ、動いてるならいいか
169 デフォルトの名無しさん 2013/11/05(火) 18:56:30.39
VBAでリモートのデータベースにトランザクション処理を開始して、コミット/ロールバックするのはわかりました。 これをマクロのアクションだけではできないですよね。 Vbaを嫌がる仲間が同一プロジェクト内にいるので。
170 デフォルトの名無しさん 2013/11/16(土) 13:17:48.50
初心者ですみません。コンパイルってなんですか?
171 デフォルトの名無しさん 2013/11/16(土) 13:19:54.03
疲労困憊る
172 デフォルトの名無しさん 2013/11/16(土) 13:40:52.90
コンパイルダー・オン
173 デフォルトの名無しさん 2013/11/16(土) 15:59:42.46
昔広島にあったSTGや落ちゲーキャラゲー開発してた会社
174 デフォルトの名無しさん 2013/11/16(土) 17:51:44.57
あったなぁ
175 デフォルトの名無しさん 2013/11/16(土) 18:27:38.04
脳みそコネコネの会社?なくなったのか?
176 デフォルトの名無しさん 2013/11/16(土) 18:29:57.41
マジレスしとこう >>170 ソースプログラムを実行可能形式に変換する事 簡単に言えば、お前が書いたプログラムを実行できるように準備する作業 ACCESSなら勝手にやってくれるから、意識する必要はない 177 デフォルトの名無しさん 2013/11/16(土) 19:25:11.96
>>175 1998年に無くなって、落ちゲー関係はセガが買い取った 178 デフォルトの名無しさん 2013/11/16(土) 21:35:05.65
>>176 なるほど。では、あえてコンパイルという作業をしなくてもOK ってことですね。 あるがとうございます! 179 デフォルトの名無しさん 2013/11/25(月) 21:45:32.92
Accessの場合、ソースを中間コードに変換する作業をコンパイルと呼んでる。 その過程でソースにエラーがあるかどうかをチェックするから 実行時エラーとかの対策にはコンパイル通しておいた方が良いと思う。
180 デフォルトの名無しさん 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 デフォルトの名無しさん 2014/01/31(金) 13:00:11.86
>>181 >テキストに規則性が無いためにOrderByなどでは対応出来ません 最初に書いたSQLが悪かったみたいで これで出来ました。サーセン 183 デフォルトの名無しさん 2014/01/31(金) 15:57:33.35
辞書順と偶然一致しただけなんじゃないの
184 デフォルトの名無しさん 2014/01/31(金) 18:24:40.76
そもそも >テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るの これが怪しいんだが どこでこんな事教えられたんだ
185 デフォルトの名無しさん 2014/01/31(金) 19:17:48.82
そうだな、俺も出来るとは思ってなかった しかし、実際その通りに動くのだから仕方がないw だから最初に「Access独自なのか」と思ってるのだが これが出来るのは2013だからかもしれない
186 デフォルトの名無しさん 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 デフォルトの名無しさん 2014/01/31(金) 19:54:34.74
分かった。ググったら出てきた 2007から出来るらしいけど、勝手に日付を解釈してるのではなく 正確にはテキスト部分を無視して数値順に並び替えてる、らしい
188 デフォルトの名無しさん 2014/01/31(金) 21:40:18.27
ということはデータを統一しないといけませんね
189 デフォルトの名無しさん 2014/01/31(金) 22:33:10.45
ソートの問題じゃなくて暗黙の型変換の問題な気はするけど >テキスト部分を無視して数値順に並び替えてる 普通にソートすればテキストでソートするんだが どうやったらそんなソートするんだ?
190 デフォルトの名無しさん 2014/01/31(金) 22:39:33.21
どんな型変換すればそうなるのか、逆に聞いてみたい
191 デフォルトの名無しさん 2014/02/01(土) 13:42:22.69
あいまいな検索をしたい場合はLike *検索文字列* だけど これだと、先頭文字列に外字が含まれてる場合は検索されない のだけれど、回避方法はある?
192 デフォルトの名無しさん 2014/02/02(日) 23:15:37.86
>>191 ちゃんと検索できるっぽいけど 先頭文字に外字ってのは、検索対象のテーブルデータなのか、Likeに指定する文字列なのか? 193 デフォルトの名無しさん 2014/02/03(月) 09:59:08.52
>>192 先頭に含まれる外字は検索対象のテーブルデータです 文字列の中間に外字が含まれる場合は検索できるのに、 先頭だと検索されない減少が発生する… 194 デフォルトの名無しさん 2014/02/03(月) 16:26:19.10
>>193 かるく試したが再現しないな OSかACCESSのバージョンによる問題か 単にお前の勘違いか ACCESSでも限定された状況でのバグか MDB(ACCDB)がぶっ壊れてるか まあ、単に検索できないレコードに不正なデータが混じってるだけだと思うが 195 191 2014/02/03(月) 18:14:37.26
一応解決したっぽい 原因として、dbmagicにodbc経由でリンクテーブルに したのがダメらしい リンクテーブルをやめて、テーブルデータごとインポートしたら 通常通りに検索できた みんなありがと
196 デフォルトの名無しさん 2014/02/03(月) 18:49:01.92
喰らえカスども、奥義「後出し特殊条件!」
197 デフォルトの名無しさん 2014/02/03(月) 18:58:14.00
生データインポ時に変換されただけとかは? つまりODBC接続でもデータを相応しい変換しておけば解決できるのかも
198 デフォルトの名無しさん 2014/02/03(月) 22:22:24.80
そもそも外字サポートされてるのかどうかしらんが たんにdbmagicで外字がバグってただけだろ
199 デフォルトの名無しさん 2014/02/08(土) 21:20:31.59
SQLのReplace Intoに相当する物って有るんですか?
200 デフォルトの名無しさん 2014/02/10(月) 01:08:00.70
フォームに伝票基本情報 サブフォームに詳細というか明細欄(だいたい30レコードくらい)配置して、 1売上1レコードになるようにしています。 サブフォームに、 内容 金額 委託 委託金 とフィールドがあり、委託したときに入力するですが、 (この委託の部分も、 1売上(外注)1レコードにできませんか?
201 デフォルトの名無しさん 2014/02/10(月) 01:42:27.90
誰か翻訳
202 デフォルトの名無しさん 2014/02/10(月) 11:01:12.98
>>199 そもそも標準的なSQLにそんな命令聞いた事ない ACCESSでも聞いた事ない 203 デフォルトの名無しさん 2014/02/10(月) 11:05:35.28
>>200 なにがしたいか良くわからんが、サブデータシートとかサブフォームのネストとか たぶんそれでできるんじゃね 204 デフォルトの名無しさん 2014/02/12(水) 15:25:40.29
>>199 MySQLの独自実装か? SQL ServerにもPostgreSQLにもないが・・・。 どんな動きかググってまで答える気にならない。 205 デフォルトの名無しさん 2014/02/16(日) 11:19:02.87
206 デフォルトの名無しさん 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 デフォルトの名無しさん 2014/02/27(木) 11:20:17.13
>>206 まず24個も引数取るのを美しいか疑問に思えよ その24個をまとめたコレクションなり配列なり用意するとか その24個にあまり関連がないないならParamArrayつかえ (その前提でまとめて同じ引数にするのおかしいけどな) 208 デフォルトの名無しさん 2014/02/27(木) 11:34:23.61
>>207 ParamArrayというのがあるんですね。ありがとうございます。調べてみます! 美しさに関しては超ごもっともなんですが、如何せん元のデータをいじる権限がなくてですね。 元データの開発者をぐーで殴りたいレベル。 識別コード(一意)|24ヶ月前|23ヶ月前|22ヶ月前|21ヶ月前|・・・|当月| ってな感じなんですよ。 んでこの○ヶ月前ってのがParmになるんですけどコレクションにせよ配列にせよ、結局は同じことなので AAA(24ヶ月前,...当月)ってやっちまったほうが早いかなと。 大変助かりました。ありがとうございます。 209 デフォルトの名無しさん 2014/02/27(木) 14:06:57.28
VBAにそんなもんあんのか?構造体使うのが普通だろ ただしVBAの構造体は遅いけどな
210 デフォルトの名無しさん 2014/02/27(木) 14:09:36.05
有りますね、サーセンw
211 デフォルトの名無しさん 2014/02/27(木) 15:11:10.30
ACCESSなら元データはテーブルじゃないのか だったらレコードセットなり渡せば済む話だとおもうが
設計の悪いDBだとたまに見る形だな 一々縦横変換とかしなきゃならんやつ
スイマセン。エクセルからACCESSのテーブルにADO接続してエクセルの行(256文字以上のテキスト)をINSERTしようとしています。ACCESS側で受けるフィールドをメモ型にしましたがエクセルからINSERTしても255文字以内しか残りません。
続きです。 何かすっごく基本的な凡ミスな気がしてるのですが、何かここらあたりありますか? エスパーな質問で申し訳ないです。。
メモ型はSQL使うと切れたり頭の255しか判定してくれなかったりするからなあ エクスポートインポートとかはバグで切れちゃうし 普通に文字列INSERTで入るか試してみて
171 名前:デフォルトの名無しさん[] 投稿日:2014/07/17(木) 02:49:51.87 ID:TFQGtdi0 http://www.ynsk.co.jp/nsk/knowhow/sendmail/sendmail5.htm こちらのサイトに公開されてるアクセスのコードなんですが Windowsの標準DLLを利用して、メールを受信、送信するプログラムを 実行したいのですが、うまく動かせません。 他のスレッドで質問しましたが、こちらに誘導されてきました。 無償で公開されてるソースコードが動かないのですが、わかる有志の方、いらっしゃいましたら 使い方おしえてください。 元スレッド:Excel VBA 質問スレ Part34 ●MDBファイルの内容 ・ メールユーザ(テーブル)……利用するメールアカウントの情報を保存します。 ※ 以下のように設定して下さい。 メールアドレス POP3サーバ ユーザ パスワード SMTPサーバ リターン ← 受信時にサーバなどから通知されるメッセージが設定されます。 受信要求 ← 0(受信しない)または-1(受信する)を設定して下さい。 仮受信 ← -1(メールをサーバから消さない)または0(消す)を設定して下さい。 上記の説明通り、テーブルに必要事項を記入しましたが反応しません。 コンパイルはしました。UACを切ってファイルのアクセス権限をeveryoneに変更しました。。 動作確認済み環境が、Win2000とXPProのようで、office97、2000では動作の確認が取れてるみたいです。 自分の環境:Win7pro office2010pro
>>218 反応しないってどういうこと? テーブルにセットしただけでは何も起こらなくて当然だぞ メール受信(更新クエリというのが有るようですが、そのクエリが見当たりません。初歩的なところで止まっているような気はするのですが、外部からのデータ受ける部分のdllがwin7で動作できない理由と読んでるのですが。ご教授願います。
・ B_POP3(モジュール)……メールの受信とデコードを行います。 ※ このモジュールを実行するためには、作業用のフォルダが必要です。 B_POP3(モジュール)の中のコーディング 「Private Const BWorkDir As String = "c:\maildata"」と 「Private Const BWorkTempDir As String = "c:\maildata\temp"」で 作業用のフォルダを指定しています。 ダウンロードしたままの設定で操作する場合、 Cドライブ直下にmaildataというフォルダとmaildataフォルダのなかに tempというフォルダを作成して下さい。 別のフォルダを利用する場合、フォルダの指定を変更して下さい。 「Private Const c_WorkDir非消去 As Integer = -1」というコーディングがあります。 -1のままだと、1メールごとに上記作業用のフォルダの中身を削除しません。 1ユーザのメールが複数あって、それを受信した場合、作業用のフォルダには全件分のファイルを残しています。 デバック時に1ユーザごとに受信すれば、中間結果を追えるので、有効なことがあります。 ファイルには、「mail1.txt」,「mail2.txt」.....などの番号を付けています。 ファイルと受信したメールを照合させるため、テーブルに保存したメールの「件名」にも番号を付けています。 0にすると、作業用のフォルダには最後の1件分のファイルしか残りません。 安定した運用段階に入れば、0にした方がディスク負荷は小さくなります
フォルダのアクセス権限の確認→念のため、everyoneに変更 ディスク負荷による動作停止の可能性→-1から0に変更したが変化なし そもそも、動作環境は古いマシンで行われていたので マシンスペックのリソース不足は考え難いと考えました。 もう少し、調べてみます。winsock.dllあたりが怪しいです。 パケットキャップとる以前に、ハードディスクの動作に変化が見られない。
お騒がせしました。 原因は、accessの使い方がわからないまま クエリが非表示であることに気付かず、試そうとしたためです。 同じ環境をVM作成し、対象のクエリのSQLクエリが見えたのでそれをぱくりました。 以上
基本的なことと思いますが、教えてください。 Public Function FuncSyohizei(ByVal kingaku As Double) As Double FuncSyohizei = kingaku * 1.05 End Function これを、イミディエイトウインドウから実行する場合 ?FuncSyohizei(100.0) ・・・型が一致しません。ちなみに、?FuncSyohizei(100)でも、同じ。 ?FuncSyohizei 100 → 100 ?FuncSyohizeiは、文字列とみなされ、無視された?。 ただしく、100と引数を渡したら、105と返ってくるようにするには イミディエイトウインドウに、どう入力すればいいんでしょうか。
いろいろやってみて、解決しました。 フォームモジュールに、これを作ったのがいけなかったようです。 標準モジュールにコピペして、?FuncSyohizei(100)したら 105が出ました。
Date, Now って Functionじゃなく Propertyなのな
>>227 そんな事ないと思うが もしかしたらそう言う名前のプロパティを持つものもあるのかもしれんが ちなみに、何のプロパティだ? VBAの標準関数って、VBA組み込みオブジェクトのメンバして実装されてるのか しかし、メソッドとプロパティの使い分けの基準は謎だな
Access2003でwebスクレイピングしてます。 Dim objHTML As MSHTML.HTMLDocument Dim objDoc As MSHTML.HTMLDocument If (objHTML Is Nothing) Then Set objHTML = New MSHTML.HTMLDocument Set objDoc = objHTML.createDocumentFromUrl(strURL, vbNullString) ってな感じでタグでデータを拾いたいのと、速度を重視してMSHTMLを使ってやってます。 が、createDocumentFromUrlのところでクッキーのセキュリティ警告が出てしまいます。 http://imgur.com/41wmxYi 回避する方法はないでしょうか? インターネットオプションをいろいろといじってみたけど、お手上げ状態です。 URLを変更して呼び出すたびに毎回出てくるので、処理を開始して放置しておくことができません。 >>231 Windows再インストール後初めてプログラム実行したとき表示されたけど 許可して以降は出てないな。 >>232 本当ですか… とりあえずプライバシーの設定を最低にして全てのクッキーを受け入れるにしたら、でなくなりました。 が、少し怖い… >>233 IEの設定を全リセットしても出ない。 Win7x64+IE10 >>233 win7(32bit),ie11です。 今度クッキーとか履歴とか全部クリアして試します。 メッセージでくぐってもie5がってMSのサイトしかでないんですよね。 ちなみにat Homeの不動産情報サイトです。 >>237 231です。 これも見ていたのですが、オンにするとスクリプトが実行されないとあるように、 ほしい情報がとれなくなってしまいました。 コメントありがとうございました。 質問です。WIN7、ACCESS2010 初歩的な質問なのですが、 文字列を扱う変数では何文字の格納が可能でしょうか?
vbaでgoogle driveにレポートをアップするやり方どこかに良いサンプルないかな。。。google driveのクライアントソフト入ってない場合でも使いたいんで。。。。
>>240 2Gまでだったと思うけどヘルプ確認してくれ >>242 ありがとうございます。 では、500文字くらいはしょぼいレベルと捉えて良さそうですね。 >>240 ,242-243 2010や64ビットバージョンで変わってなければ 固定長なら約 63KB だけどな まあ、固定長文字列なんてめったに使う事ないけど >>241 レポートのアップってのが具体的に何を指してるのかしらんが そもそもVBAではHTTP通信とか直接サポートされてないから >>240 で質問した者です。 変数に格納した、ただの文字列をテキストファイルに出力することは 可能でしょうか? >>245 可能か不可能かっていうならもちろん可能だけど やり方は色々あるぞ 純粋にVBAだけならPrint#だけど、あんまりこれ使ってるの見た事ないなw ACCES的に考えると、1回テーブルに格納してテキスト書き出しじゃないかな 大量のAccessファイル含め移動するのですが、リンクテーブルのリンク先の一括張り替え機能を実装したいのですが、ご教示いただけないでしょうか?
>>246 ありがとうございます。 最終的に長めの一文をテキストファイルに出力するためだけに ACCESSでテーブル作成したりクエリ組んだりしてるのです。 通常の使い方だとテーブルやクエリをエクスポートでいいんでしょうが なんせ一文のみなので、printというのを試してみます。 >>247 DAOで CurrentDb().TableDefs("テーブル名").Connect 書き換えてから CurrentDb().TableDefs("テーブル名").RefreshLink >>244 レポートというかAccessから出力された成果物をGoogleDriveのクライアントソフトが 入っていない場合でもGoogleDriveにアップロードしたいということだったのでした。 そんなことをやる人もあまりいないみたいですね。 Pythonあたりでフィルをアップするプログラムを作ってアクセスから ファイルパスを引数に持たせて実行させるようなイメージで考えてみようかとお思います。 もっとかんたんにできるぉ。。っていう神がいれば教えてたも。。。 >>252 VBAはHTTP通信サポートしてないから、どっちにしろVBAだけではできんが 俺ならC#(かVB.NET)でDLL作ってCOM公開だな C#のライブラリあるっぽいから、ほぼそれそのままCOM公開する形で行ける気がする 探せば誰かすでに作ってるかもしれんが 情報ありがとうございました。 >>253 VisualStudioもPro同等品がフリーの時代ですからね。 勉強してみたいのですが、時間(&気力)が乏しく、、、まずは探してみます。 >>254 Python自体ほぼほぼ初心者なんで、、、、 探してみます。お勧めとかありませんか? >>256 馬鹿なりにいろいろ考えますた。 GoogleCLで何とかできそうです。 AC2000くらいぶりに2013で作るんだが、変わりすぎてて困るなこれ
1)のデータの県名を元に、2)のように並べたいのですが、アクセスでやる方法はありますか? 1) 千葉 成田 空港 埼玉 秩父 蕎麦 埼玉 川越 イモ 栃木 日光 華厳 千葉 浦安 ネズミ 埼玉 秩父 三峯 栃木 日光 東照宮 栃木 宇都宮 餃子 千葉 館山 菜の花 ↓ 2) 千葉 成田 空港 館山 菜の花 埼玉 秩父 蕎麦 川越 イモ 秩父 三峯 栃木 日光 華厳 日光 東照宮 宇都宮 餃子
すいません。書き直します。 1)のデータの県名を元に、2)のように並べたいのですが、アクセスでやる方法はありますか? 1) 千葉 成田 空港 埼玉 秩父 蕎麦 埼玉 川越 イモ 栃木 日光 華厳 千葉 浦安 ネズミ 埼玉 秩父 三峯 栃木 日光 東照宮 栃木 宇都宮 餃子 千葉 館山 菜の花 ↓ 2) 千葉 成田 空港 館山 菜の花 浦安 ネズミ 埼玉 秩父 蕎麦 川越 イモ 秩父 三峯 栃木 日光 華厳 日光 東照宮 宇都宮 餃子
質問です。 数万レコード程度のログファイルの集計(抽出)をしたいです。 抽出条件は、レコードに担当者と時刻が入っていて、 その時刻の+1分以上かつ+5分以下で、同じ担当者の物です。 最終的には、条件にあてはまるレコードの1つ目と2つ目以降という感じで並べたいです。 今はEXCELのCOUNTIFS関数で半分手作業でやってますが、 かなり手間なのでできればAccessVBAでやりたいです。 よろしくお願いします。
わからないなら黙ってろよアホか で、vbaからcountifを呼び出せばいいんじゃねえの? 思いついただけで試してないが
>>267 VBAは必要ないでしょ。なにかその後バッチ処理をしてるっていう なら別だが。 普通に該当のテーブルを元にクエリつくって、パラメータクエリを 作る。フォームを用意して、入力させてその値をパラメータとして クエリの条件式に入れる。 1分以上5分以下という条件をbetween andで書いて2つパラメータ を時刻のカラムに入れる。これで抽出は完了。SQLでやってもいい んだがそこまでは必要ないでしょ。手軽にできるし。 Excelファイルで(表現上CSVで表現してますが、XLSXファイルの1つのシート上のデータだと思ってください。) 999,999,AAA,999・・・・・・ 999,999,BBB,999・・・・・・ 999,C ,999,999・・・・・・ 999,999,DDD,999・・・・・・ という4件のデータがあるとします。 これを、SELECT * FROM のクエリをDao.Recordsetで読み込みたいのですが、 Fileds(1)のところのタイプは数値型。 ここで、3行目のデータを見に行くと、フィールドの型が数値型なのに「C」が入っているためRS.Fields(2).Valueを参照しようとすると異常終了してしまいます。 全部のフィールドを強制的に文字列型で見る方法はないのでしょうか?
RS.Fields(2).Value を RS.Fields(1).Value に訂正。m(_ _)m
>>273 落ちる所のコードが無いから分からないけど dim aaa as long aaa=RS.Fields(1).Value みたいな使い方しているなら dim aaa as long dim bbb as string bbb=RS.Fields(1).Value bbbを数値判定してから本来のaaaに取得 判定方法はIsNumericやCIntやCLngなど Access2013です。 いろいろと作っているうちに突然コントロールソースに持っているユーザー定義関数が働かなくなり、#NAMEのエラーが出る様になりました。 ファイルが壊れたのでしょうか?
>>276 自己解決しました。 関数名を英数字のみにしたら動きました。 ただ、動かなくなったきっかけがわからない。 >>277 そもそも関数名に日本語使うそのセンスを疑う 漢字カタカナを関数名にグイグイ使ってました。まあ今日も明日も使っちゃうんですが。
IF文についてなのですが、 IIf(A = 0 Or B = 0 Or C = 0 And D = 0 ... という書き方の場合、「Aが0」もしくは「Bが0」もしくは「Cが0、かつDも0」のいずれかの場合、 という条件判定になるという考え方で良いでしょうか?
>>281 一緒といえば一緒ですがIF?IIF?どちらでしょう? > という書き方の場合、「Aが0」もしくは「Bが0」もしくは「Cが0、かつDも0」のいずれかの場合、 > という条件判定になるという考え方で良いでしょうか? そうですね ハッキリさせたい時には()でくくると分かり易くなりますよ こんな風に IIf((A = 0 Or B = 0) Or (C = 0 And D = 0), "true", "false") IFならモジュールにテスト用の関数作って確認できますし IIFならもっと簡単にクエリー等でテスト出来ますよ まずは試してみる事をオススメします ExcelVBAをほんの少しいじった程度ですが、同じことがAccessVBAでもできますか? たぶんできたとして、データアクセスが目的ならExcelよりAccessのほうが早いのかな。
WSH(VBScript, JScript), PowerShell からでも、 呼び出せるよ Accessはデータベースだから、 Excelよりもデータの整合性は、より安全で、 何々明細とかを扱う、本格的な業務に適している
>>284 Excel にデータエクスポートして開いてピボット集計して保管してzipにしてメール添付して送信、とかExcelの外から出来る。 xlsxファイルからDAO.RecordSetでデータを取り込んでいます dim A Do Until Rs.EOF=True For i=1 to 10 A=Rs.Fields(i).Value InsertRS.Addnew InsertRS.Fields(i).Value=Rs.Filds(i).Value Next Rs.MoveNext Loop のようにしてエクセルデータからデータベースに保存してます。 で、 A=Rs.Filds(i).Value は無意味なコードなのですが、 これがないと保存がされません。 ワンクッション?が必要なようなんです。 これ、原因や同じような症状でた人いますか?
それ以前にAddnewしてる位置がおかしい気がするんだが
書き間違えました。 実際は、Forのまえにaddnewしてnextのあとにupdateしてます。
書き間違いとか実際のコードじゃないもの出されてもなぁ お前の勘違いの可能性が圧倒的に高いと思うぞ
事実、 ワンクッションのある無しで発生するんです。
フィールドが100個くらいあるエクセルデータを同じように取り込んだときに経験したことある ケド、、、、原因調べないでおわっちゃたなwそーいえばww 原因を探るためにDebug.Print入れたら登録がされるようになって、原因解明より先に仕事・・・・となって、そーいえばそのままww
>>287 ここ、Accessスレですよ。 それとGoogleで調べれば分かるような内容の質問はどこのスレでも 禁止です。頭に叩き込んでおくといいですよ。 中文(簡体)文字のファイル名をダイアログで取得して、コピーしたり開いたりしたいんですが、"見つかりません"と言うメッセージに。 中文文字の入ったファイル名やフォルダー名を取り扱う方法かヒント頂けないですか。
二つ教えてください。 1コンボボックスコントロールの▼が反応しない時がある 2リストボックスコントロールAからデータを取得するとき A.BoundColumn=1 変数=A.ItemData(A.ListIndex) A.BoundColumn=2 変数=A.ItemData(A.ListIndex) A.BoundColumn=3 変数=A.ItemData(A.ListIndex) A.BoundColumn=4 と一つの関数内で取得する列を変更してデータを取得しようとしても、データが取得できる場合と取得できない場合が発生するのはなぜでしょうか?
Accessって新しくなればなるほど、不安定化してない? なんとなくだけど
>>297 激しく同意 Accessも立ち位置が怪しくなりつつあるのかなって。。。。 今の時代ならForguncyみたいなのがオフィスファミリーのラインナップに ほしいとこだね。 >>297 ど安定だと思ってた。難しい事しないからかもだけど。 /decompileオプションをつけてファイルを開くなんて、昔はなかったのになぁ・・・。
>>297 俺の体感ではすくなくとも2007までは順調に安定化してるけど それ以降は使ってないから知らん >>300 /decompileっていつからあるんだろうな 昔は全オブジェクトを別mdbにエクスポートとか結構頻繁にやってた記憶が >>301 97くらいからはあったはず。 でも/decompileを使うようになったのは2003以降かなぁ? むかしはmdbファイル丸ごと見事に壊れたから/decompileすら登場の出番が無く 今はVBAを入れるとスグ壊れるから/decompileが効力を発する機会が増えた うーん・・・改善してるのかもなw ただ開発をやっている人から見るとVBAをいじってる最中の異常終了が増えた 感じがするから不安定化しているように見えるのかも [Forms]![コントロール名]...... のように使う ! と フォーム.プロパティ の 「!」と「.」 の違いってなんなんでしょうか?
俺もだよ >>303 それも知らないねぇ。 ただ、外部モジュールから参照するときは ! でないとダメなんじゃなかったかな。違ったかもしれん。 モジュールって何やねん オブジェクトやオブジェクト
!はコレクションの要素を指定するときに使う .はオブジェクトのプロパティ(メンバ)を指定するときに使う
>>309 コレクションの意味がわからんのか? 要素の意味がわからんのか? 簡単に言えば、複数のうちのどれか ってことだが 何が複数なのかは!の前のやつによって違う Formsはまさにフォームのコレクション 個別のフォームならControlsが既定コレクション レコードセットだとフィールドが既定のコレクション 書く人の好みもありますかね 私はなるべく「!」ではなく「.」を使ってます
クラスのメソッドと オブジェクトのメンバの違いっしょ
>>316 同じ事を言ってるようにしか見えんが クラスとオブジェクトはどういう意味で使い分けてるんだ? メソッドとメンバはどういう意味で使い分けてるんだ? >>315 a = [Forms]![f2]![combobox1].Value a = Forms("f2").Controls("combobox1").Value 他フォームの値を利用する場合等は、こんな感じで書いてます 個人的にコレクション名が入った方が分かり易いのでこうしています どちらの書き方が良いとか悪い、というのは無いので書く人次第ですね 後者の方がメタプログラミングへの可能性が感じられて良いね
>>319 つまりどちらの書き方でも 同じ値が取得出来る フォーム内のテキストボックスで教えてください。 テキストボックスに値を入れるために選択すると、0が表示されます。 空白の状態から値を入力できるようにするには、どこの設定を変えれば良いのでしょう?
>>324 は解決しました。 フォームオープン時にVBAで0を設定していました。 他人のソースだったので気がつきませんでした。 スレ汚し失礼いたしました。 >>319 クエリの抽出条件に書いてみた。 コレクション(index)の書き方ではダメだった。 >>327 そりゃVBAの構文をクエリに書いても無理でしょうに >>328 そうなのですか、ビルダーで作成される以外の記述を試したかったのです。 お試しで書いたプログラムを納品されたクライアントがかわいそう
>>331 Accessでしょっぱい商売やってる、自営業のプログラマなんだろww ハッキリ言って取るに足らない存在。 プロジェクトのテーブルに プロジェクト番号、 作業内容Aの担当者、 作業内容Bの担当者、 作業内容Cの担当者と入力するテーブルがあり、 それとは別に工数入力テーブルで、 各担当者毎にプロジェクトに対しての作業工数を付けたいのですが どのようなリレーションシップの関係を持たせれば良いでしょうか?
>>335 リレーションって、工数入力テーブルのテーブルレイアウト決まってるのか? まあ、プロジェクト番号と担当者で参照するだけなんだけど そのプロジェクトのテーブル含めて、DB設計もうちょっとちゃんと勉強した方が良いんじゃね VBAのソースが開けなくなる現象ってどうしたらいいの? decompileつけても治らない 新しいファイル作ってインポートもダメ
>>337 数年に一回、私もそんな目にあいます。 だいたい復旧出来ないので、バックアップ欠かさずとってます。 どうにかなるなら私も知りたいですが。 やっぱみんな同じ現象に悩まされてるんだね ネットワーク共有フォルダ上だと起きやすい ネットワーク共有フォルダ使わなきゃいいんだけど、うちの情シスが変な縛りかけるからコレしか手がないし
ソースコードは、単なるテキストデータだろ? それが開けないのは、 そのデバイスがバックアップ・メンテナンス中などで、 ロックされているのかも
壊している方は ネットワーク上で直接開いたり mdbをフロントとDBに別けなかったり ほとんど同じパターンですよね >>341 Accessを使われていない方とお見かけしました mdbが破損するとソースも壊れる事があります Access2010利用 Access起動時の「コンテンツを有効化にする」を押下した直後に、関数を実行する方法はあるのでしょうか? 現在は「AutoExec」マクロから「プロシージャの実行」を行い、対象の関数を実行させていますが、Access起動時の「コンテンツを有効化にする」を押下する前にマクロが実行され、プロシージャが実行出来ない旨のエラーメッセージが表示されてしまいます。 ExcelのAuto_Open関数は「コンテンツを有効化にする」押下後に、処理が始まっていたので、それをAccessでそれを実現したいと思っています。 処理内容は「Accessウィンドウの不可視化 」「メニューバーの不可視化」「対象のフォームを開く」です。 どうかご教授をお願いいたします。
>>343 >処理内容は「Accessウィンドウの不可視化 >」「メニューバーの不可視化」「対象のフォームを開く」です。 それ全部マクロなしで設定でできる気がするけど スタートアップ用のフォーム作って起動時指定して、そのフォームのプロシジャで設定してやれば良いんじゃね >>344 ありがとうございます 確かにマクロを使用せずに設定出来ました 更にFormLoadを利用したところ「コンテンツを有効化にする」押下後に動作しました 今まで業務ではExcelばかり利用していましたので、Accessのオプションの多さ、分かりづらさ(自身の無知に起因する事が多いですが…)に戸惑っています Accessを使いこなせる人は本当にすごいと思いました ExcelのVBAはExcelというアプリケーションを操作するためのものだけど AccessのVBAはAccessを使ってアプリケーションを作成するためのものだからな
2行目”〜Accessというデータベースを操作する〜”のほうが名言ぽくなりませんか (添削ではありません。提案です)
>>347 そうは全く思わない VBAはデータベース操作のためのものではない あくまでアプリ作成のためのもの >>348 確かにExcelとは違って、アプリケーションを作っている感覚が非常に強いですね Access感を感じさせないUIにする事も簡単でしたら そのせいで、フォームのUIを美しくする為に時間がかかってしまいますw ×:Access感を感じさせないUIにする事も簡単でしたら ○:Access感を感じさせないUIにする事も簡単でした
データベースの操作もお手軽に出来て便利。 アプリ開発環境としてはどうなの? 私は零細企業の社内システム開発用として便利に使わせて頂いてます。
両者のVBAはデフォルトの参照設定が違うだけですよ VBA以外は言われている通りAccessの方がはるかに強力ですね Excelはユーザーフォームくらいです 特殊なレポート印刷なんかは無理してAccessでゴリゴリ書くより Excelで書式作ってAccessから流した込んだ方が楽だし データ操作ならAccessじゃないとキツイし それぞれ得意分野はありますよね
今更だが >>343 はセキュリティの設定だけで回避できるんじゃ? そもそもその「コンテンツを・・」が出ないようにすることのほうが重要なんでは? >>353 それはアプリケーション側ではなんとも出来ないので は? Access2010利用って書いてあるだろ? たとえそれがRuntimeだとしても ロケーションを信頼するとかで可能だろ? 不特定多数に配布するケースでも インストーラを調整することで「なんとも出来ない」は回避するものだろ? 毎回「コンテンツを・・」を表示させるほうがどうかしてるぞ? そんなの誰が信用してくれるんだ?
あれ?コンテンツ〜の話って 「プライベート ネットワーク上にある信頼できる場所を許可する] チェック ボックスをオンにして回避するって話ですか? 2010だと↑をオンにしてないと変な場所では最適化も出来なかったような
>>355 アプリケーションが自分自身の信頼性を操作するのか そんなアプリこそ信用できんわ >>356 べつにネットワーク上に限った話ではないと思うが を? MSが推奨してんのに信用できねえ てか Accessは使ってやるけどMSの言うことは聞く耳持たねてか 偏ってるな
>>358 MSが何を推奨してるのかしらんが アプリケーションの意味が通じてないのかね アプリケーションを.ACCDB(.MDBでも.ACCDEでも良いけど)に置き換えて考えてみ その域じゃ無いことが判ったからいいよw その域じゃない奴に諭される謂れわ無いわw いくつかのキー・ワードで「あぁ、あのことか」って気付けないならこれ以上は時間の無駄 おまえの言うとおりでいいよw そもそもここはAccessの板だし、おれはAccessの話をしてるんだ アプリケーションのアの字も使って無ぇw よしんばAccessで作られた業務パッケージをアプリと呼びたいなら呼べばいいが、その業務アプリを動作させるうえで 発生するセキュアに関するメッセージはAccessの基本機能で回避できる って云ってるんだ それを「信用できねえ」っつーんなら使わなくていいんじゃね? 世の中にはごまんと同様の機能を備えたアプリケーションが存在するだろ Accessに拘る理由なんざこれっぱかしも無ぇだろ 俺の文章のどれがおまえの琴線に触れたか知ったこっちゃ無いが 「ごめんな」
>>343 で質問した者です 細かい利用環境等を書いてなかった事で迷惑をかけました ごめんなさい 会社独自で開発したと思われる共有サーバシステム上に、accdbを置いて利用者は「読み取り専用」で利用します。(accdeは共有サーバ上では起動できません。) なので、Access内で設定出来るオプション以外は全く自由がきかず、共有サーバ上でaccdbを開くと必ず「コンテンツを有効化にする」ボタンが表示されてしまうのです 今回の問題自体は、FormLoad関数をExcelで言うAutoOpen代わりに使う事で解決出来たと思っています しかしAccessって、Web上で資料を探すにしても、資料が豊富なExeclVBAに比べてAccessVBAは資料が少なく、更にバージョンによって仕様が大きく変わるので大変ですね このスレのやり取りを見ているだけで非常に勉強になります ありがとうございます >>363 ファイル共有のプロトコルとかによって制約あるかもしれんが 共有フォルダを信頼できる場所に追加する事は可能だぞ ただ信頼されてないaccdb(のVBA)から、信頼できる場所を設定とか出来ないし そんなことができたら信頼できる場所の意味がないからな 利用環境:Access2010、Win7 現在、国内の物件情報をテーブルに入力して、出力フォームで参照出来るようにしています テーブルのフィールドは「物件No(主キー)」「物件名」「県」「市」「区」「町」「番地」「物件情報」です 新しいレコードが増えた場合は、入力フォームから、データを入力出来るようにしようと思っています ここでお聞きしたいのは、入力フォームで新しいレコードを登録しようとした際の「重複チェックの方法」です 物件名は、入手先の情報や、入力者の考えによって 様々な表記ゆれが生じます(例:2棟 二棟 A棟 U棟) 入力規則を設ける事によってある程度は回避できると思いますが、 回避が難しいケース(例:ライオンズマンション Lionsマンション Lion'sMansion)の場合は みなさんはどうやって重複チェックを行っているのでしょうか? 自身で考えた所では、入力フォームで新たなレコードを登録する際に、 似ている物件名があった場合は、お互いのレコードで「県」「市」「区」「町」の重複チェックを行い、最終的にユーザーに「似ている物件がありますが、これとは別の物件ですか?」と警告を出そうと思っています そうする場合は、「フリガナ」フィールドを追加する必要があると思っています しかし、もっとスマートな方法があるのではないかと思い、ここで質問させていただきました よろしくお願いします
>>365 挙げられてますが、半角数字のみなど番地の入力制限は必須でしょうね 物件名のフリガナで番地違いもチェックされるみたいですし 十分スマートだと思いますよ 自分だったら番地まで一致した時にアラート出しますね 残りは住所or物件名でソートした物件リストに丸投げしちゃいます >>365 月1くらいで住所は同じ、物件名が違うの重複チェックを動かしてリストに出すような運用にするとか。 難しいことをら考えずに済む。 時代はすでに二十一世紀なんだよ いまさらフリガナでもあるまい フィールドひとつ追加 lat,lng 緯度・経度 43.386338,144.008751 下六桁あたりで固定すれば 間違いようも無いだろ 不動産業界に身を置きながらなんでそんなことにも気付かない マップアプリに上の数字コピペしてみりゃ、世界中の誰だって間違いようも無い なに? じゃあ緯度・経度どうやって調べるだと? そのぐらいじぶんで調べろ 長押しするだけだ まぁ、ゆえに危険が危ないがな 便利って物はとてつもなく不便なものにも等しいんだ 覚悟して使え 雌阿寒岳山頂が出るはずなんですけど、違う位置を示すマップアプリ有ったら教えてください 使用禁止にしますので
まあ、ACCESSもVBAも全く関係ない話なんだが 最終的には人間が検査しないとどうしようもないんだろうなと思う 市区町村番地あたりまではルール決めて、そこまで一致なら警告でいいんじゃね
すみません、郵便番号のフィールドもあります。入力し忘れていました ・1.レコード入力時に、住所関連のフィールドを利用して重複チェックを行い、ヒットした場合は警告を出す ・2.定期的にテーブル内のレコードの重複チェックをする ・3.物件の座標を利用して重複チェックをする 上記3つの案をいただいたと思いますので 1と2を組み合わせて運用したいと考えます 3の案>>369 は、完全に自身の頭に無かったアイデアなので驚きました 入力者の稼働を考えて、負担にならなければ導入してみようと思います たくさんのレスをいただき、心から感謝致します 受けた恩を忘れず、このスレに来た別の質問者の力になれるよう精進します 警告出すとかVB脳的にダサいから 郵便番号入力してヒットしたらリストボックスに表示させて 番地を半角か全角縛りにしてヒットしたらリストボックスに表示させる リストボックスが件数ゼロなら新規入力ボタンをイナーブル あぁ俺それ作りたい
人名・地名、固有名詞系はなあ 特殊と考えたほうが無難だからな 例えば・・ 吾妻 という人名のふりがなを ある人は「あづま」と入れ別の人は「あずま」と入れてしまったり じつは「あがつま」と読みます だったり 3-11-22 という地番を三丁目11番22号 三丁目11-22だの、 宛名印刷に合わせて三丁目十一番二十二号としていたり・・ それが結構な確率で頻出するのだからやっかい それらを一律の規律で縛るのはあまりクレバーとは言えない時代になってるような 鱸 が読めないゆとりのためには「ふりがな」が必要 ってのなら意義あるだろうけど まあ、おれだけど
フォームでFilter関数使おうと思ったら IntelliSenseが効かなくて 無理に使おうとしてもエラーで使えず ???と思ったら Filterプロパティとバッティングしてた。 VBA.Filterで解決したんだけど プロパティの値ってオブジェクト変数無しでもアクセスできるのな。
>>374 フォームモジュールでそのフォームのプロパティならな 皆様、すみません フォームAに入力されているテキストボックスAの値(数値)を、 フォームB(データ登録用)を開いた際に自動的にテキストボックスBに入力させないのですが、どうしてもわかりません openform 〜 , , , , acformadd で記述しています 教えていただけないでしょうか
>>376 自動入力「させない」になってますが「させたい」って事ですよね? Form_Load もしくは Form_Open イベントに Me.テキストボックスB.Value = [Forms]![フォームB]![テキストボックスA].Value もしくは >>319 みたいに Me.テキストボックスB.Value = Forms("フォームB").Controls("テキストボックスA").Value Load、Openどちらでも動くと思いますが、適した方を使ってください コレクションに関しても好きな方を使ってください >>377 あっさりとできました ありがとうございました たしかにformのイベントでやるべきでしたね、思い付かなかったです 勉強になりました >>376 単純に DoCmd.OpenForm "フォームB", , , , acFormAdd Forms!フォームB!テキストボックスB.Value = Forms!フォームA!テキストボックスA.Value で出来ると思うけど? 今使っているACCESSデータをPC3台で共有しようと思っています。 その場合、テーブルをサーバーPcに、フォームとクエリをクライアントPCに入れて使うと良いとのことでした。 ただいま、フォームを非連結にして、ADOでの追加や更新ができるように変更中です。 質問ですが、 すべてのフォームを非連結にするべきなのでしょうか? データの追加更新のない、閲覧専用のフォームをネットワークトラフィックを考えて変更すべきでしょうか? また、分割したテーブルのあるACCESSデータをNASに入れようかとも思っているのですが、PCの場合と動作に違いはでますか?(ここは単にスペックの問題でしょうか?) どうかお時間のあるかた、教えていただけないでしょうか。
>>380 テーブルだけのファイルをネット上の共有フォルダに置いて、それのリンクテーブルとその他のオブジェクトが入ったファイルを配布して使うだけ。 フォームの作り直しはしなくて良いと思います。 >>381 >>382 ありがとうございます 今まで作ったフォームをすべて非連結にするのは難しそうなので追加更新するフォームだけにしようと思います。 >>382 その他のオブジェクトの入ったファイルは複数人で開いても問題ないのでしょうか? >>384 オブジェクトだけのファイルは各パソコンにコピーして使うの。 二次元配列からレコードにデータを入れる方法は With Rcd .AddNew For i = 0 to 99 .Fields(i).Value = x(0,i) Next .Update End With という様な地道な方法しかないんでしょうか? データを入れるのに時間が掛かるので、Excelの Range(Cells(1,1),Cells(UBound(x,1),UBound(x,2)) = x みたいな形で一気に代入出来て処理時間を短縮できる方法はないのでしょうか? あとDoCmd.TransferSpreadSheetでエクセルシートをインポートする方法も試したんですが、 Access側からExcel.Applicationを取得してワークブック開く方法だとエラーが出て、手動で開いた状態にしておくと読み込むんですが、 これはインポートする際にいちいちエクセルで開いておく必要があるんでしょうか?
>>386 SQL は長くなるけどパフォーマンス気にしてるなら INSERT VALUES 試してみれば? 多少は早くなるかもよ >>388 SQLがなんとか分かってきたので、今度やってみたいと思います。 ありがとうございました。 >>389 TransferSpreadSheetsもう少しがんばれ。 簡単で早いと思うよ。 387さんも言ってるけどEXCEL開く必要は無い。何ならEXCELがインストールされて無くてもインポートやリンクが可能なはず。 質問させてください。 コマンドボタンをクリックしたら、フォーム上の任意の位置にコンボボックスを新規作成させたいんですが、こんな事出来ますか?
似たようなことしたかったときはメニューで代用したな
右クリックでコンテキストのpopupメニューだったかな
>>394 ありがとう けど、求めてる者と違う感じです… ACCESSでフォームに直接新規で追加するのは難しい 非表示にしといてボタンクリックで表示させればいいんじゃないか
やぱ難しいですか… 必要に応じて、数に上限定めずコンボボックスを増やしたいので、表示/非表示の方法は望ましくないんです… 仮に無理なら… 質問を変えて、1フォーム中にコンボボックスはいくつまで設置出来ますか? ↑ググれば出そうですが、ついで質問ですいません。
じゃあフォームかサブフォームで帳票フォームにして詳細セクションにコンボ配置すればいいんじゃね それ以外で不定数のコンボ欲しいとか言うなら設計がおかしすぎる
帳票フォームにコンボボックス設置したら、そこで変更した内容が全部のコンボボックスに反映されるじゃん?それは困る
ちょっと言ってる意味が分からない あるレコードのコンボボックスの値が、他のレコードの値に影響すると?
最初の構想としては データが存在するフィールドにコンボボックスを表示させて、それぞれに別々のデータを入れて、新しいテーブルを生成したかった。 説明下手ですいません。
設計がおかしい もしくは Accessを使うべきではない
>>405 最終的な目的というか、なにをするためにこういった機能が欲しいのか わからない。 >データが存在するフィールドにコンボボックスを表示させて、 ここまでは何となくわかる。 フィールドのルックアップをコンボボックスにすることはできる。 ただ、あるフィールドをこのレコードはテキストボックス、 そのレコードではコンボボックスってのはできない。 どっちも似たようなものだけどねw >それぞれに別々のデータを入れて、新しいテーブルを生成したかった。 これがわからない。それぞれにってなんぞ? フィールドにデータが入力された、そのテーブルのコピーって。。。作れるよね? ホント説明下手で申し訳ない 写真を付けてみた ・作業用テーブルAで帳票フォーム作る ・(出来ない所その1)フィールド上にデータがあるレコードにだけコンボボックスを表示させたい。 ・(出来ない所その2)コンボボックスにデータを入力すると、他レコードにも同内容が入力される。←違うデータを入れたい >>407 いろいろ試したけど、コンボボックスのvisibleのプロパティを 帳票フォームの詳細のpaintイベントで操作できないので無理かなと。 背景色は変えられるみたいだから、コンボボックス全部並べて 背景色で区別できるようにするくらいしかできないかも。 書かれている通りの物が欲しいのであれば、.Netで作るしかないかなぁと。 コンボボックスには何を表示/入力させたいんだ? すくなくとも その2 はできるはずだと思うが
コンボボックスには何を表示/入力させたいんだ? すくなくとも その2 はできるはずだと思うが
ひとつのフォームにひとつのコンボボックスのフォームをフィールド分作って OpenしたりCloseしたりすればいいんじゃない? フォームの表示位置は指定できるんだし、作り込めばカッコよくなりそう(俺はやらないけど)
受ける会社大丈夫? 下記の条件が全て当てはまる会社にご注意下さい。 ・IT系 in tokyo ・「社名 労基」でググると過去の2chスレが出てくる ・転職会議で2.5点
結構前に質問した者だけど 設計変更して、無事にアプリが完成しました 色々アドバイスくれた人サンキューでした
質問です 現在Accessでチェックシートを作成しています。 内容は以下の通りです。 ・目的:接客の際の必須項目の聞き取り漏れ、説明漏れを防ぐ ・仕様の概要:必須項目の各チェックボックスにチェックが入っていなければ各チェックボックスの背景を赤塗り チェックが入っていれば緑塗り 注意が必要な組み合わせにチェックをした際に警告メッセージを出す等の、相関チェックを導入 フォームで入力した値はテーブルに格納。 対応1件につき、1レコード。 ・環境:win7 access2010 上記仕様のチェックシートをAccessのフォームで作成していますが、 別のレコードに移動するとチェックボックスの色が 画面遷移前のレコードの色のままになってしまいます。 レコードを移動する度に、移動先のフィールドの値に 適した色に変えたいと思っています。 自身の考えでは、レコード移動をする度に、移動後のレコードの チェックボックスの値を取得。 値に適した色に変更と考えていますが Access標準装備の機能等で、 もっとスマートな方法があるのではないかと思ったので、ここに質問に来ました 皆様のお知恵をお貸しください どうかよろしくお願い致します
条件付き書式って機能があるけど、2007で試したら、チェックボックスには適用できないっぽいな >別のレコードに移動するとチェックボックスの色が >画面遷移前のレコードの色のままになってしまいます 今どうやってやってるんだ?
>>419 今は下記のようにコントロールの背景色を変えています Checkboxの初期背景色はコントロールのプロパティで赤を選択しています private sub Checkbox1_Click() If Checkbox.Value = True then Checkbox1.Backcolor = 緑 Else Checkbox1.Backcolor = 赤 End If End Sub >>420 基本的には同じ事をレコード移動時にやるだけだな ところで2007のCheckboxにはBackcolorとか無いっぽいけど、2010じゃあるのか >>421 でもこれだとレコード移動時に、反映されないんですよね 1.リアルタイムで色を変えるコード 2.レコード移動時に色を変えるコード 2倍のコーディングが必要になる点がスマートじゃないと思ってます 今更ですが「全相関チェック(警告メッセージ含む) & 全チェックボックスの色変更」の 判定を行うサブルーチンを1つ作り、 「レコード移動時」「チェックボックスのチェック時」のイベントで 都度サブルーチンを呼び出しすれば 結構スマートになるのかな?と思いました ただ、チェックをする度にサブルーチンが実行され、 関係の無い箇所まで判定されてしまうと チェックボックスの数次第で重くなる可能性がありますね また、相関チェック(メッセージ有)に引っかかる組み合わせになっていると、 関係のないチェックをした際にも メッセージが出てしまうので、操作性が損なわれてしまいますね 入力不可能なテキストボックスをチェックボックスの下に配置して条件付き書式設定とか まあ、やりようはあるんだが 条件付き書式は、コード見てもプロパティ見てもその設定が分からんからなぁ 個人的には好きではない
>>424 仰る通り確かに、他者の事を考えると 条件付き書式だらけになってしまうってのも考える物ですね… 悩ましいです 男のくせに「悩ましい」とか使う奴の言動は一切信用しないことにしている これっぱかしもだ 微塵もだ 毛一厘もだ うじゃじゃけてるヒマあったら答え出せ できるのか? できないのか? できないなら去れ できるなら結果出せ 以上
>>426 >男のくせに 単純に疑問です。何を根拠にして男と判断したのでしょうか? VBAじゃないんだが助けてくれ〜。Access を複数人で使用する時について質問させて下さい。 テストのために、Access(2010)でこういう簡単なシステムを作りました。 バックエンド 2フィールド/レコードが数レコードだけあるテーブルが1つ フロントエンド リンクテーブルと、そのテーブルの全フィールドを表示するクエリ (クエリのレコードロックプロパティ:編集済みレコード) ※ 全 accdb ファイルについて、オプションから 「共有モード」「編集済みレコード」レコードレベルでロックして開く」を指定済み でさて、フロントエンドA・Bを開き、Aがレコードを編集する時に、 よく解らないきっかけでBのほうで複数レコードに渡ってロックされる事態になり (これは全レコードの時もあるし、1行より多く全レコードより少ない時もあります)、 またよく解らないきっかけでその事態が解消されることがあるのに気づいたのですが、 この異常事態の原因は何で、対策はどうすればいいでしょうか? 検索しても手持ちの書籍でも解らずお手上げでして、 どなたかご助言を下さればありがたいです。
>>428 それがわからないなら、諦めろ。 外注に出そうな。 良くわからないきっかけとやらを特定する エスパーを探す お好きな方で
428ですが先輩の皆様非常に手厳しいですね 何とか自分で特定できました おじゃましました
自分で解決できるなら質問しないでください うざいだけです
解決した結果というか原因を書いておけば、後輩が喜ぶよ。
>>434 俺は使ってるぞ! ちょっと癖はあるがAccess最強伝説は不滅さ! ただし小さいシステムに限る。。。。 MSDEとかSQL Serverと組み合わせれば少しはレベルが上がりますかね?
>>436 いまそこまでするならWebで使えるようなスキルを身につけてしまう事も考えちゃいますね。。。。phpとかいい感じに枯れてきてるよう思います access + django 試したら意外といけた
>>438 少しだけkwsk Pythonのフレームワークだよね? 今からweb連携て php覚える前に俺のいろいろが枯れてるのを何とかしてくれ
>>441 いやーWebでしょう。 限られた環境ならネイティブアプリでもいいんでしょうけど。。 どこまで広げるかによるけどね。 入力はネイティブ、閲覧はWebという感じに住み分けるのも いいのかもしれない。 >>442 >入力はネイティブ、閲覧はWeb そうそう それそれ カラムの中で、空白の場合は、空白でない上のデータもってくるってクエリを作りたいのですが、どのようにすればできますか? Excelでは可能なのですが、百万件以上のテーブルのためできません。
>>444 原則としてRDBのテーブルの行に、上とか下とか順序はないんだが 頑張ればSQL(クエリ)だけで出来なくもないけど、簡単なVBAマクロ作って流せばいいんじゃね ソート後の順序で真上のレコードっていう条件が必要だろう
>>443 マイクロソフトさんこんな需要がありますよー アクセスこれからも面倒見てね >>447 MySQLに接続して閲覧側はウェブでAccess側は入出力側で実現。 でも、MSはAccessはいずれ亡くすと思うよ。年々需要が減ってる LightSwitchってその後どうなったのかな?
フォームやレポートの作成が簡単で助かってるんだけど、Accessに匹敵するほどお手軽簡単な開発環境あるのですか?
Filemakerとどっちがいいの わりとまじで質問
どっちもどっちだろうな。 バックエンドにもよるだろうけど、いつも使ってる方とか得意な方で開発するだろ。 指定があるときはそれに従うだけだから比べなくていい。 FileMakerはiPadなんかで使えるっていうのがウリみたいだけど。
Accessのほうが情報は手に入れやすいんじゃない?
結局のところAccessが担当してた部分ってETLツールに置き換えられてきてるってことかな?入力は除いてだけど。
何が結局のところだよ ETL言いたいだけちゃうんかと そもそもAccessでビッグデータなんか扱えくぇrちゅいおpsdfg
>>460 人それぞれだと思うが、おいらの使い方ならビックじゃないデータでもETLは結構いい選択肢だと思たあるよ 定形業務にはいいんじゃないか? あるレポートが、あるクエリを元に作成されていて、そのクエリのレコード毎に、レポートをPDF出力し、出力先はまた別のクエリのフルパス文字内との元クエリデータとの一致で決めたいのですが、ご教示いただけないでしょうか?
>>465 レポートをレコード毎にPDF出力して、クエリにあるパスに保存するところ >>466 「MS-Accessのレポートをページ毎にPDF化する」でググって一番上のページ そこみて、わからないとこは自分で勉強してくれ >>466 あのさ、ここはお前の願望を叶えるスレじゃないの。 わからない所を聞く為のスレなわけ。 お前のそれは1機能まるごと作ってここにコード貼れって命令してるに過ぎない。自分でコードもはらずにね。 VBAでSELECT文を作って、Formに渡してRequeryして結果を表示しています。 テキストボックスに表示するテキストデータが途中で切れているという現象がおきました。 別のフォームで同じデータを同じようにテキストボックスに表示させると、全部のデータがきちんと表示されます。 スクロールとかではありません。文字列がぶつっ!と切れて途中までしか表示されないのです。 この現象の原因とかわかる人いますでしょうか?
>>470 なぞなぞかよっ!w テキストボックスのプロパティを良く見た? >>470 そおテキストボックスどっかからコピペしてきたと見た >>471 ,>>472 表示ができているテキストボックスと同じプロパティです。 でも、1000件データのうち、1つだけ200文字くらいの文字列なんですが、100文字くらいの ところでブツッ!って切れてるんです。 他のデータで同じくらいのサイズの文字列は問題なく表示されています。 SQLが悪いのかと思って、Debug.PrintしてSQLを取り出して、クエリを実行してみると、ちゃんと文字列が全部表示されています。 文字コードかなんかでしょうか? でも、同じ文字列を別のフォームにあるテキストボックスで表示可能なんです。(ToT) >>473 同じ方法で出してるの? ヌル文字ってVBAは関係なかったっけ? SQLは、違います。 あぁ・・・・その実験やってなかった・・・。 やってから報告します・・・。
VBAの文字列はヌル文字ではターミネートされない 改行とか入って、見えなくなってるだけとかじゃないのか
union を union all にしたら現象がでなくなりました。 (ヽ´ω`)でもクエリデザインから実行するとunionでも普通に表示されるんだよなぁ、、、
>>477 重複業があるんじゃないの? 目視で見てるのは違う行とかないよね。 >>478 質疑回答IDも一致してて、単純なSELECTぶんなので、、 超レアなバグなのかなと メモ型あたりでunionの同一行判定でなんかあるかもしれんけど どう考えても>>480 の勘違いの可能性の方か高いと思うぞ まあACCESSのバージョンもテーブルの種類もSQLもデータをどうやって表示してるかも書かんような奴の話は 聞くだけ無駄かもしれん メモ型ってgroup by 出来なかった気がしたのでちょっと調べた どうも、TEXT型にキャストして判定するみたいだな なので、255文字目までが同一のメモ型は同一と判定される distinctで採択されるのがどっちの行かはわからんが とりあえずメモ型の制限だからメモ型使って値操作するのが悪いと言う結論だな 個人的にはエラーにしてほしいところだし、昔はエラーになってた気がするんだが俺の気のせいだろうか
あと、unionは単純なSQLとは言えんし はなからunionしてるSQLとテーブルレイアウト出してればもっと解決早かっただろうに 全く同じ現象出てるって書いてるブログあるぞ
あのっ某所でAccessはフロントエンドのみの製品で RDB自体はOS標準で使えますぜgff・・・ みたいな内容見たんだけど 本当なんです?
>>484 んだ。 だから、ExcelがあればVBAで組める人がいるなら、ぶっちゃけいらん。 ちゅーかVBScriptからもいけるじゃん 後付けコンポーネントってわけでもなさそうだし Officeいらないのかもしかして
>>487-488 >Jetデータベースエンジンとは、Microsoft社が開発したリレーショナルデータベースエンジン。Microsoft Access用に開発されたもので、現在ではWindowsに統合され、様々な製品から利用されている。 だそうですよ >>491 トン jetってAccess買わなくてもつかえるんだ。 ランタイムはしってたけど windowsに統合されたjetの使い方はどうすれば?
レポートをレコードごとに、pdf出力したく daoで以下のような感じで書いたんだが。 ファイルのフルパスが書いてある別クエリの中のレコードとレポートの項目が合致するレコードのフルパスにpdfを出力したいんだがどうしたらいいのかわからない。 Do Until rs.EOF DoCmd.OpenReport 〜 DoCmd.OutputTo acOutputReport, , acFormatPDF, "ファイルパス.pdf" DoCmd.Close acReport, レポート名 rs.MoveNext Loop
JETだけでDB組むとか何の拷問だよ 素直にAccess使え
で、Accessって 何に使えばいいの? (´・ω・`)
>>498 一人で完結する仕事で面倒臭くて外注する予算もなくてなことを 自動化するのに使ってるよ。だから保守も自分でしかできない(笑) そんな仕事じゃないか? 社内の統計担当とかそんなポジションの人かな? 社内の簡単な統計ならほんと楽ちん。 Access使えるか使えないかでどえらい作業能力の差が生まれる。
access2013でフォームからの入力期間の金額を集計してレポート作成をしようとしています。 vbaでリボンにあるレポートボタンを押下した動作と同じコードは存在しますでしょうか。
>>505 ACCESSにマクロの記録は無かったと思ったが 2013とかだと出来るようになってるのか? >>505 は?馬鹿はいちいちスレに出張って来るなよww 何がマクロの操作を記録だ馬鹿が。 普通にフォームと同じソースの「れぽーとほげ」を用意しておいて DoCmd, OpenReport "れぽーとほげ", acViewPreview ではダメな理由があるのかな? フォーム上でレポートに応用できるように画面設計 作り込むよりは専用のレポートで別制作しといたほうが何十倍も効率いいだろうにな
>>504 ちょっと出来ない事があるとVBAに頼るのはよくない。 Officeの使い方をもっと勉強してからVBAに手を出すべきだよ。 「パラメータクエリ」と「フォーム」で作ればなんとかなるかな。 というわけで、VBA必要ないので↑の2つのキーワードでggrks フォームからfrom日付-to日付を入力 ↓ テーブルから購入日が対象範囲のデータ取得 テーブル構造は シーケンスno.,氏名,購入品1,購入日1(購入日、購入品は6まで存在) ↓ クロス集計にて月毎の金額を集計 ↓ レポートに出力 入力する日付によってフィールド数が可変なため、レポートの作成はしていないです。 vbaを使う必要がなく可変レポートが作成出来るならスルーして下さい
>>513 クエリ作っときゃいいんじゃないの?集計の。 フィールド数が可変とはなんぞ。 >>513 テーブルの基本設計からやり直せ。 購入品と購入日が1〜6って無いと思います。 >>515 くそなテーブルだと思ってますが自分が作ったテーブルではないので変更出来ません >>516 レポート用にテーブル作っちゃうことはできないの? >>516 だからクエリ作れよ。 select id,1 as 区分,氏名,購入日1 as 購入日,購入品1 as 購入品 union select id,2 as 区分,氏名,購入日2 as 購入日,購入品2 as 購入品 : select id,6 as 区分,氏名,購入日6 as 購入日,購入品6 as 購入品 で、あとはそれに対して、fromToでフィルタ掛ければいいんでないの? >>514 入力した期間に応じて月が増減します 集計用のクエリは作成したのでリボンにあるレポートボタン同様に自動でリポート作成出来ないかと思ってます >>519 帳票一枚に並べられる分の月数を元からつくっとけ。 >>517 くえりをそのままレポートは難しそうだったのでテーブル化はしてあります 複雑になってるクエリが循環参照になってるようなのだが、読み解かずにテーブル作成して逃げようとしたらまたエラーなんとかならんかなー
>>519 クエリ出来てるなら、レポート作って保存しておけば好きなときに開くだけじゃん vbaでfilecopy(fsoも含む)でリムーバブルディスクにファイルをコピーするとハードウェアの安全な取り外しで ファイルが使用中とかでできない。まぁ警告のダイアログで続行を押すと取り外せるんだけど、これやると マイコンピュータからリムーバブルディスクが消えなかったりすることがある。 accessを終了すると普通に取り外せるんだけど、これをなんとかできないかなぁ。
>>524 Fsoでやるなら、 宣言で as new ...とかしない、最後にNothing入れとくを徹底したら無くなるんじゃないかな。 カレントフォルダとカレントドライブを明示的に リムーバブルじゃないとこに設定してやれば行ける見たいな事を聞いたことがある
>>524 それ、使用したメソッドがファイル掴んだままで、開放してないからでしょ。ちゃんとプログラミングのイロハ身につけてたらやらない。 使ったら必ず開放する。VBAユーザはなぜか使いっぱなしが多い。 .NETなんかだとマネージドは書いてもほぼ意味なかったりで使いっ放し推奨
>>525 、527 Dim objFileSys As Object Set objFileSys = CreateObject("Scripting.FileSystemObject") objFileSys.CopyFile 元ファイル, コピー先フォルダ & "\" Set objFileSys = Nothing copyfileの部分だけをかいつまんで書くとこんな感じだけど、解放の仕方を教えてくれないか。 リムーバブルディスクにコピーしたファイルは開けるし削除もできるからロックされた感じじゃないんだよね。 安全なハードウェアの取り外しだけがうまくいかないんだよ。 getdriveとか適当なのを実行してみたら? カレントが移動するかも。
>>526 、530 ありがとう。この方法で解決した。 ChDrive "c" って1行追加しただけでOKでした。言われないと気付かなかったから助かりました。 他のみなさんもありがとう。 重複した文言の多いcsvファイルの情報を読み込む時に、重複しない文言を蓄えたテーブルと、 文言テーブルのIDだけを入力したテーブルに分けて管理する事で容量を節約しようと思ってるんですが、 人が読める様にIDから元の文言を復元したテーブルを作りたいと思った時、 VBAで文言一つ一つ代入したテーブルを新たに作るしかないですかね?
IDでテーブル結合したview作るなりクエリにすりゃいいんじゃないの どちらにしろVBAとか関係ないと思う
mdbファイルのテーブル構造をADO.NET SqlCommandで取り出す方法を知りたいです。(データ定義言語的な取り出し) DoCmd.TransferDatabase acExportでできるテーブル構造のコピーと同じことを,ADO.NETで,元データなしで実現(テーブル生成)したり プログラム側が想定するテーブル構造と一致するか確認する処理をテーブル生成→比較とすることで一般化したりしたいのですが
Accessでプロマネの仕事頼まれたけど断ったわ もうVisualStudioが無いと何もできない体になってしまった
>>540 そういういかにも日本的で世界で通用しない回答は誰も期待していないし、 君みたいな奴は誰も求めていない。 >>541 君には悲しいかもしれないけど、ここ日本なのよね テーブルにインポートするとたまに失敗する変なゴミデータが入ったエクセルファイルをVBAでテーブルに登録しようとしてます。1レコード100フィールドほどあるもので、addnewで登録すると100件で20秒ほど掛かってしまいます。 Insertでも23秒でした。 全部で10万件あるのですが、高速登録する方法ないでしょうか?
>>543 配列で受けると速くなるかもしれない dim ary as variant ary = Range("A1").CurrentRegion.value ' 1オリジンの2次元配列 ゴミは数式やエラー値が混ざってるんだろうから配列にした段階で適当に変換する dim row, col for row = lbound(ary(), 1) to ubound(ary(), 1) for col= lbound(ary(), 2) to ubound(ary(), 2) if ゴミ?(ary(row, col)) then ary(row, col) = ゴミ処理(ary(row, col)) next next この後でテーブル登録する
>>543 パフォーマンス重視ならレコードセットやExcelオブジェクトは扱わない方が良いですよ 1.インポート定義でインポート 2.リンクテーブルを作って追加クエリ 3.SQL の IN 句使って INSERT 4.OLE DB の Jet か ACE で接続して INSERT などなど... ゴミが混ざるならゴミを許容する作業テーブルにインポートしてから後始末をするとか 処理の仕方も色々あると思います、頑張ってください 書き忘れ インポート定義は文字列切り詰めなどが起きるかもしれないので 使うなら想定しておいた方が良いです
レコード長とかPCのスペックとかもわからんが コードでもっと早くできる余地がいっぱいある気がするぞ というか、純粋な追加で時間かかってるのか? エラーチェックに時間かかってるんじゃないのか
access2013の質問がしたいのですがここでは不可でしょうか?探してもスレが見つからなかったので誘導していただけないでしょうか?
access 2013での質問です。 テーブルAの構成要素は【id(オートナンバー)、写真(添付ファイルで複数値を持つフィールド)】となっております。 この状態で、テーブルAの任意のIDに写真が入っているか否かを確認したいと考えております。 今のところ dim RS As DAO.Recordset2 set RS = CurrentDb.OpenRecordset(
すみません、途切れました set RS = CurrentDb.OpenRecordset("テーブルA") With RS .FindFirst "id = ○" End With で任意のIDに移動できるのですが、そこから写真フィールドにデータが入っているか否かをどのように確認したら良いかが分かりません。 一応複数値を持つフィールドということから Dim RS_写真 As DAO.Recordset2 Set RS_写真 = RS.Fields("写真").Value と代入し、 If RS_写真.Fields("FileName") = "" Then MsgBox "hoge" End If というように、if分を使ってみたのですが、上手く行きません。 お忙しいところ恐縮ですが、アドバイスを戴けると幸いです。
添付ファイルで複数値を持つフィールド ってのがよくわからん そのフィールドのデータ型と 実際に内容をセットしてるコード出してみ
>>555 そのテーブルをデザインビューで開いたときに、そのフィールのデータ型は何になってる? フォームでセットとは具体的にどうやってるんだ? > If RS_写真.Fields("FileName") = "" Then FileData? データが入ってたらFileNameとは何を指すのだ
フィールドに複数データが入るんだけど、ファイル名とファイル本体がセットになって入るイメージなんじゃないかな。 >>553 は配列のような捉え方で書いてるんだと思う。 フィールドがnullなのかを見ればいいんだろうけど、ファイル名を指定してそのファイル本体の有無を見たいのかな。 でもそれだとファイル名のみがあってファイル本体がないってことがあり得ることが前提になると思うんだけど。 添付ファイル型なら RS_写真のEOFと(MoveLastしてから)RecordCountみれば、添付されてるファイルの件数はわかる
皆様、お返事ありがとうございます。 当該フィールドは「添付ファイル」型です。 「添付ファイル」型の写真フィールドは、下位フィールド?として写真.FileData / 写真.FileName / 写真.FileTypeを持っているため、写真.FileNameの有無でNULLか否かを確認しようとしていました。 >>557 さんと >>563 さんのお陰でNULLか否かはRS_写真のEOFを見れば良いだけと気づき、 何とかやりたい操作ができそうです。 この度はご指摘戴き、誠にありがとうございました。 Access2010のVBAの動作にて質問です。 現在クエリのデータをCSV形式にて出力をするために DoCmd.TransferText acExportDelim, ,
途中で切れてしまったので再度質問させていただきます。 Access2010のVBAの動作にて質問です。 現在クエリのデータをCSV形式にて出力をするために DoCmd.TransferText acExportDelim, ,"クエリ名","出力先\ファイル名.csv" と言う文を使っているのですが、クエリの行が複数の場合は1行ごとに出力をしたいのですがどうすればよろしいのでしょうか。
>>566 連続出力するなら レコードセット開いてレコード毎に書き出しループ 連続出力しないなら フォーム上の値を参照するパラメータクエリ作って DoCmd.TransferTextで書き出し ACCESS VBAでoracleのデータを読み書きする場合は リンクテーブルを作ってやるのが普通でしょうか? それともリンクせずに直接ORACLEにアクセスするのがよいでしょうか?
べつにSQL ServerでもORACLEでも同じだとおもうけど ケースバイケースとしか言えん
リンク使わないなら別にAccessじゃなくても良いよね、って回答はダメ?
ハマってしまいました、cell とoffsetとloopの関係が解明できません。 エクセルデータから一行ずつhtmlファイルを作成するということをしたいです。 minitemplatorを使っています。 試しに3行でつくってみるとファイル名は変わるのですが、 set変数の箇所が一行目のままかわりません。 ↓こんなVBAにしてあります Private Const START_CELL =
すみません Private Const START_CELL = "T3" Public Sub PushButton() ' Dim Cell As Range Dim Temp As MiniTemplator Set Temp = New MiniTemplator 'テンプレートファイルを読み込みます。 Temp.ReadTemplateFromFile ThisWorkbook.Path & "\h00_0.html" 'セルのスタート位置を設定します。 Set Cell = Range(START_CELL) '現在アクティブになっているシートの最終行まで以下を繰り返します。 Do While Cell.Row <= ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row Temp.SetVariable "TITLE", Cell.Offset(0, 1).Value Temp.SetVariable "CHAPTER", Cell.Offset(0, 2).Value Temp.SetVariable "PREVCHAPTER", Cell.Offset(0, 3).Value Temp.SetVariable "PREVPAGE", Cell.Offset(0, 4).Value Temp.SetVariable "INDEX", Cell.Offset(0, 5).Value Temp.SetVariable "NEXTPAGE", Cell.Offset(0, 6).Value Temp.SetVariable "NEXTCHAPTER", Cell.Offset(0, 7).Value Temp.AddBlock "htmls" Temp.GenerateOutputToFile ThisWorkbook.Path & "\" & Cell & ".html" Set Cell = Cell.Offset(1, 0) Loop End Sub
申し訳ない!accessの方に書き込んでしまいました、excelの方へ移動いたしますorz
>>570 メインのDBはSQLServerやACCDBだけど、特定のデータだけ 別DBのORACLEからとって来たいなんて要件だったりしたら ORACLEにリンクテーブル作るほどでは無かったりするかもしれんだろ >>576 何が言いたいのかわからん リンクテーブルかそれ以外でのアクセスかって質問に対して ACCCESSならリンクテーブル一択だろ、見たいな事を言うから そうじゃない状況もあるだろって言ってるんだが >>577 質問者はOracleをAccessから操作する場合はどちらかを聞いている訳で その状況ならリンクで良いんじゃね、と答えただけ そこにお宅が勘違いして質問にないSQL Server絡めて否定してきたから ちゃんと質問内容見ろよ、と返しただけ Accessでエクセルファイル読もうと思ってExcelオブジェクトを作成した時、 既にエクセルを立ち上げているとマクロの挙動がおかしくなったり、 あるいは後からエクセルを立ち上げようとするとマクロが終了するまで画面が白いままなのですが、 これを避けてAccess側のみで扱えるエクセルオブジェクトを作ったり、あるいはエクセルと併用したりという事は出来ないでしょうか? スプレッドシートのインポートは暗号化の影響で上手くいかないので、エクセルオブジェクトを通す必要があります。
つか普通にやればそうなってたと思ったけど CreateObjectって、インスタンスあったらそれ掴んで返すのか?
vbaでも知りたいのですが、accessで列見出しを行見出しにするには、どんなコードを書けばいいでしょうか?クロス集計ではできませんでした。
>>585 行列入替えがしたいっての?それ、データベースのルールに反してる わけだが。 クロス集計クエリの場合にはデータ元がきちんとクロス集計できる形に なっていれば、できないということはない。 金はあるけど時間がない 経験値100倍くらいになる課金ないんか
>>587 あえて、経験値にした辺りに謙虚さがあるな 俺だったら、最初からスキルボックス(中身はランダム)みたいな課金する。 日常的にAccessのピボットテーブルをCtrl+A Ctrl+Cして Excelに貼り付けてるんですが これをVBAできませんでしょうか
>>592 Googleスプレッドシートは簡単に関数でソレが実現できます。 ちなみに、Accessでは「貼り付ける」行為は出来なくはないです。ただ、オートメーションでやる ならそういうことになりますが、普通はExcel上でピボットを作成スべきでしょう。 >>593 もうすこしヒントを どのオブジェクトプロパティをいじればいいとか 全選択なら単にエクセルにエクスポートすればいいんじゃないの?
質問 Access2010 突然、フォームのデータシートビューで列を入れ替えてもその状態が保存されないようになってしまいました。 いろいろと原因を調べてみるとOpenやLoadイベントでフィルター設定を行うとそんなトラブルが起こってしまうようなのです。 Private Sub Form_Open(Cancel As Integer) Me.Filter = "ID>3" '例 Me.FilterOn = True End Sub 皆さんの所でも再現出来ますでしょうか ちなみに自宅のAccess2002ではこういった異常な動作は起こりませんでした またこれって有名なバグとかなんでしょうか
access 2010 windows7 DoCmd.OutputTo acReport,
access 2010 windows7 DoCmd.OutputTo acReport, "hoge_table", acFormatXLS, "C:\hoge.xls" レポートファイルをxlsへ出力するときに 「実行時エラー 2587 出力が完了できません」が 出てきてしまいます。 実行時エラー2587を検索しても情報が出てこない為、 困っています。 どなたか何が原因かわかりますでしょうか? 先月までは機能していたんですが、 今月から急に上記エラーが出てくるようになりました。
プリンタが変わった レポートの書式が変わった(文字コード系) 再インストールで復帰した というようなresが 英語のフォーラムだけど 手動でエクスポートした場合も同じエラーかどうか ん?レポートファイルをxlsへ? "hoge_table" テーブルをxlsへの間違い? テーブルをcsv出力してxlsなら? とかいろいろ
データが増えてリソース不足、ってのが一番考えられる理由だけど 何のリソースかはわからんが もうちょっと詳細なエラー内容ないのかね
今、先月のhoge_tableをoutoputしたらどうなの
フォーム上でリストボックスを選択すると、その他のテキストボックスに値が入る仕組みってどうやったらできますか?
Me.[その他のテキストボックス] = Me.[リストボックス].Value とか Me.[その他のテキストボックス] = Me.[リストボックス].Column(n) とかを リストボックス クリック時イベントに仕込む うろ覚え
>>605 後者の場合で、表示させたデータを別のテーブルに保存させるにはどうすればいいですか? ワークテーブルに入れるなりしてSQLとか追加クエリとか
>>604 リストボックスのコントロールソースをテキストボックスのコントロールソースにも指定 もしくは テキストボックスのコントロールソースにリストボックス自身を指定 リストボックスのみ編集可設定 ExcelのシートからADOでデータ取り込みをやろうとしてます ルックアップで別のテーブルを参照しているフィールドを持つテーブルにレコードを追加したいのですが 具体的にはExcelシートには都道府県名が文字列で入っていて Accessのテーブルは都道府県名は別テーブルを参照して数値で持っています 色々試してみたのですが 追加先テーブルの数値型のフィールドには数値しか入力できず 参照している先のテーブルの"東京都"などの文字列データはUpdateでエラーが出ます (あたりまえでしょうけど) こういった参照先データで入力したい場合 なにか良い方法があるのでしょうか?
>>610 やっぱり それしか無いですかね 何万行もあったから データ入力する度に別テーブルのFindFirstとかやってID見つけるの コスト凄いかと思ってたんですが やってみたら それほど時間かからなかったです 都道府県名が入ってるシートって郵便番号のあれですかね まぁ質問の意味がよくわかんないから無視して結構です
SQLでテキストデータを取り込む時、ヘッダー行を任意の位置で指定する事は出来ますか? 読み込もうとしているcsvファイルのヘッダー行が3行目なので、この位置から読み込ませたいのです。 色々調べたんですが、外部データベースを取り込む際のキーワードがなかなか出てこず苦戦しています。
開始行を含めるか含めないかしかなかった様に思う。 取り込んでしまってからヘッダー行を消すSQL実行したらはやいかも。
>>614 ありがとうございます。 HDR=Noか、もしくはVBAで処理する様にします。 SQLで質問ですが、 select * from DATATBL group by NAME こんな感じで集計させても結果が0になってしまうのですが、書式間違ってますか? ちなみにC++BuilderからMicrosoft.Jet.OLEDB.4.0でmdbファイル操作してます。
select NAME, COUNT(*) from DATATBL group by NAME
>>617 返答ありがとうございます。 しかしながら selectでNAMEのみを指定すると項目が足らんみたいなエラーが出てしまいます。 select *, COUNT(*) from DATATBL group by NAME こうするとエラーは出ませんが、結果はやはり0になってしまいます >>617 すみません、他の箇所でエラーが出ていました。 正常にselectする事ができました。ありがとうございました。 またSQLで質問ですが、 DATEでソートしてからNAMEをグループ化したいので select NAME from (select * from TESTTABLE order by DATE) as group by NAME 上記のようにしたのですが結果が0になってしまいます。 何処が間違ってますか?
GROUP BY 後の順序は保証されてなかったと思う 確実にやるならグループ化してからソート
すみませんが教えて下さい。 Access2010でフォームにWebブラウザコントロールを張り、 Me![ScrollInfo].Navigate
すみませんが教えて下さい。 Access2010でフォームにWebブラウザコントロールを張り、 Me![ScrollInfo].Navigate で正常にページが表示されています。 そのフォームを右クリックでデザインビューに切り替えると以下のエラーが出来ます。 StatusTextChange でエラーが発生しました(以下略) ちなみに×ボタンで普通に閉じるとこのエラーは発生しません。 Access2016でも同様でした。 ご存知の方がいらっしゃいましたらお願い致します。
sendobjectでレポートをPDFで添付して送ろうとすると 添付されたファイル名が・.pdfになるのは仕様ですかね? ACCESSとOutlookは2013です ただAccessのファイルはmdb形式
添付ファイルが"元となったレポート名".pdfになるのかと思っていたのだけど、違うのかなという疑問
通じないか…すまん Docmd.Sendobjectを使ってレポートをPDFに変換してメール送信したい 実行はできているが、変換されてメールに添付されたファイル名が・.pdfになってしまう。 これがなぜ・になるか知りたい。 レポートのオブジェクト名は・ではない。 日本語名がNGなのか?
そう思うなら ASCII のファイル名とか UTF-8 のファイル名試してみれば?
>>630 MIMEでiso-2022-jpとかにしてみ レポートの表題がファイル名になることがわかった。 レスくれた方ありがとう。
?Eval("'山ー田' Like '*山田*'") -1 何で? Win7x64+Acs2010
>>634 そりゃ真ん中に入ってるからだと思うが。 -1はTrueだから一致することについて疑問に思ってるのでは
>>634 Evalの引数が単なる文字列として認識されてるからかも ?Eval("山ー田" Like "*山田*") だと期待する結果になる すまん環境書き忘れた Win10 x64, Access2016 32bit
文字判定だから、アクセント無視で長音記号が無視されてるだけだと思ったけど ?Eval("'山xー田' Like '*山田*'") も-1だな ?Eval("'山ーx田' Like '*山田*'") は0だった 長音記号無視するルールになんかあるのかもしれん
利用環境 access2010 Windows7 上記環境で同時接続400人程度のファイルを作成しようとしています 管理者2〜3人が100〜1000件程度のレコードを編集しながら 400人程度が編集したレコードを参照。参照後に自動で既読フラグを access内のテーブルに入力する仕組みです 上記イメージで利用する場合、400人が同時に既読情報を DBに対して入力することになります。 (実際は入力するタイミングがずれるので同時編集は 多くて100人程度になりそうです) Accessは負荷に耐えきれるのでしょうか? 400人の既読情報を40個のテーブルに分割して リンクテーブルで負荷を分散させれば実用範囲になるのでしょうか? 社内セキュリティの制約でAccessしか利用が出来ない状態なので 他のツールを使用することは出来ないです お手数をおかけしますが、お分かりの方がいらっしゃれば ご教授をお願い致します
全員が同じaccess開くならやめとけ >400人の既読情報を40個のテーブルに分割して >リンクテーブルで負荷を分散させれば実用範囲になるのでしょうか? そこまで分けなくても テーブル専用mdbと参照専用mdbに分けて 参照専用mdbを400人全員ローカルに置く 参照専用mdbからテーブル専用mdbにリンクするだけでいいんじゃね
>>641 そこまで社内セキュリティにうるさい会社で勝手にやっていい範囲のシステムだとも思えんけど >Windows7 この時点で、ライセンス違反の可能性が非常に高い おそらく同時接続制限もかかる フロントエンドはアクセスでもいいけど、どう考えてもバックエンドにまともなDB入れるべき てか利用者400人のシステムで「同時」書き込み100とかなかなか行かないけどな たぶんライセンス無視すれば>>642 のやり方で行けるだろ ほんとに同時書き込みが100あるならACCDBみたいなファイル共有型のDBじゃ無謀 >>642 返信ありがとうございます 「400人全員のローカルに参照専用ファイルを保存する」 ということが社内環境上、難しいです また、参照専用ファイルを修正して差し替える場合に 大変な労力がかかる可能性があるので、可能であれば 参照専用mdbを、共有サーバに配置して 400人で開いてもらい、テーブル専用mdbに対して 入出力する方法が取りたいです 400人で参照専用mdbを開くということは無謀でしょうか? >>643 返信ありがとうございます ライセンス違反の可能性は考慮していませんでした 調べて見ます 未読状態のものは赤表示にしようと考えている為、 テーブルから未読/既読状態のデータを読み取ることもあります 開いた瞬間に既読フラグを付けるだけのシンプルな入力なので 確かにおっしゃる通り100人で同時に書き込みがあることは ないですね。恐らく多くて20〜30だと推測します 参照専用mdbからテーブル専用mdbに入出力する場合は 「テーブルリンク機能を使う」ということでしょうか? 仕事中なので返信が遅くなってしまいます 申し訳ありません 未読とか既読フラグは400人全員が個別に持つんだろ? だったら400人分mdb持った方が多い日も安心
>>645 利用者各々が自分の既読が分かれば良いだけならそれで良いけど 管理者が誰が未読か知りたいとか既読者の一覧出せとかいう要件があると 結局既読フラグは集中管理する方が楽 まあどっちにしてもプログラム用のMDBは各ユーザに配るべきだが >400人で参照専用mdbを開くということは無謀でしょうか? アクセスのDBは基本的にはファイル共有で動作してる 共有サーバどうする気か知らんが、その共有サーバで実際に400人でファイル同時オープンしてみ それで問題なさそうなら真剣にmdb共有検討してみても良いかもしれん
>>648 仰る通り、管理者用に作成しようとしているツールです ゆくゆくはアンケートを取るようにして、 400人のユーザの傾向分析などに使おうと思っています > アクセスのDBは基本的にはファイル共有で動作してる ファイル共有で動作している事で、同時に複数人で mdbを開くと負荷が大きくなるということでしょうか? > 共有サーバどうする気か知らんが、その共有サーバで実際に400人でファイル同時オープンしてみ この部分が最大のネックで、テストが出来ない環境なんです 社内セキュリティで制約厳しいのに 仕事中に2chで相談 阿呆らし アホじゃ無いよ、阿呆だよ
>>649 mdbですよね? データ量にもよりますが同時セッションでせいぜい数人です 同時でないにせよ400人はAccessの要件じゃないです ほぼ確実にmdb壊れますよ >>652 ありがとうございます 同時にたくさんのユーザで開くことが現実的でないのであれば 下記方法を検討してみようと思います。 ・共有サーバーに起動用mdbを1個。参照用mdbを40個。テーブル専用mdbを7個設置。 ・全ユーザーは起動用mdbからIDによって振り分けられた参照用mdbに移動。 (400人に対して参照用mdb40個なので、 10人単位で参照用mdbを割り当てる) ・各参照用mdbからテーブル専用mdbに入出力を行う (既読フラグの入力。既読状態を読み取って参照用mdbの フォームに既読の表示をする) ヴァージョン管理は何が良いのかな? 実際に使っている人いますか?
>>654 人の話を聞いていないように見えたのであれば謝罪します 申し訳ありません Accessで扱うには難しい案件だという事は分かりました その難しい環境下で、どうやったら実現出来るかが知りたいです >Accessで扱うには難しい案件だという事は分かりました 論点はそこじゃないよ
>>657 「人の話を聞かないひとだな」「論点はそこじゃないよ」 論点はどこですか? >>653 色々アイデアを出されておりますが400人が接続する先は「テーブル専用mdb」ですから 仮に動作したとしてもクエリ1つ投げて戻ってくるのに数十秒かかる、という事態も想定されますよ どうしてもAccessで開発するのであれば バックエンドをSQL Serverなどにして「参照用mdb」を各クライアントに配布する形になります ファイルベースだとmdb以前に共有サーバの同時接続数も見積もらないといけないのでは
阿呆通り越して馬鹿か いかれてる 到底400人を超える社員を擁する企業の案件とも思えず(担当がこのレベルなんだし) じゃあ何だ?ゲームのなんちゃら?とも思えず、僕ちゃんAccessなら少しはお上手だから それで400人のお年寄りを騙す仕組みを思い付いたから構成教えて!なのか なんなんだ?こいつ ひつこいし
そもそも誰もWin7の同時接続数制限とか突っ込まない件 652除く
>>666 ライセンス違反じゃなくて、もともとできんのだよ。動的パッチでも当てないと。またレジストリをいじらないと実際にはその前に限界が来る。 わからないくせに出しゃばるなよ。 Accessから参照設定なしでExcelを起動し、種々作業を行うPGを作ってます。 その際、Excelの自作関数(Function)が使えんのですが、 良い方法がありましたらご教示お願いします。
追記です。 自作関数(Function)は、=SUMのように Excelシート上で使う関数です。
回答ありがとうございます。 いちおう参照設定してのテストも行ってますが、結果は同じでした。 なので困ってます。(;ω;) ちなみに参照設定しないのは、AccessでExcelを扱う際にやっかいとなる、 残プロセスを残さないためです。
じゃあ再定義しろ 中身はformulaでとって来れるだろ
>>671 自作関数については分かりませんが > ちなみに参照設定しないのは、AccessでExcelを扱う際にやっかいとなる、 > 残プロセスを残さないためです。 参照設定(事前バインディング)はコンパイル最適化とコーディングをしやすくするのが主な目的です それが原因でプロセスが残る事は考えにくいです(そんな現象は見た事がない) 定番の「Excelオブジェクトを解放しきれていない」が原因ですよ えっ?使えるでしょ。 objExcel.WorksheetFunction.Sum(...
ああ、自作関数だったか。 Application.Runじゃ出来なかったっけ?
>>673 その通りなんですが… 参照設定しないのが一番簡単なので。。 みなさまありがとうございました。 自作関数は諦めて、標準の関数でなんとかしました。 記述はかなり冗長になりましたが… プロシージャ内でSQLを使用する際に、 SELECT [テーブル名].[フィールド名]… みたいな感じで、テーブルオブジェクト全てにカギ括弧をつけてるんですが、 みなさんはどうしてますか?
フィールド名に全角英数字を使っている場合にカギ括弧を付けないと構文エラーになる まあ、普通はフィールド名に全角英数は付けないけどね。
お疲れさまです。 DoCmd.RunSQL で、select結果を表示する方法ってあります?
948 デフォルトの名無しさん sage 2017/03/22(水) 18:27:50.62 vhfzvoEm 少し調べればすぐ分かることなんだから 聞く前にまず自分で調べなよ 949 デフォルトの名無しさん sage 2017/03/22(水) 20:02:01.65 pQEBF+SX >>947 初心者のくせに欲張りだね君は 999 名前:本当にあった怖い名無し@無断転載は禁止 :2017/03/23(木) 04:44:44.44 ID:7MjKM4Gx0 てめえか? てめえかよ!え? その腐った根性! VIDEO ・access2010 ・win7 ・共有サーバ上での利用 ・共有サーバにaccessで作成したスターターファイル.accdbとフロントエンドファイル.accdbがあります ・accessを開くと必ず上部に黄色のバーが表示されて 「コンテンツを有効化してください」が表示されます 上記環境での質問です 1,スターターファイルを開いて、フロントエンドファイルをvbaで共有サーバ上の別のフォルダにファイル名「a.accdb」としてコピー 2.vbaでコピーした「a.accdb」を起動 3.ユーザはマウス操作で「a.accdb」の「コンテンツを有効化」ボタンを押下 3の動作をした際に「a.accdb」が必ず自動で閉じられてしまいます 2回目の起動の際には「コンテンツを有効化してください」が有効になっている為、閉じられることはありません 何が原因で「a.accdb」が自動で閉じられているのでしょうか? またどうすれば閉じないように処理をすることが出来るのでしょうか? 恐れ入りますが、ご教示願います
フロントエンドは各クライアントに置く 各クライアントにはRuntimeをインスコ その状況なら、いろいろ解説しているサイトがごまんと転がってる 鯖でアプリケーションサーバー機能を持たせてないなら 鯖上のアプリを起動しようとする意図が間違っている スターターは何だか判らん
すみません、下記前提が抜けていました ・クライアント側はローカルへのデータ保存不可 ・クライアント端末にruntimeのインストール不可 スターターはクライアントが直接フロントエンドファイルを開かない(占有)しないようにする為のファイルです accessが閉じられてしまう原因が分かりました Sub test() Dim acApp As Access.Application Dim strDBPath As String strDBPath = "hogehoge\db1.MDB" Set acApp = New Access.Application acApp.OpenCurrentDatabase strDBPath End Sub プロシージャを抜けるとローカル変数の acAppが無効化されてしまう為に accessが閉じられていました グローバル変数としてacAppを宣言することによって 閉じられてしまう事は回避出来たのですが 同じプロシージャ内に「スターターを閉じる」命令を すると、コピーしたファイルまで閉じてしまいます 理想はスターターを起動後、 1.ファイルをコピー 2.コピーしたファイルを開く 3.スターターを閉じる を全て実行出来るようにしたいのですが、accessVBAでは 出来ないのでしょうか?
>>692 環境とやりたい事が全く分からん >・クライアント端末にruntimeのインストール不可 当然ACCESSそのものもインストール不可なんだろうな その状態で、スターターやコピーしたaccdbは「誰が」「開く」んだ ふつうaccdbを開くというのはACCESS(ランタイム含む)で開くことだぞ クライアントにACCESS(ランタイム)インストール不可 ローカル(クライアント)にACCDBコピー不可 の環境で、ACCESSで作ったアプリ使おうとか俺なら無理って言って断るけど バッチファイルなら2行で出来る Copy A B B
>>694 ありがとうございます 共有サーバ上にバッチファイルを置く事は出来ないので バッチファイルでの対応は検討していなかったんですが accessVBAでクライアントのローカルにバッチファイルを 生成して、それを実行した後にスターターファイル自身を 閉じれば想定通りの動作をするかもしれません! >>695 なあ、そのバッチファイルやVBAはいったいどこで実行する気なんだ? もうリモートでやれよ 後々のメンテ考えてもリモートのが百万倍楽だろ 何十時間費やしてご自慢の構成組み上げても、余人に理解できなきゃ ポンツコアプリに堕するだけ お前亡き後後輩がハゲあがるわ 今日びのクライアントマシンならストレスも少なくて済む性能持ってるし バッチは置けないけど鯖上でVBAならなんでもござれ ってのもな シンクライアントなら尚更リモートで発想してやるのが環境にやさしいってもんだ
クライアントに インストールは駄目なのに バッチファイルは置いていい とかwwwwwwwww
業務委託契約として顧客に準備された制限の多い 環境下で業務をしています共有サーバも特殊である為、 理解出来ないような仕様が多いです 「別のaccess起動」はshell関数で対応する事で 解決出来ました たくさんのご意見どうもありがとうございました
クライアントにACCESSインストール不可なのに どこでどうやって「別のaccess起動」を解決できたのかすごく気になる 特殊なサーバってメタフレームとかじゃないだろうな
>>702 これだな 別にクライアントでaccessが使えないとは書いてないし 変な奴が揚げ足とって粘着してるようにしか見えん accessVBAでファイルコピーをするのですが、 テーブルにある数値をコピー先のファイル名としてファイルコピーしたいのですが、 どうすればいいでしょうか? テーブルには1フィールド1件のレコードしかないようにしています。
レポートにクエリを埋め込んだ場合、フィールド幅とかフォントとかって指定はできませんか?
なんだよ cl. って、こっ恥ずかしい cf. confer 【参照】の意味で
>>707 残念ながらどっちでもないです。 1枚のレポートの中に複数のクエリの結果を表示させているのだけど、幅サイズ指定どころかフォントすら指定出来なくてこまっているんです。 そのクエリの結果をそれぞれ個別にレポートに仕上げる分には フィールド幅とかフォントを固定できるものなのか? 一つのクエリでならMaxサイズがそれぞれのフィールドで指定できるものなのかを聞いてるんだが それができるなら個別にレポートを作って、最終的に一つのレポートにそれぞれをサブレポートとして 埋め込めば可能だろうが、個別のクエリでもフィールドサイズが都度都度変わるものだとしたら 無理気味な気が つか、そこまで可変を重要視するならフォームに表示してそっちで印刷・・ 現物に当たれないからフォームでの仕様は後日確認してみるけど
AccessからExcelに書き出して印刷まで自動化した方がうまくいくこともある
フォームコントロールを自動で 美しく配置するツールを作りました。 需要ありますかね。 もちろんレポートにも対応してます。
ソースにするクエリを選択します 作成タブのフォームをクリックします 美しいレイアウトのフォームが自動で作成されます
Access2000 Win7 例えば、 田中,安倍,中曽根,福田,小泉, 麻生 という文字列をフォームに順次入力したとき、 直近の5個をプルダウンメニュー化(コンボボックス?)して再入力の手間を省きたいです。 上で言えば、安倍より右なのでプルダウンメニュー化(コンボボックス?)すると 安倍 中曽根 福田 小泉 麻生 となって、中曽根を選んだらそれがフォームに表示(入力)されるという具合です。 VBAではどうすべきでしょうか? 何かヒントはありますか? 職場の都合上Access2000を使っていますが、これ以降のバージョンで可能ならそれも教えて下さい。
私なら 入力した名前をテーブルに追加していき リストボックスの値集合ソースにそのテーブルを指定して表示させ Wクリックで入力させたいテキストボックス(?)に転記させます ※コンボじゃなくリストにしたのは好みです
配列で変数に入れて、 値集合ソースにセットすれば?
まあ、でも次回開いた時に 直近のを表示したいって事なんだろうから やっぱりテーブルに保持して それを表示してやる感じかね。
そもそも質問の意味がわからない。 任意のリストをコンボボックスに表示する方法は分かってる? 或いは指定テーブルの指定フィールドをコンボボックスに表示する方法とか。 それが分かれば技術的な問題じゃ無くて頭の問題でしょ。
>>725 職場では検証や練習の時間が取れないので、自宅で練習した上でやりたいのですが 自宅にはAccessが無いので上記のような質問になってしまいました。 >>726 いや、それは分かるけどコンボボックスに何かを表示する方法は分かってるのかという話。 それが分かれば後は頭の体操の話でしょ。 任意のリストでやるなら5個の文字列を連結したものを都度作成すれば良いし、テーブルでやるならUNIQUEにして追加削除すれば良んじゃね。 田中,安倍,中曽根,福田,小泉, 麻生 ・・・ がどう入力されるかだけど 田中,安倍,中曽根,中曽根,田中,小泉,福田,小泉,安倍, 麻生 ・・・ とかだと直近の重複しない名称が都度ドロップダウンリストボックス内で 変化していきそうで、それはそれで入力時に戸惑いそうだが ドロップダウンリストボックスのソースを重複クエリ(>>722 の言うstrSQLでもいいけど)で セットすればいちばん簡単だけど、直近を抽出するにはレコード番号とか入力日時とか を基準にして並べ替えする てことかな 氏名は例だろうけど、現物は何だろ? 面白そう 入力のたびに「あれ?」「ん?」って 声が聞こえて来そうだ(本人が使うんじゃ無ければ) >>728 現物は顧客リストとパートナー営業さんのリストです 勿論、上記の氏名は例ですが、中曽根さんのデータを呼び出して30分くらい経って 「中曽根さんの○○の項目を更新忘れていたわ」ということが多々あるので、一旦呼び 出した人は履歴から簡単に再呼び出ししたいです。 平たく言うと、WebブラウザのHP履歴みたいなもんです。 オートコンプリートね。 テンポラリテーブル作るのが 一番簡単かと。
フォームから入力されたデータってレコードソースで指定しているクエリのテーブルに格納されるって認識あってますか
>>732 に追記です DoCmd.RunCommand acCmdSaveRecordで保存されたデータはレコードソースのテーブルに格納されるでいいでしょうか。 基本的な質問ですみません テキストボックスが連結されていれば入力内容はテーブル(の連結フィールド)に保存されます。
>>734 すみません、テキストボックスとは何を指してますか、クエリのソースですか? >>735 フォームに配置するオブジェクトのひとつ。他にコンボボックスとかリストボックス、コマンドボタンなんかがあります。 何やら禅問答の様相を呈しているようだが その入力フォームのレコードソースがクエリで、対象のテーブルに保存できるか? という質問なら、DoCmd ・・・なんぞを使わずともレコードが移動した時点で保存される ソースの無いフォーム上のテキストボックス群(等)に入力して、例えば[保存ボタン]などで 対象のテーブルにデータを保存するような使い方の場合には、その DoCmd ・・・を使って それぞれ保存したいフィールドに各テキストボックス群(等)のデータを保存する でよろしいか テキストボックス、コンボボックス、リストボックス、チェックボックス等々があるから・・群(等)と書いたけど
>>737 はい、フォーム上のテキストボックスに入力されたデータの保存について聞きたいのですが、レコードソースのクエリで複数テーブルが結合している場合、共通のカラムのデータは結合しているすべてのテーブルに保存されますか >>738 すみません、分かりません。 カラムっていうのは何だろ?フォームはデータシートビューなのかな。 百聞は一見の喩えじゃないが、二日費やしてる間に試しで入れてみれば 100ヶテーブル繋げてても全部入るだろ あ、Max32だったか しかも結合は16までか じゃあ16で で、へぇ、なるほど、こうなるんだ って理解に繋がる
>>739 カラムは列(項目)です フォームビューです 本番環境で作業してるため、登録処理ができないので、教えていただきませんでしょうか レコードセットがダイナセットで、レコードソースのクエリが2つ以上のテーブルを結合しているときの登録されるテーブルを教えてほしいです
クエリが複数のテーブルからできていても そのクエリのカラムはどっちのテーブルのカラムか区別されてるぞ
>>742 フォームプロパティのレコードソースからクエリのデザインできるウィンドウを開きます。項目フィールドがどのテーブルのものか定義されています。 正確な名称で答えられなくてすみません。布団の中からなので。 easyComm使ってrs-232cで測定器つないでデータ取る、みたいなのが得意な人いる?
出来た!動いた! 測定器の制御とか本当はvisual studioとかで作成するんだろうけど、パソコンの性能がいつの間にか上がっててACCESSでもいけたよ!
そのうち性能ωが上がってACCESSでBIGデータ扱ったり機械学習したりする時代が来るのか
すごい基本的な質問ですみません accessのSQLの言語って何ですかね MYSQLとかですか
SQLが言語だよ すとらくちゃーどくえりーらんげーじ だったかな
質問の意味も意図もよくわからんね。 access以外のシステムからSQL文をコピペしたいってことなのか!?
>>750 MYSQLもSQL。 仕様があって、それに沿って各社実装してる。 が、独自部分も多いから同じSQLだからといって何処でも動くとは言えない。 >>753 SQL言語もポスグレだったりPLSQLだったりあるじゃないですかそれで言うと何になるのか聞きたいんですけど 勘違いしてたらすみません SQLとMYSQLの関係ってCとC♯の関係ですか
>>752 コピペでそんなこと気にする必要ありませんよね 気になったから質問したまでです SQLとMYSQLの関係は他人のSQLと自分のSQLの関係です 昔、金井克子という人が歌ってました
SQLというのはそれが言語 (たまにSQL言語以外の事をSQLと言っている場合もある) ポスグレやMYSQLやACCESSはそのSQL言語を使う環境(の一部) 環境によりSQLに多少の差はある ポスグレはSQL言語じゃない PL/SQLはSQLを拡張した言語 ACCESSならSQLを超える範囲の言語はVBA
>>758 よくわかりました、ありがとうございます >>756 他のSQLの構文をそのままコピペしてAccessで使うのは うまくいかないこともある ことを気遣ってくれたんじゃね? そんな言い捨てるようなレスはいけないと思いますよ >>761 素直な態度の人は成長するらしいですね。 良い事良い事。 変数の宣言を強制するにチェック入れたのに Option Explicit が出てこないのですが どうしたら出て来ますか?
既存のコードには入らないよ 新規で作成するオブジェクトには入る
Accessの神々よ、御教えを! Accessでは、CHECK 句が使えないようですが、 カラム数が多いため、 いちいちプロパティから入力規則を設定するのは骨が折れます。 SQL で一括設定する方法をご伝授くださいませ〜
えー、クエリ作ってからSQL表示してコピペ。 そんな事聞いてないよね。
win7x64-office2016x86環境下のみで再現するらしい xls出力からコペピ張り付け罫線操作等々やってる処理で張り付したシートがズレル不具合発生 ネット調べても一切情報でてこなくて期待込めてofficeアプデしたら実行時エラー1401 空白でないセルが云々カンヌん泣きたい
自己レス office365BPの2016でのみ再現 別シートの複数列コピー選択状態でAAセレクトインサートやろうとするとコピーペになる セレクト前に空白セル1コピーで回避
クエリを実行したときに全件レコードを取得できてないのに検索結果画面が開くときってない? ▷|←このボタン押すと検索結果の件数が出てくるんだけど、押してから出るまでに時間がかかるってことは全件レコード取得できてないってことだよね
>>774 いや、クエリのSQLをorderby句を書かなかったとき、全件検索する前に検索結果画面が開く @orderby書いてクエリを実行する→1/2500みたいに結果件数がでる Aorderby書かないでクエリを実行する→1 結果件数が上記と違いでない ▷|このボタンおすと上記と同じように1/2500となる @の実行時間10秒 Aの実行時間1秒 ただし▷|ボタン押すと10秒くらいかかる
なんかオプションに無かったかな。最初の表示するぶんだけ読み込んでとりあえず見せておいて裏で続きを読むって機能をオンに、みたいな。
会社テーブル id 会社名 ・・・ 1. A社 2. B社 3. C社 4. B社 職員テーブル name 会社id ・・・ 山田. 1 鈴木. 1 飯田. 2 野口. 3 岡本. 4 一対多のリレーションがありまして 会社マスターにダブり登録されている場合(この場合B社) 楽に修正する方法はないでしょうか 250社くらいダブリやトリプルしていて困っております
名寄せマスター 名寄せID 会社ID 新会社ID 1 2 2 1 4 2 名寄せマスターと職員テーブルをJOINしてUPDATE というのはどうですか?
その会社マスターがおかしいのを放置するのか修正するのかで違ってくるよね
>>781 なるほど 重複クエリに各会社の最小IDを連結して名寄せテーブルを作成し JOINしてUPDATEしました 名寄せテーブルを作成しないでクエリだけでUPDATEまでもっていくのは この場合駄目なんですね はじめ理解できず悩みました >>784 JOINしたAccessのデータをExcelに吐き出し各職場に配布、各々で修正追加。 一年以上たって回収しAccessに貼り付けられて今の状態です。 正確には職員テーブルじゃなくて顧客テーブルですね なあんだ、Excelの段階で調整しちゃえば余計な苦労しなくて済んだのに
初心者なんで教えて欲しいんだけど、フォームの次へボタン押した時に次のレコードが 表示されないのだがどうしたらいいか教えて欲しい。バージョンは2013 Private Sub Form_Load() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = db.OpenRecordset("名簿テーブル",dbOpenTable) Me!名前テキスト = rs!名前 Me!カナテキスト = rs!よみがな End Sub Private Sub 次へボタン_Click() DoCmd.GoToRecord , , acNext End Sub
フォームのソースが名簿テーブルならフォーム読み込み時の名前とよみがなセットするコードは無くても先頭レコードが表示される。 フォームのソースを確認しましょう。 非連結フォームならボタン押した時に次のレコードを読み込んで名前とよみがなセットするコードが必要だけど、キーが不明なので何ともアドバイスできません。 長々と書いたがわかりにくいね、すまん。
神さま教えてください。 ADODB.Commandでのインサートが失敗しても エラーが出ないのですが、エラーハンドリングの 方法を教えてください。 よろしくお願いします。
むしろonerrorしかないと思うが、他にやり方あんの?
レスありがとうございます。 ON ERROR は当然やってまして その上での質問です。
失敗ってなんだ。 戻り値を取ればAffectedRowsになってるだろうから それで判断するか追加されたはずの行数をあらためSELECTするとか
>>786 そのコードはFormがLoadされた時に名簿テーブルを開いてRecordsetに格納し、名前とカナをテキストボックスに入れるというものと次へボタンを押した時にFormがLoadされた時の処理とは全く関係なく次のレコ−ドに移動するもの。 ところで次へボタンでの次のレコ−ドってのは何のデ−タなんだい? 改めて言うけどFormがLoadされた時の処理なんて知らないからとAccess君は言っている。 要は、DoCmd.GotoRecordってのはデータとオブジェクトが連結されていることが想定されていて、連結されているから既にオブジェクトにレコードが表示されているわけだが、それに対して次のレコ−ドと言ってる。 一方、FormのLoad時の処理は連結関係無くデ−タを自ら取ってくるもの。 こちらのやり方を取るならRecordsetをPublic変数にするかForm内でのPrivate変数として保持しておき、他のイベント(次へボタンクリックのような)で使いまわすというやり方になる。 整数型、重複なしの列を書き換えるときはどうしてますか?たとえば、 2 1 3 → 2 1 3 にしたいときに2→1の時点でエラーが出ると思うので回避策を検討しています。 一時的に重複なしを解除して、終了時点で重複なしへ戻す方法や、一旦一時的に重複しない数字に書き換えて、それから再度書き換えるべきか悩んでいます。 なにか一般的な方法はございますか?
あれ、スペースがおかしくなっている。 列を書き直すときにたとえば 2→1 3→2 1→3 としたいのです。具体的にはidを振り直す作業です。
レンジのソートでよくね? もしくはフィルタ付けて並び替えてからフィルタ解除とか
idには触らないで、整数型のフィールドを追加します。そのフィールドでやりたい放題やります。
どうしてもやりたけりゃ、swapしていきゃいいんじゃないの? 最初は2→1にしたいから、 1 3 2に。 次は3を2にして 1 2 3 に。 入れ替え自体は、UPDATE xxx SET unique = CASE WNEN unique=1 THEN 2 WHEN unique=2 THEN 1 ELSE unique END でCASEで書いちゃえば入れ替えられる。 1クエリ内で完結したら、制約はかからない。
>>797 済みません。AccessにもRangeというのがあるのですか?あと、フィルターの使い方も御教示をお願い致します。 >>798 それが、当該idを参照しているテーブルが20個以上あるので、別のコラムという訳にはいかないのです。 参照先を変更するとなるとクエリやらVBAのコードやらを書き換えないといけないので大変だと思います。 >>799 バブルソートみたいなものですね。レコード数が3万ありますので、何となく時間がかかりそうな気がしますが、試してみます。 今はソート後にDMax+iのループで重複しないidへ書き換えて、書き換えが終わってからDMaxを引くという2段階の作業をしています。 (参照元のidも2段階の書き換えをしています。)) 我ながらドン臭いやり方だと思うので、もう少しスマートな方法があれば御教示をお願いいたします。 その列自体を書き換えちゃうの? じゃあ、今入ってる値は必要無いってこと? だったら削除して連番振り直したら?
>>801 idだから主キーです。Nullは不可だと思います。 >>800 もう組み合わせがわかってて、ほんとに単発で1回きりなら、 エクセルで対比表作って、CASEの列とWHENの列足してコピペでクエリ作っても良いけど、全く健全な保守ではない。 2 1 3 2 1 3 に列追加してオートフィルで WHEN unique= 2 then 1 WHEN unique= 3 then 2 WHEN unique= 1 then 3 ってして、 unique= CASE と ELSE UNIQUE endで挟んで、コピペでテキストエディタに貼り付けて、テキストエディタからコピペでAccessに貼り付けるやつ。 しょっちゅうやるならテーブル見直そう。 >>803 方法はいくらでもあると思うけど。 Field追加して連番を振って、追加したFieldを主キーに変更して元の主キーのFieldを削除するとか。 試してないからできるか分からんけど。 そんなことせずに振りなおすならOrderByでId順にして小さい値から振りなおしたら? ただ、主キーを振りなおす意味が分からない。 そういうもんじゃ無いと思うし、テーブルの連結によっては滅茶苦茶になるのは分かってるよね。
主キー振り直すのは、やむを得ずやるのはそのアプリのライフタイムに何発かあると思う。 業務系だと、「スキーマ変えるな」「デカいトランザクションはるな」「一時テーブルすら作るな」とか無茶苦茶言いよることもある。 でも、しょっちゅうやるならホントに設計考えたほうが良い。
>>805 >>そんなことせずに振りなおすならOrderByでId順にして小さい値から振りなおしたら? そんなことが出来るのですか?DAOもADOも1行ずつしかupdate出来ないから、重複データーが発生してしまって出来ないのですが… >>806 ワークテーブルまで含めて数えなおしたら、35個のテーブルで件のidを使用していました。なので35個のテーブルに対して変更を行わないといけませんね。 >>808 それで解決するなら簡単ですね。やってみたいですね。 元の列の属性がすべて引き継がれるならいいですね。試してみます。 主キーの役割はレコードをユニークにすることだろ 並べ替えが必要ならそのための項目を別に用意するわ 作業量を問題にしてるけど 無茶な運用は後に響くよ 分かり易さを優先すべきだと思うわ
主キーを解除して、重複可にして連番を書き込みました。その後に元に戻しました。変更前後の番号を配列に書き込んでおいて、その配列の値から関連するテーブル全部において置換作業を行うことにしました。 idが2万5000レコード、関連するテーブルのレコードが全部で100万近いのですが、2万5000の置換を100万レコードに対して行うので時間がかかりそうな気がしています。どのくらい時間がかかるのか計算する方法がありますかね?
無理矢理面倒臭い事をしているようにしか思えない まぁ人の話を聞く気が無いみたいだし 好きに調べてやればええよ
SQLであっさり出来たわ。後は置換をどうするかだな。関連するテーブル全部を置換できればすべて解決するけど、何を使うかだな。 SQLは遅いんだっけ?レコードセットでループ回す方が速いと読んだ気がする。
>>816 普通に考えればSQLの方が速いに決まってると思ってたが。 遅いとしたらその文書いた奴が悪いという印象。 ま、DB系については大したレベルにないから俺が間違ってるかも。 業務用ソフトのテーブルを眺めていたら、テキスト型のフィールドがあって、256桁の数字が羅列してあった 様々な設定を指定された桁に格納しているようですが、このようなデーター保存方法は一般的なんでしょうか? 他の言語でもあるのでしょうか?
>>818 あるんじゃないの?としか。どんなテーブルとか、フィールドの名前とか、なんかヒントはないですか? 様々な設定も謎が深まるだけですね。 たとえばあるフォームAのオプションボタンの値を98桁に書き込む、フォームBのチェックボックスの値は例えばCstr(Abs(True)))でstringへ変換して105桁に書き込むとかそんな感じです。 合理的な気もするのですが、こういう方法は検索しても見つからないので一般的なのか、特殊なアイデアなのか知りたくなりまして。
すくなくともRDBを使う上ではやるなって言われてるやり方 固定長ファイルにデータ保存してるようなシステムなら結構あったけどね
>>821 そうなんですか。面白そうな話しなので調べてみようと思います。その手法はどういう名称なんですか?もしくは検索ワードを御教示頂けましたら幸いです。 RPG区分列とかじゃないの?古い呼び方だけど。 酷すぎてだれも触りたくないやつ。 RDBに移すような事があったら、末期には照合順序をbinaryにするしか無くなったりすごく苦しむから辞めた方がいい。 メリットらしいメリット無い。LIKEで雑に'[A-C]__1_2'みたいにSELECTできることぐらい。
残念ながら、ググっても何もヒットしません。 なにかヒントをお願い出来ますか?
RPGとRDBで検索したら関係ありそうなのがいくつかヒットしたけど。 検索能力は俺の方が上みたいだな。
固定長ファイルでぐぐったら、先頭に固定長データファイルとはっていうサイトがでたけど なにでどうググったんだか
皆様、御指導、御鞭撻ありがとうございます。 COBOLでよく使う手法だったんですね。 件のmdbはコボラーが設計したんですかね。
そうなんですか。accessの本には全く載っていないでのすが、RDBMSの世界ではごく一般的な手法なんですか
言語の問題ではない しかしRDBMSではやってはいけない よくわからないけど昔のデーターベースの本を読んでみますわ 暇つぶしにちょうどいいわ
自分たちが使うデータをどういった構造で保持するかは各自で考えて構わない ただRDBに入れるのであれば、やってはいけなくもないけど、おすすめはしない、という話では? RDBならテーブル・フィールド分けてデータもコードも見やすくできるのに、そうしないのはもったいないというかなんというか
データベースの列が増やせない何かがあった。 開発者の気まぐれ。手抜き。 従来の固定長ファイルと1:1の情報を保持したかった。 とかね。。。 こっちの業界じゃ拡張DM形式なんて固定長ファイルが普通にやり取りされてて、桁数制限とかが厳しいけど、容量の割に情報量が多いし古いソフトの互換性があるとかで100年以上生きると思うわ。 でも固定長ファイルの文字列をmdbに格納するのは正気とは思えない。データベースのメリット全部殺してるじゃん
郵便とのやり取りは今でも固定長フィールド使てんじゃね さすがに今はないか、フロッピーとか
未だに固定長を扱う事はありますが、設計済みDBに展開して処理していますよ
固定長のEDI、増えたりしないだろうけどいつまでも残るんだろなあ。csvやtsvをメール添付で良いのにって思う。
固定長の方がパースが軽いからなぁ あといつまでもなくならないレガシな環境とかな 処理系そのものは変更されてもIO部分の仕様変更はなかなかやらない
今どき固定長レコードなんて使ってるのに前向きな理由なんて無いよ
>>839 同じ拡張子なのに何十種類もバリエーションのある欠陥フォーマットを使うのはやめてくれ アクセス始めて触る初心者です。 テキストボックスが複数含まれたワードファイルが5000個ぐらいあります 各テキストボックスからいろんな項目を取得するとして、1ファイルあたり30項目ぐらい つまり5000個のファイル*30項目=15,000項目 これをアクセスで処理していこうと思ってるんですが、アクセスはこの程度さくさく処理できるものでしょうか 目的は、ワードファイルが多すぎて邪魔なんで全部削除したい。必要に応じて元のファイルと同じものを再現できるようにするため、必要な情報をアクセスのデータベースに保存しておくことです 必要なファイルを再現できるように検索機能と再現機能をもったVBAマクロを組むつもりです 最初エクセルでやろうとも思ったのですが、さすがに万単位で今後も増える可能性が高いため アクセスかな?と思ったのですが、どうでしょう
>>843 初めて触る様な状態なら無理だから、諦めた方がいいですよ >>844 アクセスは初めてだけどエクセルVBAはそこそこ経験あります エクセルVBAでなら自分で組める範疇ですね すでにアクセスで途中までマクロは組んであります 同一フォルダ内にテスト用に作成してあるワードファイルを順次開いてすべてのテキストボックスの値、位置関連の数値を Debug.Printで出力後、ワードファイルを閉じる ここまでうまくいってるんであとはアクセスの基本機能理解すればそう困難ではないでしょう ざっとみたところ、この用途で使う限りではそう複雑なものでもないようですし。 質問の内容はアクセスでやる利益があるかどうかという点ですね まぁ組めばわかるんですけどね >>845 エクセルのテーブルに格納したらアクセスにインポートするのが良いんじゃない? エクセルのままでも良いと思うけど、 貴乃花親方にしろ有賀さつきにしろ やはり「語らない」ことが年末から今年にかけてのポイントだな 逆に語っている方が何かと物議を醸しているし
すみません質問させてください。 Private Sub Form_Load() Me.TimerInterval = 1000 End Sub Sub Form_Timer() Static intShowPicture As Integer If intShowPicture Then Me.btnPicture.Picture = "C:\taiyo.jpg" Else Me!btnPicture.Picture = "" End If intShowPicture = Not intShowPicture End Sub このコードは何をしているのでしょうか? ご回答よろしくお願いします。
ご回答ありがとう御座います。 イメージはなんとなく掴めたのですが、 この場合のintShowPictureには何が格納されているのでしょうか? もしくはBoolean型なのでしょうか?
Static intShowPicture As Boolean にして試してみろよ
VBAには暗黙の変換ってのがあるから IntegerをBooleanに暗黙的に変換して評価してる まあ、あまり良いコードじゃないな
>>852 さん 試しに、フォームと画像を用意して作ったら、点滅しました! >>854 さん この文でも点滅しました! >>855 さん Falseが0でTrueが-1なのですね! ご回答ありがとうございました。 解決しました! >Falseが0でTrueが-1なのですね! そうだっけ?
Access で画像を点滅する? そんなの普通は、JavaScript, jQuery とかだろ
10万件以上の大量レコードを追加するインサート処理をクエリを作成してDocmd.OpenQueryでやっているが時間が1分以上かかる この処理をモジュールにADO、もしくはDAOでインサート処理を記述したら、Docmd.OpenQueryより早くなるかな?
VBAで書くと数倍遅くなるんじゃね? Cからなら速いかも知れん
BULK INSERT は? そもそも、INSERT文は速くならない!
10万が大量かどうかという問題も有るがRecordset + AddNewの方が速いと聞いたし、実際俺が組んだ場合も明らかに早いんだが。 状況にもよるかもしれんけど。
そもそもOpenQueryでどんなクエリ流してインサートしてるかわからんのに比較にならんわ
>>865 例えば単純な追加クエリや、INSERT SELECTするSQL発行するより 1件ずつAddNewして(どこかから値持ってきて)1カラムずつ値セットするほうが早いっての? どこで聞いた話だそれ? やってみてから言ってくれ。 俺の場合は実際早かった。 俺の場合は1カラムずつじゃなくてフィ―ルド名の配列と値の配列でAddNewだけど、たぶん1カラムずつセットしてUpdateでも早いんじゃないかな。
SQLでもINSERT一回じゃなくて1行のINSERTを何度も繰り返したら遅くなるからな それと比べるなよ
>>868 やってみるから、フィールド数、フィールド長とレコード数教えれ あと配列のデータどう用意するのかと、比較するクエリの元データどうすのかも とうぜんACCESSと対象DBエンジンとADOかDAOのバージョンも明示してくれよ で、ループまわして1レコードずつ.AddNewして.Updateするんだな これでほんとにVBAが速いならちょっとACCESS使うの考えるわ >>870 そんな低レベルの話はしとらん。 >>871 たぶんフィールドは40~50ぐらいじゃね? レコードは200万ぐらい。 リモートでOracleに接続してる。 JOINで20個位のテーブル繋げてるな。 ADO使ってる。 パススルーのSELECTクエリ+INSERTじゃ永遠に終わらない感じが20分程度で取得出来るようになった。 「access insert addnew 速度」でクグってみればけっこうAddNewの方が早い話が見つかるぞ。 だからどこからどうやって元データ取ってきてるんだと リンクテーブルやリモートDBでADOの方が早いとかなら別に驚くに値せんけどな というかお前らOpenQueryってレコード数分実行する前提で話してたのか?
パススルーωとか使っちゃいけないTOP3じゃないか 素直にリンクテーブルにすれば良いのに
パススルーって駄目なの? リンクテーブルは話にならないくらい遅くてパススルーのが全然早かったんだが。
ケースバイケース たいていの場合、リンクテーブルに対する操作よりはSQL飛ばすほうが早いとは思うけどな パススルーが使っちゃいけないTOP3とか初めて聞いたわ
keydownイベントからのキー取得ではなくて、 OnKeyDownイベントからキーを取得する方法がわかりません。 Me("テキストボックス"& i).OnKeyDown = "=get_Key(" & this? & ")" ご教授お願いします。
>>877 OnKeyDownイベントを知らなくてすまん。 Excel で JavaScript も扱える様になるらしいね
業務用mdbのコードを見てて気づいたんだけど、戻り値を使わないのに、functionを作成しているのが非常に多い。 どんなメリット、デメリットがあるのですか?戻り値用の変数を用意するから速度が低下するのが問題なんですか? 英語の本には >>Many programmers think that they must return something, even if they have to make some artificial return code or status. This practice can make your code harder for others to understand. て書いてあってヤメレって書いてあるのになんでやりまくるのですかね?
>>881 しまった戻り値無いfunction俺も作ってた 動くから別にいいやって感じだった 業務でプログラム組むような場合は、コーディングスタイルが指定されてる事が多いんだよ 正確には戻り値のないFunctiionじゃなくて、戻り値を無視してるだけだけどな
functionとsubはcallが要るかどうかの違いだと思ってた。
可読性が低下する以外のデメリットは無いんでしょうかね? 個人的には出番のない変数は目障りなんですけどね。
呼び出しネストの限界がFunctionのほうが浅いってデメリットがあるはず 呼び出しに必要なスタック領域が違うから 昔だれかが実測してたな。まあ再帰でよっぽどのことやらんと問題ないんじゃね SubをFunctionにして可読性が落ちるとか、それ関数の命名に問題がある気がするがな
戻り値ある前提で組んでるんでしょ。 エラー処理等で単に関数が失敗か成功かを返すとか。 後で作ろうとしてたけどグダグダになって無しになっちゃうとか。
後でやろうとしてやめちゃうってのは非常に大変頻繁によくあることだからね。
>>881 呼び出し側でいちいち call 書くの面倒だから >>890 FunctionもSubもCallを書かなくても呼び出せすので、理由にならないと思います。 個人的には、Callが書いてないと唐突に見慣れない文が出現するので驚いちゃいます。馴れれば、労力の軽減になるのかな? call 書かないと () 付かないだろ () 付かないから知らない文が出て来たと思ってしまう () 付ければ関数だと判るが call 書かないといけないって話
>>892 済みません。よくわかりませんのでかみ砕いておしてもらえますか? Callと括弧がペアで必要なのは理解しています。 もちろん、CALLなし、括弧なしでFunctionもSubも呼び出せるのも知っています。 両者の呼び出しの記法が全く同じで、唯一の例外が lngSum=AddNumbers(10,20) 等の場合ということも知っています。 つい全文読んじゃったよ いろんな考えの人がいるんだね
>>893 えっcallなしで呼び出せるの?知らない事がたくさんあるなあ >>896 英語の本にはちゃんと書いてあるんですよね。私はVBSの本で知りました。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 BHZ67
学生はaccessの勉強してないよね。既存の社内システムメンテナンスできる人を募集してるけど応募が無い。 accessなんて社会人になってから仕事の合間に覚える人がまれにいる、程度のものなのかな。
そもそもOfficeのPro版がほとんどの市販PCに載ってないから触れたことすらなかった
>>902 給料が安いから応募がないんじゃないの? いくらで募集なのか知らないが、派遣の求人だと 社内システム作れる人だと時給2100円前後という印象だなAccessは (高くても2300円くらいか) だから社内システムメンテ出来る人は普通の会社には行かないのでは そこまで出来るなら専門業者で働いた方がずっと稼げるだろう 人にもよるだろ。 俺の印象では3000円弱ぐらいまではいく。
>>903 今は単品で15,000円位だから、コスパ良い開発環境だと思うのだが。 VBAで自動メンバー表示できるVBE以外のエディタってあるのかな?
>>909 vbseditで試したけどダメだった emacsで成功した人がいたのでWIN用emacsインスコしてみた この後は面倒くさいからあしたやるemacsはいろいろ出来てすごいと言うことが少し分かったわ VS CodeにVBA用の拡張があったはず ふつうのVSにも探せばあるかもな
VBE ではないエディタが欲しい場面とは?良かったら教えて。
>>912 VSCの奴は2つ入れたけど,オートコンプリートはできるけど,自動メンバー表示は出来ないですね. >>913 一般的なエディタと比べると余りにもVBEが低機能だからですね. たとえばコードフォールディングをしたいし,行番号も見たいけど,出来ないですからね.ズームが出来ないのも案外不便. フォームでマウスホイールをコロコロしてレコードを移動させるプログラムを教えていただけませんか?
ソース連結の単票フォームなら、何にもしなくてもホイールコロコロでページパタパタ出来るけど そういうのとは違うのか 或いは、制作者が敢えて無効にしてるのを有効化したいのか 或いは、帳票フォームの上下・・ これもホイール効くか、、 シーンを限定してもわらないと
>>914 913です。VBE良くできてるな便利だなと思って使ってました。もっと捗るエディタも有るんですね。 >>917 ネット上にはVBEを賞賛する声は余り見ませんね。悪口は沢山見ます。 emacsをインスコしてみましたが、Windows7 64bitではダメでした。 emacsならやりたいことが全部出来るはずですが、lisp書けないから悲しいです。 質問です UPDATEでテーブルを一斉更新する際に、 「Aさん」「Bさん」「Cさん」のようなデータを 繰り返しで連番のように入力させる手段は無いのでしょうか? 連番のような数値型は出来るようなのですが、 文字列で実現する方法が分からないです 目的は出勤している人間(5名程度)に 難易度にムラがある案件(200件程度)を均等・公平に 割り付けるためです お手数をおかけしますが、どうかご教授ください よろしくお願いします
一度連番を振ってその後に「連番 mod 3 = 0」をAさん、 「連番 mod 3 = 1」をBさん、連番 mod = 2」をCさん っていうようにすれば出来なくもないか… でもスマートじゃないですし、処理に時間がかかりそうですね
>>919 解答ではありません。 私ならexcelにエクスポートして手作業でautofill してインポート。またはvbaで一件ずつ読み書き。 Sqlでどうするかわかったら教えてください。 連番(数値型)を繰り返し入力させる方法が分かるのなら、 1=Aさん、2=Bさん、…っていうテーブル用意しておいて、 連番振ったあと更新クエリで文字列を更新させるのは駄目ですか?
20人程度が1つのテーブルにそれぞれ10分間隔くらいでUPDATE INSERTをしているんですが、突然テーブルが開けなくなりました 「他者が開いています」というメッセージが出て開くことやコピーすら出来なくなりました 対策やこの症状が出た時の対処方法はないのでしょうか? フロントエンドとしてユーザーの数だけUI用のAccessファイルを準備して、 バックエンドはテーブル1つだけのAccessファイルを置いています
そうなる前に、誰かがなんかのエラーを発してるはず 或いはエラーを殺しちゃってるかどうか 大概マズイことには口を噤むのが社畜の習い性 エラーにならないよう対策するか、エラー時に対策するか コピーすらできないなら、サーバー側での対策として バックアップ時に戻すか そのファイルさえ救出出来たら修復できるんだろうけど
共有数の制限の気がするけど そのバックエンドのアクセスファイルはどこでどうやって共有してるんだよ
919です 返答が遅くなってしまい申し訳ありません >>921 解決しました 元々テーブルに連番が振ってあったので、それを利用して sqlのswitch文とmodを使ってます リストボックスで選択した担当者を配列に格納して ubound関数やらを使ってvbaでsqlを生成しました switch id mod i 0:Aさん 1:Bさん 2:Cさん 3:Dさん って感じのイメージです >>922 週休者には割り当てたくなかったので上記方法で解決しました >>925 先日は事前に取っておいたバックアップまでロールバックして対処しました 未だにエラーの原因が分からないので 不具合が起きた時の対策とバックアップ頻度を上げるような 業務フロー(タイマー関数含む)を追加しようと思います 開けなくなったファイルは日を跨いだら開けるようになりました 恐らく誰かが気づかずにバックグラウンド掴んでる状態だったんだと思います >>926 特にオプションをいじっていないaccdbを共有サーバに そのまま置いてる状態です データを取得するのはサーバのバックエンドテーブルを ローカルファイル(フロントエンド)にコピーして ローカルで完結して参照しています 更新や追加する時だけバックエンドのテーブルに UPDATEとINSERTをしています 質問です。 分割フォームの 分割フォームデータシートプロパティを VBAから操作できる方法がありますでしょうか? ご教授お願い致します。
具体的なプロパティもわからんしお休みなのでパソコンも手元にないけど検索したらsplitformsize のvba コードがあるから何らかの操作は出来るんでないの?お盆モードの適当コメントですまぬ。
>>930 さん ありがとうございます! splitform vbaで調べていたら見つかりました!! うれしいです! Private Sub コマンド11_Click() If Forms("test").SplitFormDatasheet = acDatasheetReadOnly Then Forms("test").SplitFormDatasheet = acDatasheetAllowEdits Forms("test").コマンド11.Caption = "過去のデータを編集不可にします。" Else Forms("test").SplitFormDatasheet = acDatasheetReadOnly Forms("test").コマンド11.Caption = "過去のデータを編集可能にします。" End If End Sub ありがとうございます!! サイズの限界まで巨大化しているフォームを改造して、様々なコントロール類をタブコントロール上に配置しようと考えています。 元のフォーム上のコントロール類をコピーしてタブコントロール上にペーストしたまでは良かったのですが、イベントプロシジャーがごっそり抜け落ちています。コマンドボタンを押してもなにも始まらない状態です。 イベントプロシジャーを保持したままコントロールをコピペする方法はありますか?
>>933 良かったね。 俺はVBA コードを頑張ってコピーしてるのでよかったら解説下さい。えーごわからないので。翻訳機能?あの人たちとは話が合わん! Accessの本はいろいろ買ったけど、良書だなあと感心したのはほとんどが未翻訳の洋書でした。 谷尻、緒方、葛西も和書としては悪くないのですが、洋書と比較すれば月とスッポンです。 技術書の英語は辞書とgoogle翻訳でだいたいなんとかなりますよ。 たまに文学的表現があってイラッとしますけど、だいたいが簡単明瞭です。
すいません質問です。オフィス365です。 手動で空のサブレポートをレポートに配置しました。これをVbaコード でコピーする方法を教えてくださいませ。
すみません、質問させてください。 ExcelからAccessの特定のフォーム を閉じるとき、 DoCmd.Close acForm, "フォーム名" で入れると、おそらくacFormがAccessVBAの引数のためか、 エラーが出てしまいます。 何か解決方法があればご教授よろしくお願いします。
アプリが違うからOLEとかActiveXObject使うんでは
>>937 acForm=2なので、acFormじゃなく直接2を指定してみると上手く行くかも DoCmd.Close 2, "フォーム名" ↑でやってみて >>938 さん、939さん ありがとうございます。 939さんの方法でいけました。 ありがとうございますm(_ _)m 番号で指定する方法があったのですね。 感謝です。 Access.AcObjectType.acForm が 2
アホな質問ですまん。 クエリの中でクエリを複数使うクエリを作成したんだけど、これをSQLに書き直すときにエイリアスを使いたいんだけど、クエリに対するエイリアスは使えるのかな?テーブルだけかな? 実験した感じではダメそうなんだけど、どうですか?
>>942 普通に使えるはずだが AS付けてないとか >>942 普通に出来るはずだぞ どういう状況でダメになってるんだ? >>942 サブクエリの話だよな? 自作ツールで確認したがASで普通にできてたぞ たぶん、サブクエリじゃなくて作成済みのクエリをSQL内部のFROM句やJOIN句にテーブルのように使う時にエイリアスを使いたいという話だと思うんだが、それでも普通に使えると思う。
みんな、ごめん。使えました。 おいらがSQLビューで書くときに、どっか間違えたみたい。 クエリのエイリアスも使えるし、サブクエリでネストも出来るし、accessって凄いね。糞長いSQLを書きたくなるね。 問題は余計な括弧がいっぱいくっつくところだよね。
またまたくだらない質問です. UPDATEで苦労していますが,https://www.ipentec.com/document/sql-multi-record-update に書いてある update working set value=price from products where working.name = products.name だとエラーが出ます.試行錯誤して成功したのは UPDATE working, products SET working.[value] = [products].[price] WHERE (((working.name)=[products].[name])); でした.UPDATEの述語に参照するだけのproductテーブルが書いてあるのが不可解ですね. なんで,こんな変な書き方をするのか分かる人いますか? >>950 FROMを書きました.下のようにしました.でも,演算子がありませんと怒られます. UPDATE [working],[products] SET [working].[value] = [products].[price] FROM [products] WHERE ((([working].[name])=[products].[name])); これも同じように怒られます. UPDATE [working] SET [working].[value] = [products].[price] FROM [products] WHERE ((([working].[name])=[products].[name]));
それだと[products].[price]の後が何だか分からん。 [products].[price]を求めるSQLをそのまま書くかJOIN使った方が良い。 UPDATE [working] SET [working].[value] = (SELECT [products].[price] FROM [products] WHERE ((([working].[name])=[products].[name]))); UPDATE [working] INNER JOIN [products] ON [working].[name]=[products].[name] SET [working].[value] = [products].[price]; スマホからテキトーに書いてるので間違ってたらスマン。
>>953 上のは,更新可能なクエリであることが必要です と怒られました. 下のは成功です.ありがとうございます. FROMを記載したコードでは出来ないというのが興味深いですね. クエリーと一般のSQLではコードを処理する方法がかが違うんですかね? 聞きかじりですが,オプティマイザとか実行計画とか言う奴ですかね? 次はクエリを参照するUPDATEを書かないといけないのですが,テーブルならOKでクエリでは怒られるんですよね. http://www.10days.org/diary/20090705.html とかその他いろいろヒットしますが,VBAからSQLを発行したら出来るんですかね? とりあえず実験します. >>951 横入だがAccessがUPDATEでのFROMを サポートしていないという意味での「FROMがないから」 じゃないの? >>954 確かAccessはUPDATEでFROMは使えないぞ >>956 マジすか?ありがとうございます. SQLって方言が多いんですね. 昔はオラクルとかに直接更新クエリ実行しようとして固まってたなあ、、、 ハード性能上がった今でも固まるのかね?
リンクテーブルに対して何かするのを「直接」とは言わないからな?
それ以前に、ハード性能で固まったことなんてないんだが 単に遅いだけで固まったって言ってるのかね
>>963 初代ペンティアムマシンでAccess97で動かした事無い人かな >>964 それは何自慢?俺は20年前からACCESS やってるベテランだぞすごいだろう? >>964 だからそれは単に遅いだけだろうと言ってるんだが ついでに言えば、ACCESSで外部DBMS使うときに一番気を付けるべきは回線の速さだがな その環境でも、100MのLANならそれなりに快適だったわ 多分動いたと思う。 ペンティアム90では確実に動いた。 当時486DX100マシンにOffice入れてたと思うんだが、そのマシンでAccess動かしたかどうかで記憶が無い。
Windows95が動いてたからOFFICEの95も動いてたと思う
>>970 出張でアキバ行ったらチラシ貰った。あんな事件起こすなんて夢にも思わず、スペックのわりに安いじゃんなんて思ってたわ。 DAOでmdbに接続して、フォーム上のコントロールボタンのCaptionを大量に一括変更したいんだけど、できるかな? データーベースオブジェクトのメンバーのリストを眺めてもフォーム関連がないので、だめなのかな?
リンクが死んでいて読めません。 ネット探しても情報が見つかりませんね。 パッチを当てるときに便利な気がするのですが… 私が知ってるパッチはモジュールやフォームを入れ替えるものばかりですが、一部編集みたいなことが出来ると便利な気がしますがどうでしょうか。 コードを1行書き換えとか出来ると便利な気がしますが、リスクもありそうですね。
>>974 MSのURLは2chのリンク表示と相性が悪いからクリック カッコまで全部コピーしてブラウザに貼りつけないと付けると飛べるぞ ラベルを外部リソースにしてフォーム側で呼び出すのが正攻法な気がするが 多言語対応とか マクロの編集をVBAで出来ませんかね?バージョンアップの際にカスタマイズ済のAutokesyを再現したいもので。
>>978 出来る、何年か前に前の勤め先でやったわ あまり覚えてないが、VBEにアクセスする方法があって それで出来たと思う ググりながらやった覚えがあるからググれば 何かヒントが出てくると思う >>979 saveastextですね。あれ、最近のoffceだとゴミコードが1行あって、そのままでは読み込めないんですよね。 業務用ソフトでどこからもGOTOされていないラベルがあるんだけど、作った奴は馬鹿なのかな?
そうですか… 宣言だけして使わない変数や、空のプロシジャー、その空のプロシジャーを呼び出す無意味なプロシジャー、戻り値を変数に格納だけしてなにも利用しない関数とか意味不明なことが多くてPGの世界ってカオスなんだな。 リーダブルコードとかだと絶対に怒られるようなことが目白押しだわ。
そう、動きゃいいんだから 見た目なんか気にしてたら絶対に間に合わない
なるほど… カスタマイズしている方からすると添削をしているよう気分になりますね。 稼働しているコードの何倍もあるコメントアウトされた過去コードとかあって、正にべからず集みたいなもんですね。
>>987 FileMakerはスクリプト(マクロ)しか無いからな >>988 両方そなわってたら、Accessを潰せてたのにね。 マクロのAutokeysが急にキーを取りこぼすようになった。F1を押すとプロシジャーの実行をしてくれないでHELPが立ち上がる。 F2等をおしても無反応になってしまった。officeのアップデートが原因かな?WIN7とAccess2016の組み合わせなんだけど分かる人いますか?
Access最近アプデしてないな 古いのまだ使ってる
>>991 2013使ってるならアプデする意味がほぼないし 20年くらい前はAccessファイルはいつ壊れるかわからない。 って言われてたけど、いまってどうなの?
>>993 同じだと思うよ。いつもは動くプロシジャーが変な挙動するようになってそのうち、フォームが全部消えちゃうとか何度もあった。というかこの1週間でもあったよ。本当にポンコツだよ。 とはいえ、ここまでカスタマイズが自由に出来るDBって他に無いような気がするけど、どうなんだろう。 WindowsFormの不自由さにはびっくりしたな
>>996 小規模のシステムでも テーブル用のmdbとフォーム用のmdbを分けて リンクで管理すると壊れるケースはかなり減った lud20221025180208ca
このスレへの固定リンク: http://5chb.net/r/tech/1328536426/ ヒント: 5chスレのurlに
http ://xxxx.5ch
b .net/xxxx のように
b を入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「Access VBA 質問スレ Part1 YouTube動画>1本 ->画像>3枚 」 を見た人も見ています:・Access VBA 質問スレ Part2 ・Excel VBA 質問スレ Part66 ・Excel VBA 質問スレ Part68 ・Excel VBA 質問スレ Part67 ・Excel VBA 質問スレ Part50 ・Excel VBA 質問スレ Part74 ・Excel VBA 質問スレ Part70 ・Excel VBA 質問スレ Part75 ・Excel VBA 質問スレ Part77 ・Excel VBA 質問スレ Part72 ・Excel VBA 質問スレ Part65 ・Excel VBA 質問スレ Part73 ・Excel VBA 質問スレ Part69 ・Excel VBA 質問スレ Part71 ・Excel VBA 質問スレ Part49 ・Excel VBA 質問スレ Part61 ・Excel VBA 質問スレ Part57 ・Excel VBA 質問スレ Part60 ・Excel VBA 質問スレ Part51 ・Excel VBA 質問スレ Part58 ・Excel VBA 質問スレ Part64 ・Excel VBA 質問スレ Part63 ・Excel VBA 質問スレ Part79(ワッチョイあり) ・【BlackDesert】黒い砂漠 質問スレ Part21 ・【BlackDesert】黒い砂漠 質問スレ Part18 ・Hearthstone: Heroes of Warcraft 質問スレ part40 ・【TESO】The Elder Scrolls Online 質問スレ Part27 ・【TESO】The Elder Scrolls Online 質問スレ Part24 ・【TESO質問】The Elder Scrolls Online 質問スレ Part1 ・Hearthstone: Heroes of Warcraft 質問スレ part41 ・【BlackDesert】黒い砂漠 質問スレ Part19 [無断転載禁止] ・【BlackDesert】黒い砂漠 質問スレ Part28 [無断転載禁止] ・【BlackDesert】黒い砂漠 質問スレ Part31 [無断転載禁止] ・【BlackDesert】黒い砂漠 質問スレ Part14 [無断転載禁止] ・【TESO】The Elder Scrolls Online 質問スレ Part15 [無断転載禁止] ・Excel VBA 質問スレ Part81 (889) ・Excel VBA 質問スレ Part80(ワッチョイあり) (87) ・Excel Python 質問スレ ・【BlackDesert】黒い砂漠PC版 質問スレPart67 ・【BlackDesert】黒い砂漠PC版 質問スレPart61 ・【miHoYo】崩壊3rd 質問スレ Act.1 [無断転載禁止] ・【MACRO】Google Apps Script 質問スレ【DRIVE】 ・【PC】Terraria 質問スレ Part17 ・au Xperia Z1 SOL23 質問スレ part3 ・PSVita 質問スレ part1 [無断転載禁止] ・WIXOSS-ウィクロス- 質問スレPart2 ・【海外通販】AliExpress初心者質問スレ 20 ・【海外通販】AliExpress初心者質問スレ 21 ・【海外通販】Aliexpress初心者質問スレ 2 ・【海外通販】AliExpress初心者質問スレ 17 ・【海外通販】AliExpress初心者質問スレ 8 ・【海外通販】AliExpress初心者質問スレ 15 ・【海外通販】AliExpress初心者質問スレ 19 ・【海外通販】AliExpress初心者質問スレ 12 ・【海外通販】AliExpress初心者質問スレ Part2 ・【海外通販】AliExpress初心者質問スレ 7 【ワッチョイ】 ・【海外通販】AliExpress初心者質問スレ 6 【ワッチョイ】 ・【PS4】Destiny2 質問スレ14【デスティニー】 ・【PS4】Destiny2 質問スレ13【デスティニー】 ・Counter-Strike: Global Offensive 質問スレ Part3 ・Excel ピボット Power Pivot DAX関数 質問スレ (13) ・WebObjects 質問スレ
10:43:11 up 15 days, 21:07, 1 user, load average: 8.75, 8.84, 9.44
in 0.053185939788818 sec
@0.053185939788818@0b7 on 122800