アクセスでフォームのテキストボックスの値をテーブルにコピーする方法

このQ&Aのポイント
  • アクセスでフォーム上にある非連結テキストボックスに日付を入力し、コマンドボタンをクリックすると、テーブルにある日付のデータを削除し、入力された日付を挿入する方法を教えてください。
  • データのクリアはされるが、入力した日付は入らないという問題が発生しています。
  • アクセス初心者でも分かりやすい説明をお願いします。
回答を見る
  • ベストアンサー

アクセスにて、フォームのテキストボックスの値をテーブルにコピーしたい

初めて質問させていただきます。宜しくお願いします。 アクセスで、 ===フォーム上にある非連結テキストボックスに、日付を入力し、コマンドボタンをクリックすると、テーブルにある日付のデータをクリアし、その後フォーム上のテキストボックスに入力した日付を挿入===の方法を教えていただきたいと思います。 CurrentDb.Execute "DELETE * FROM T_設定日;" CurrentDb.Execute "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');" 上記でやってみたところ、データのクリアはされるのですが、その後、テキストボックスに入れた日付は入りません。エラーは出ません。 アクセス初心者で、分かりにくい説明と思いますが、宜しくお願いします。

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

  • ベストアンサー
  • yoyo_h8
  • ベストアンサー率41% (5/12)
回答No.3

こんばんは。再びです。 先ほどは、]が二つついていたりしたのでそのままコピーしたらコンパイルエラーになってしまったかもしれません。ごめんなさい。 あと、"!"ではなく、"."でやってみてください。 たぶんですが、Me.と、"."までうつと、その横にぴろっとその続きに入力することができる入力候補がでてくるのではないかと思います。(この場合は、候補の中を↓ボタンでたどっていくと"年月日"というのがでてくると思います) あと、日付型の場合は"#"を前後に設定してあげる方がよいようです。 CurrentDb.Execute "INSERT INTO T_設定日(日付) VALUES (#" & CDate(Format(Me.年月日.Value, "yyyy/mm/dd")) & "#);" こんな感じ↑。 これを実行すると、たとえば2005/09/22とテキストボックスに指定した場合、 "INSERT INTO T_設定日(日付) VALUES (#2005/09/22#)" というSQLが発行されます。 #というのは、ここからここまでが日付ですよと認識させてあげるものだそうです。 #ではなく、'でも動くとは思いますが、せっかくなので#で覚えたほうがよいかと思われます。 私にとってもいい勉強になりました。 もし、それでもだめだったらまた結果を教えてください。 それではよろしくお願いします。

matakaru
質問者

お礼

yoyo h8様 大変ありがとうございました。出来ました!! 何度やっても、「Meキーワードの使用方法が不正です」が出てしまい、色々調べたところ、標準モジュールに作成していたためで、フォームモジュールに記述ところ、成功しました。 結局、自分の基本的なミスでyoyo h8様にご迷惑をおかけしました。No.3はもちろん、No.2 でも大丈夫でした。 本当にありがとうございました。

その他の回答 (2)

  • yoyo_h8
  • ベストアンサー率41% (5/12)
回答No.2

さきほど回答したものです。 追加で補足します。 テーブルの設定日のデータ型を日付/時刻型にして、テキストボックスに、"2005/08/20"という形で日付を指定した例です。 CurrentDb.Execute "INSERT INTO T_設定日(日付) VALUES ('" & CDate(Format(Me![年月日]].Value, "yyyy/mm/dd")) & "');" でいけると思います。

  • yoyo_h8
  • ベストアンサー率41% (5/12)
回答No.1

こんにちは。 まずは1箇所。 >CurrentDb.Execute "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');" この書き方だと、 "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');" というSQL文を実行することになります。 このとき、T_設定日の設定日という項目にセットしに行く値は'Me![年月日]'という文字列を設定しにいこうとします。 それは、'(シングルクォート)でかこまれた値は文字列と認識するので、そのままのを設定しに行きます。 なので、フォームのテキストボックスに設定している値をいれたいのであれば、 "INSERT INTO T_設定日(設定日) VALUES (" & Me![年月日].Value & ");" と変えてあげる必要があると思います。 あとは、テーブルの設定日という項目のデータ型と、入力する日付の指定方法などを考慮して、型変換が必要になるかもしれません。 (そこに関しては、質問に書かれていなかったのでこれ以上は回答できません。ごめんなさい) では、がんばってください。

参考URL:
http://www.accessclub.jp//vbakaisetu/19.html
matakaru
質問者

お礼

早速のご回答ありがとうございます。 分かりやすく説明していただき、シングルクォートの意味など良く分かりました。 ただ、No.1とNo.2のどちらで実行しても、 コンパイルエラー:Meキーワードの使用方法が不正です。と出てしまいます。 設定日テーブルの設定日フィールド、フォームの年月日テキストボックスの書式は、ともに日付/時刻型(日付S)になっています。 引き続き、よろしくお願いいたします。

関連するQ&A

  • アクセスのフォーム上のテキストボックスについて

    アクセスのフォーム上のテキストボックスについて フォーム上のテキストボックスに直接数字を入力しようとしています。ただ、このテキストボックスのコントロールソースはフォームのレコードソースと違うものです。 この状況でテキストボックスに数値を直接入力しようとすると、『コントロールソースに連結しているので、編集できません。』と表示され、入力出来ません。 どうすれば、解決できるのかご存知の方、教えて下さい。宜しくお願いします。

  • アクセス2000でテキストボックスのデータをクリアする

    アクセス2000で、誕生日の管理をしていますが、検索条件(特定の誕生日)を テキストボックスに入力して、検索ボタンを押すと、該当者の一覧フォームが 開くようになっています。 該当者一覧のフォームには、検索条件を設定する画面に戻るボタンがあります。 検索は正しくできるのですが、戻るボタンをを押して、検索画面に戻った時に 前回入力したデータが残ってしまいます。 この前回のデータを自動的にクリアする方法はありますか?

  • テキストボックスへの値代入(access 2003

    フォーム上のテキストボックス「売上日」に日付を入力すると、同じフォーム上の「請求書発行日」にも、「売上日」に入力した日付が、自動的に入力されるようにする方法を教えてください。 どうぞよろしくお願いいたします。

  • Access2000でフォーム上のテキストボックスで計算はできるのでしょうか?

    Access2000のフォーム上に「生年月日」と「現在年齢」というテキストボックスがあります。 「現在年齢」というテキストボックス内で、関数を使用して(日付関数だと思うんですが)今、何歳かという表示をしたいのですが、できるのでしょうか?

  • アクセスで同じ値を引き出してくる方法

    アクセス初心者です。 フォームのテキストボックス(txt開催日)に『12345』と言う値が入っています。 テーブル(T_受講料)で『12345』は『5000』と言うテーブルを作っています。(他、多数のデータがあります) そのテーブルは単独でリレーションを結んでいません。(構造上無理なため) どうやったら、フォームに新たに作ったテキストボックスに『5000』を入力できるのでしょうか? よろしくお願いします。

  • フォームのテキストボックスで・・。

    数字を入力し次のテキストボックスに移るときに自動的に「:」をつけた形にしてaccess上に記憶させるというものを作ってます。たとえばフォームのテキストで「1300」といれたら次のテキストボックスに移るときに自動的に「13:00」とテキストボックスに収められそれをaccess上に残すという形です。うまくいかずに困ってまして大変説明が曖昧ですがどなたか回答くださいますようお願いします。

  • フォームのテキストボックスに一番新しいテーブルの値を入れるには?

    こんにちは、VBA初心者です。アクセス2000を使用してます。 現在、フォームのテキストボックス(年月度)の初期値に、DMAXでテーブルにある(年月度)の値を入れてます。 過去の年月度を入れる時は、手入力で変更してるのですが、続けて入力したい場合、DMAXになってるので、初期値が一番新しい(年月度)になってしまいます。 これを、前回入力した(年月度)を初期値にするには、どうしたらいいでしょうか? Private Sub Form_Current() Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("年月度マスター", dbOpenDynaset) If IsNull(Me![年月度]) Then Me![年月度] = DMax("年月度", "データ") End If If Me![データID] = 0 Then Me!データID = rst![マスターデータID] + 1 rst.Edit rst![マスターデータID] = Me!データID rst.Update rst.Close End If End Sub

  • ACCESS2000の帳票フォームでテキストボックスの入力値を取得したい

    こんにちは。ACCESS2000でツールを作成しています。 テーブルはExcelにリンクさせ、クエリを介して帳票フォームで データを表示しています。 帳票フォームのレコード毎にテキストボックスを追加して それぞれ入力できるようにし、その値をVBAで取得したいのですが どうすればよいでしょうか。 テキストボックスを追加して実行すると、一つのテキストボックスに 入力した値が全てのレコードに反映されているようです。 帳票フォームのしくみがよく分かりません。 どなたか教えていただけないでしょうか。 宜しくお願いします。

  • Access テキストボックスとコンボボックス

    Access初心者で、勉強がてらデータ登録フォームを作成しています。 フォーム上にコンボボックスを設置し、 テーブルに保存されているデータを検索できるようにしたのち、 テキストボックスのコントロールソースには簡単に 「=[コンボボックス].[column](2)」としています。(それぞれの名前は仮称です) 後から、テキストボックスひとつで 「コンボボックスからの検索結果を表示させる」と 「テキスト入力も可能とする」 を共存させたいと思い始めたのですが、可能になりますでしょうか。 ただし「コンボボックスからの検索結果表示」をしたテキストボックスに対し、 その情報をフォーム上で書き換えたとしても、テーブル側のデータ書き換えは行いたくありません。 よろしくお願いいたします。

  • アクセスのフォーム上にあるテキストボックスについて

    いつもお世話になります。 OS:XP、Access2003です。 テキストボックスに何か入力された後にエンターキーが 押されたときのイベントをひろいたいのですが、 テキストボックスのプロパティで表示されるイベント にはないようです。 エンターキーが押された場合のイベントはひろえる のでしょうか? よろしくお願いいたします。

専門家に質問してみよう