• ベストアンサー

Accessにてデータの更新

Accessにて、フォームにボタンを作成し、クリックすると フォームのテキストボックスのデータを取得し、 テーブルのデータを更新するVBAを作りたいのですが、 mySQL = "UPDATE テーブル名 SET フィールド名 = '1234'" このようにすると、フィールドが1234のデータに更新されるのですが、 これを namae =Me!テキストボックス名 mySQL = "UPDATE テーブル名 SET フィールド名 = namae" とするとうまくいきません。 正しい書き方をお願いします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.2

何か目的があって変数を使っているのなら別ですけど、 mySQL = "UPDATE テーブル名 SET フィールド名 = '" & Me.テキストボックス名 & "'" で良いのでは?

yuuchan
質問者

お礼

すみません、私のミスで 「'」をひとつ入力忘れていました。 うまくいきました!! ありがとうございます。

yuuchan
質問者

補足

ご回答ありがとうございました。 vizzar様のおっしゃるように、テキストボックス名で 直接でもよかったのですが、 変数にしているのは、別に使うものがありましたので・・・。 mySQL = "UPDATE テーブル名 SET フィールド名 = " & Me.テキストボックス名 & "'" 'カレントデータベースを変数に代入する Set myDB = CurrentDb 'SQLを実行する myDB.Execute mySQL 上記のようにした場合にも、SQLを実行するの部分で エラーが発生します。 書き方に問題がありましたら、ご指導お願いいたします。

その他の回答 (1)

  • shaori
  • ベストアンサー率18% (6/32)
回答No.1

>これを >namae =Me!テキストボックス名 >mySQL = "UPDATE テーブル名 SET フィールド名 = namae" namaeは変数なので mySQL = "UPDATE テーブル名 SET フィールド名 = " & namae & """" だと思います^^

yuuchan
質問者

補足

早速、ありがとうございました。 おっしゃったように、下記のように書いたのですが、 namae = Me!テキストボックス名 mySQL = "UPDATE テーブル名 SET フィールド名 = " & namae & """" 'カレントデータベースを変数に代入する Set myDB = CurrentDb 'SQLを実行する myDB.Execute mySQL SQLを実行するところで、問題が発生します。 書き方に間違いがあるでしょうか? よろしくお願いいたします。

関連するQ&A

  • Access VBAにて Betweenの書き方

    AccessのVBAにて、データを更新したいのですが、 mySQL = "UPDATE テーブル名 SET フィールド名 = '" & kihyouCD & "' where 数量 between 1 and 60;" 上記のBetweenの部分に変数を代入したいのですが、 Dim Kaishi,Syuryo as Integer Kaishi = Me!開始 Syuryo = Me!終了 mySQL = "UPDATE テーブル名 SET フィールド名 = '" & kihyouCD & "' where 数量 between Kaishi and Syuryo;" これだとうまくいきません。 書き方が間違っていると思うのですが・・・ よろしくお願いします。

  • アクセスでデータを分配するには

    フォームにテキストボックスが3つあり 企業名を入力するテキストボックスと 駅名を入力するテキストボックスが2つあり登録ボタンを 押下すればテーブルに2つレコードが作成されるようにしたいのですが どうすればいいのでしょうか? 例えばテキスト1の企業名に ●●商事 テキスト2の駅名に銀座 テキスト3の駅名に有楽町と入力し登録ボタンを押下すればテーブル のフィールド名、企業名に●●商事フィール名 駅名に銀座というデータともうひとつ とフィールド名、企業名に●●商事フィール名 駅名に有楽町というデータの2つのデータが テーブルに作成されるようにしたいのですが。。

  • データ更新後にDlookupによるデータ表示

    困っています。フォームで、フィールド[氏名コード]に入力したら、マスターテーブル「名前表」(フィールド名:[名前コード],[名前])を参照して、テキストボックス[氏名]に名前を表示するようにしたいと思います。テキスト[氏名]のデータプロパティに =Dlookup([名前],[名前表],[氏名コード]=[名前コード])としたら、最初は、うまく表示されますが、2回目にデータ更新したら、すぐに更新後のデータが表示されません。一度、フォームを閉じて、また開いたら更新後のデータが表示されますが・・・・更新後のイベントなど使って、すぐ表示されるようにできないでしょうか?よろしくお願い致します。

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

  • アクセス2000でデータの追加がうまくいかないんですけど

    アクセス2000を使ってます。 基礎データというテーブルを作って、そこに「テキスト」というメモ型のフィールドを作り、 参照追加フォームというフォームを作って、その中に二つのテキストボックスを配置し、一方のテキストボックス1には「基礎データ」の「テキスト」をコントロールソースとして設定し、他方のテキストボックス2は非連結にし、コマンドボタンを二つ配置して、一方のコマンドボタン1を押すと、テキストボックス1のデータがテキストボックス2のデータにコピーされるようにVBAコードを書き、さらに、もうひとつのコマンドボタン2を押すと、非連結のテキストボックスのデータを、基礎データテーブルの「テキスト」というフィールドに追加する追加クエリを動かすようにしました。  このような状況で、コマンドボタン2を押すと、非連結のテキストボックス2のデータが、全角126文字までなら正常に動作するのですが、それ以上(全角127文字以上)になると、「引数が無効です。」というエラーが出てしまいます。 基礎データテーブルの「テキスト」はメモ型に設定してあるのに、どうしてこのようなエラーが出てしまうのでしょうか?誰か教えてください。  ※ためしに、追加クエリ単独で動かして、全角127文字以上のデータを入れた場合には、追加クエリは正常に動作します。これって、フォーム側の問題なんですか?  

  • アクセスで、テーブルのデータが更新できない

    アクセスで、テーブルのデータが更新できない accessについての質問なのですが、テーブルの中のデータを(フォーム等を使わず)テーブルを開いて直接データを書き換えました。 フィールド名などの変更でなく、テーブルの中身の更新です。 そのあと、数日間はその変更された内容が保持されていたのですが、1週間もたたないうちに、またもとに戻っていたのです。(3回以上、同じことがありました) これは何か原因があるのでしょうか。それとも、このaccess自体が何かおかしくなっているのでしょうか??

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • 【Access2003】

    検索フォーム(帳票フォーム)にて各レコードにチェックボックスを設けています。 クエリにて抽出したレコードをボタンクリックで全チェックボックスを選択(Yesに)したいのですが、うまくいきません。 ボタンのプロパティの『クリック時』にどういうVBAを指定したら良いのでしょうか? ちなみに、その逆はできます。 Private Sub 選択全解除_Click() Dim CN As ADODB.Connection Dim mySQL As String Set CN = CurrentProject.Connection mySQL = "UPDATE T_データベース SET 選択=False;" CN.Execute (mySQL) Me.Requery CN.Close Set CN = Nothing End Sub 選択=True;にするとテーブルの全レコードがYesになってしまいます。 テーブル名の部分にクエリ名を指定してもうまくいきません。 宜しくお願い致します。

  • ACCESS2003でテーブルと一致したときだけメッセージを表示するには?

    はじめまして、アクセスでデータベースを作成していたのですが、わからないことが出てきてしまい困っております。 フォーム上で、テキストボックスに入力した文字列(テキスト形式)をテーブル内のデータと照合し、一致すれば「保留対象の商品です」、なければ「保留対象の商品ではありません」といったテキストボックスを表示できるようなボタンを作りたいのです。 登録条件を変更するのではなく、メッセージが表示できさえすれば良いのです。 IFとDcount、msgboxを組み合わせることで表示できるような気はするのですが、エラーが出てしまい、作動してくれません。 私の書いたVBAコードは IF Dcount("フィールド名","テーブル名","フィールド名="" & Me!テキストボックス名") = 1 Then Msgbox "保留対象の商品です" Else msgbox "保留対象の商品ではありません" End IF 結局、テキストボックスに入力されたデータと対象のテーブル内データを検索し、一致するデータを数えて、1個のときにメッセージを出すようにしてみたのです。 しかし、うまく動いてくれません。。 詳しい方がいらっしゃったらアドバイスいただければ幸いです。 よろしくお願いいたします。

  • Accessのフォームで…

    Access 2010のフォームのリストボックスで、あるテーブルのフィールドの値を選択した場合に、同じテーブルの同じレコードにある違うフィールドの値を、テキストボックスに読み込みたいのですが、どうすれば出来ますでしょうか? VBAのサンプルソース等でも構いません。回答お願いしますm(_ _)m

専門家に質問してみよう