1 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:46.88 ] AccessのVBAに関する質問スレです ★1 質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンは必ず書きましょう。 ★2 AccessのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 AccessのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、 コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★5 わからなければとりあえず「マクロの記録」(Alt, T, M, R) 関連スレ Excel VBA 質問スレ Part23 toro.2ch.net/test/read.cgi/tech/1327763113/l50
32 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 11:59:42.32 ] WindowsXP Access2003 DoCmd.RunCommand acCmdSaveRecord の使いようがよくわかりません。 例えば テーブルA フィールド1〜3 についてフォームで値を入力できるようにしたとします。 フォームに入力して閉じるとテーブルのレコードは更新されています。 DoCmd.RunCommand acCmdSaveRecord を使うとフォームを閉じる前の時点でレコードが更新されるんでしょうか? しかしこの命令文を通過した後でテーブルを開いてみても更新されていませんでした。
33 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 13:16:55.86 ] 馬鹿には無理
34 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 03:27:32.55 ] >>35 Access内でやっている限りは
37 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 11:40:53.57 ] >>30 バックエンドにMySQLを使うといったようなクラサバにすれば50人だろうが 100人だろうが行ける。
40 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 03:16:51.66 ] >>38 了解
41 名前:デフォルトの名無しさん mailto:sage [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