• ベストアンサー

ACCESS2000 INPUTBOX でテーブル名を入れながらテーブル作成

こんにちは。 ACCESS2000 で、さいきん初心者に毛が生えてきました。 通常 VBA を書くときはマクロでいったん作成してから、都合よく書き直しています。 が、マクロに「テーブル作成」という選択肢がありません。 それでマニュアルを見ながら CREATE TABLE 0310 ( WHS CHAR(30), CODE CHAR(30), NAME CHAR(50), LOC CHAR(30), QTY LONG ); というSQL文を書きました。これで必要なテーブルは得られるのですが、このテーブル名が毎日変わるので(日付です)、VBA のINPUTBOX でテーブル名を入れながら毎日の作業をしたいのです。 ちなみにSQL 文はQUERY として登録し、マクロの「クエリを開く」で実行することだけはできるんですが。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

ボタンでも作ってクリック時のイベントにでも下記を Dim cn As New ADODB.Connection Dim strSQL As String Dim tbnm As String tbnm = InputBox("日付を入力してください") Set cn = CurrentProject.Connection strSQL = "" strSQL = strSQL & " CREATE TABLE " strSQL = strSQL & tbnm strSQL = strSQL & "(WHS CHAR(30),CODE CHAR(30),NAME CHAR(50),LOC CHAR(30),QTY LONG);" DoCmd.RunSQL strSQL これでInputBoxに入力された0310などの名前でテーブルを作成できます。 しかしデータベースの定義から見れば同構造であるテーブルが毎日増えていくというのは概念から外れていると思いますが・・。 まぁそれなりの理由はあると思います。しかし#1のs_huskyさんの意見に賛成です。 テーブルを一つ作り日付のフィールドも作っておきそのテーブルにクエリでレコードを追加していく方がベターだと思います。

megumaru
質問者

お礼

ありがとうございました! モジュールに貼り付けてみたら、ちゃんとできました。 先日、Office系ソフトの質問の方でも助けてくださった方ですね、いつもありがとうございます。 SQL文をQUERY 登録して、マクロ登録してモジュール化すれば、SQL 文の変数にしたいところをできるかなっと思ったんです(安易)。 それでちょっと、そうしなければならないような思い込みをしてしまったのですが、s_husky さんにさくっと言われたら、冷静になりました。 s_husky さんのやりかたでできると思いますので、今回はその方向でまた考えます。 ただやっぱり、私が今回「知りたい」と思ったことは、「SQL 文をVBA に変換(?)することはできるのか」だったような気がします、その意味で、O_chan さんの回答はものすごくありがたいものでした。 またご指導くださいm(_ _)m

megumaru
質問者

補足

ドン臭くてすみません。 当初の質問から、ちょっと外れてきてるんですが、、、 「お礼」をしたとき自宅のACCESS2000環境で、「モジュールの新規作成」を始め、 Option Compare Database Dim cn As New ADODB.Connection Dim strSQL As String Dim tbnm As String Function test() tbnm = InputBox("日付を入力してください") ~中略~ DoCmd.RunSQL strSQL End Function として結果を見た(と思う)のですが、いま会社で同じことをすると cn As New ADODB.Connectionが反転し 「コンパイルエラー:ユーザ定義型は定義されていません」と出ます。 いろいろいじったら Option Compare Database Function test2() End Function Dim cn As New ADODB.Connection Function test() ~以下略~ こうすると実行できることがわかりました。 「参照設定」の Microsoft DAO 3.6 Object Livrary にはチェックがついています。 他の方も言ってくれていますので、このやり方に固執しているわけではないのですが。 どういうことか、おわかりになりますか??

その他の回答 (3)

回答No.4

私も #1 さんの意見に賛成。 頻繁にデータベースの構造が変化するのはやりたくないですね。 現行のテーブル構造に日付を入れる列を加えるだけで済む話かと思います。

megumaru
質問者

お礼

ありがとうございました。 私も慣れてくると、それが当然だと思うようになると思います。。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

DAO http://www.accessclub.jp/samplefile/help/help_67_1.htm http://www.accessclub.jp/dao/CreateTableDef.html などを参考に CreateTableDefメソッド というのもあります。 ADO(ADOX) http://www.geocities.co.jp/Playtown-Dice/9019/daoandado.html http://members.at.infoseek.co.jp/kenchan_h/index18.html のADOXのテーブルの作成部分 など

megumaru
質問者

お礼

ありがとうございました。 基本がわかっていないことが、身にしみます。 がんばります。

noname#22222
noname#22222
回答No.1

私だったら、列=テーブル名を追加してテーブル作成は一度きりにします。

megumaru
質問者

お礼

さっそくありがとうございます! なるほど。。そういう考え方もアリですね。

関連するQ&A

  • ACCESS97:VBAでテーブル作成したい

    Access97を利用しています。 VBAでテーブル作成クエリーを、SQL文で直接記述しています。 書き方としては、SELECT 列名 INTO テーブル名 IN DBのパス でいいと思うのですが、例えば会社の部門コードでループさせて、 部門の名前のついたテーブルを作成しようと思います。 さて、テーブル名やDBのパスをパラメータで渡すことは可能なのでしょうか? うまくいかないのですが、もともとムリなことをやろうとしているのでしょうか?

  • アクセスVBAでテーブル作成クエリを作れる?

    アクセス97です。 テーブル作成クエリで 他のmdbに テーブルを作成してるのですが 他のmdbのフルパスが固定でなく可変です。 テーブル作成クエリの 他のデータベース名を VBAで変更出来るでしょうか? もしくは VBAでテーブル作成クエリを 作成出来るでしょうか?

  • Oracleのテーブル作成スクリプトを作成したい

    Oracle8i のDBA Studioで数十の表を作成したのですが、ここからテーブルの作成スクリプトを出そうとして困りました。いわゆる Create Table文なのですが、これを自動で簡単に作る方法はないでしょうか?SQL-ServerのEnterprise Managerでは、SQLスクリプトの作成があって、Create文を簡単に生成できるのですが、これと同じような感覚で、既に作成してあるテーブルのCreate文を出力する方法はないでしょうか?Oracleには、ほとんど慣れていないので、方法があると思うのですが、探し方が悪いらしく途方にくれています。どなたかよい方法を御存じないでしょうか。

  • アクセスのテーブル作成クエリでプロパティに説明を書きたい

    テーブル作成クエリでテーブルのプロパティにある「説明」のところに一文を入れたいのですが、どうしたらよいでしょうか? 「SQLビューで1行加えるだけでOK」という方法があれば助かります。 よろしくお願いします。

  • SQL文でテーブル作成 Access2002

    MySQLで create table testm ( key1 char(008) primary key, data1 int8, data2 int8, data3 int8 ) type=InnoDB; という風なSQLでテーブルを作成したりしますが Accessでは無理なのでしょうか? よろしくお願いします。

  • ACCESS テーブル作成の日付付与の自動化

    いつもお世話になっております。 ACCESSアクセスのクエリ作成方法をご教示願います。 現在、バックアップ用として、毎日テーブルクエリ作成でテーブルを作成しています。 毎日毎日、その日の日付の入ったバックアップを作っているのですが、ワンクリックで、その日の日付の入ったクエリを作成することは可能でしょうか。 ex)本日4/25であれば、ワンクリック→【バックアップ_110425】TBL作成完了 こうしたことがACCESSで可能かどうか、可能であれば、やり方をご教示頂けないでしょうか。 VBAを記載し添削頂きたいところですが、さっぱり見当がつかないため、VBA表記できませんが、それでも良ければご回答いただけますと有難いです。

  • Accessでテーブル名やクエリ名一覧の抜き出し

    Accessでテーブルやクエリを沢山(100個以上?)使っております。 そこで、テーブル名やクエリ名の管理をしたいので、テーブル名(クエリ名)の一覧を抜き出したいのですが、どうすればいいのでしょうか? または、そういうことは無理なのでしょうか??(;O;) 1個づつコピーペーストでテールブル名をエクセルに貼り付けて行こうかな?と思ったのですが、さすがに数が多すぎるので困っております。 できるだけ簡単な方法がいいのですが、もしなければVBAでもいいです。 おわかりの方がいらっしゃいましたら、よろしくお願いします。

  • AccessのテーブルをSQL文にしたい

    urizakaです。 さて、今回質問したいのは、Accessで作ったテーブルをSQL文にする方法です。 具体的には、ACCESSで作ったテーブルを、 CREATE TABLE ××× (              ) INSERT… というSQL文にしたいのですが、これはどうすれば良いのでしょうか? すみませんが、教えてください。            

  • Access VBAでテーブルの確認

    Access 200のVBAで、テーブルが存在しているかどうかのコードをつくれません。存在しなければSQLでCREATEさせるなどの処理をしたいのです。コードを教えてください。

  • オラクルのテーブルについて

    質問があります。 SQL文で指定したテーブル(test_tbl)のCREATEされた 日時とかわかるようなものはないでしょうか? たとえばテーブル (table_a, table_b, teble_c:全て同じ構成だが格納データが異なる)が あって一番最後に作成されたテーブルに アクセスしたい場合なんですが どのようなSQL文になるでしょうか? またそんな事はSQLではかけないような場合、 どのようにすればテーブルのクリエート日付を取得 することができるでしょうか? 宜しくお願いいたします。

専門家に質問してみよう