質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

3回答

442閲覧

access2010 VBA で登録済みレコードをSQL文で編集したい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2019/06/04 06:00

編集2019/06/04 06:43

##質問内容
access2010で伝票管理システムを作成している者です。

今回は例として顧客についてですが
登録した既存のレコードを編集する方法を教えてほしいです。

なお、いままでSQL文で作成してきたのでそれで教えてくださると幸いです。

##概要
1,新規入力フォームで顧客番号、顧客名、住所を入力します。
2,顧客マスタに登録されています。
3,マスタのレコードごとにある編集ボタンを押すと、入力フォームと共通の編集フォームが開き、選択したレコードのデータが各テキストボックスに参照されています。

※ここまではできています※

4,編集したい箇所を編集し、編集完了ボタンを押すとデータが更新され、マスタに反映されます。
↑この作業がわからないです。

テーブルは保存用のT_Customer

入力用のT_WCustomer
があります。

##試してみたこと

VBA

1Private Sub edit_tables() 2 3 Dim SQL As String 4 5 SQL = "UPDATE T_Customer SET F_CustomerName = Text_CustomerName,F_Address = Text_Address WHERE T_Customer,F_CustomerCode = T_WCustomer,F_CustomerCode" 6 7 With Application.CurrentDb 8 .Execute SQL 9 End With 10 11 Me.Requery 12 13End Sub

※Text_~ は、テキストボックス名です

不明な点があればコメントください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

文章の説明とコードが合致していないですが、
本テーブル T_Customer
ワークテーブル T_WCustomer
両者の主キーが F_CustomerCode
として、

VBA

1SQL = "UPDATE T_Customer INNER JOIN T_WCustomer " & _ 2 "ON T_Customer.F_CustomerCode = T_WCustomer.F_CustomerCode " & _ 3 "SET F_CustomerName = Text_CustomerName, F_Address = Text_Address"

saziさんとかぶった。
しかも、Text_CustomerName と Text_Address は名前から推測するに、フィールド名ではなくテキストボックス名の可能性が高い。ということで、saziさんと同じだか、下記に修正

VBA

1SQL = "UPDATE T_Customer AS T INNER JOIN T_WCustomer AS W " & _ 2 "ON T.F_CustomerCode = W.F_CustomerCode " & _ 3 "SET T.F_CustomerName = W.F_CustomerName, T.F_Address = W.F_Address"

投稿2019/06/04 06:39

編集2019/06/04 06:47
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/04 07:10 編集

回答ありがとうございます! 無事、問題が解決いたしました。 とても、参考になりました!
guest

0

ベストアンサー

SQL内にフォームの項目を埋め込んで実行する場合は、.ExecuteではなくDoCmd.RunSQLを使用します。
Executeで実行する場合には、コントロールは文字列内に含めず、参照します。

VBA

1SQL = "UPDATE T_Customer SET F_CustomerName = '" & Text_CustomerName & "',F_Address = '" & Text_Address & "' WHERE F_CustomerCode = " & Text_CustomerCode

ただ質問の内容では編集用のワークテーブルとフォームは連結しているようですから、テーブル同士で更新を行えば良い事になります。

VBA

1SQL = "UPDATE T_Customer as T inner join T_WCustomer as W on t.F_CustomerCode = w.F_CustomerCode SET T.F_CustomerName = W.F_CustomerName, T.F_Address = W.F_Address"

投稿2019/06/04 06:38

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/04 06:59

度々お世話になります。 回答ありがとうございます。 DoCmd.RunSQLで実行してみましたが エラーで引数は省略できません と出てしまいます。。。
sazi

2019/06/04 07:05 編集

DoCmd.RunSQL SQL のようにします。 尚、コントロール名の記述は、 Forms![フォーム名]![コントロール名] のように記述する必要があります。
退会済みユーザー

退会済みユーザー

2019/06/04 07:05

どこに記述すればよいでしょうか?
sazi

2019/06/04 07:06

SQL="update xxx" のSQL文字列内です。
退会済みユーザー

退会済みユーザー

2019/06/04 07:09

ありがとうございます。 無事成功いたしました。 本当に助かりました!
guest

0

FROM T_WCustomer が抜けていますし、 テーブル名,カラム名 ではなく、テーブル名.カラム名。
サンプル

投稿2019/06/04 06:11

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問