Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1903 / 2272 ツリー ←次へ | 前へ→

【4683】初心者です・・・フォームからのレコード修正 赤兎馬 05/3/23(水) 15:29 質問[未読]
【4684】Re:初心者です・・・フォームからのレコード... クロ 05/3/23(水) 15:48 発言[未読]
【4685】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/23(水) 16:11 発言[未読]
【4686】Re:初心者です・・・フォームからのレコード... クロ 05/3/23(水) 16:18 発言[未読]
【4687】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/23(水) 16:27 発言[未読]
【4688】Re:初心者です・・・フォームからのレコード... クロ 05/3/23(水) 16:39 回答[未読]
【4689】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/23(水) 16:55 発言[未読]
【4690】Re:初心者です・・・フォームからのレコード... クロ 05/3/23(水) 17:33 回答[未読]
【4696】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 9:46 発言[未読]
【4698】Re:初心者です・・・フォームからのレコード... クロ 05/3/24(木) 10:20 回答[未読]
【4700】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 10:58 発言[未読]
【4702】Re:初心者です・・・フォームからのレコード... クロ 05/3/24(木) 11:02 回答[未読]
【4704】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 11:47 発言[未読]
【4705】Re:初心者です・・・フォームからのレコード... クロ 05/3/24(木) 12:07 回答[未読]
【4708】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 13:00 発言[未読]
【4710】Re:初心者です・・・フォームからのレコード... クロ 05/3/24(木) 13:10 回答[未読]
【4711】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 13:19 発言[未読]
【4712】Re:初心者です・・・フォームからのレコード... クロ 05/3/24(木) 13:25 回答[未読]
【4713】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 13:42 発言[未読]
【4715】Re:初心者です・・・フォームからのレコード... クロ 05/3/24(木) 14:04 回答[未読]
【4719】Re:初心者です・・・フォームからのレコード... 赤兎馬 05/3/24(木) 14:54 お礼[未読]

【4683】初心者です・・・フォームからのレコード...
質問  赤兎馬  - 05/3/23(水) 15:29 -

引用なし
パスワード
   Aフォームで条件を入れて【検索】ボタンを押下するとBフォームが開き、
Bフォーム上で、そのレコードに対して修正を行いたいのですが・・・。

今、単純に【検索】は

Private Sub 検索_Click()

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "Bフォーム"
  
  DoCmd.OpenForm stDocName, , , stLinkCriteria
  DoCmd.Close acForm, "Aフォーム", acSaveNoEnd Sub

↑という感じで、やってるんですけど・・・
Bフォームは開けるのですが、修正しようとすると、「このレコードセットは更新できません」となってしまいます。
初心者なので、本をみようみまねでやってますので、どうしてだか・・・。

お手すきの時に、ご回答お願いします。

【4684】Re:初心者です・・・フォームからのレコー...
発言  クロ  - 05/3/23(水) 15:48 -

引用なし
パスワード
   Bフォームのレコードソースはテーブルですか?クエリですか?
クエリなら更新可能なクエリか否か?

Bフォームプロパティの「更新の許可」はどうなってますか?

【4685】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/23(水) 16:11 -

引用なし
パスワード
   早速のご回答、ありがとうございます。
本当・・・に初心者なので、もう一度ご説明ください・・・。
申し訳ございません。

▼クロ さん:
>Bフォームのレコードソースはテーブルですか?クエリですか?
>クエリなら更新可能なクエリか否か?

⇒クエリですが、更新可能は何処で確かめればよいでしょうか?

>
>Bフォームプロパティの「更新の許可」はどうなってますか?

⇒すみません、プロパティの何処を参照すれば確認できますでしょうか?

本当に悲しいほど初心者なのに、担当になってしまいました・・・。
周りに誰も聞く人がいなくて、参考書のみようみまねです。
すみませんが、よろしくお願い申し上げます。

【4686】Re:初心者です・・・フォームからのレコー...
発言  クロ  - 05/3/23(水) 16:18 -

引用なし
パスワード
   >⇒クエリですが、更新可能は何処で確かめればよいでしょうか?

クエリをデータシートビューで開き編集できるか確かめます。
また、新規にレコードが入力できるか確かめます。
結果を報告してください。

>⇒すみません、プロパティの何処を参照すれば確認できますでしょうか?

Bフォームをデザインビューで開き、F4キーを押下すると現れます。
データタブのところにあります。

>本当に悲しいほど初心者なのに、担当になってしまいました・・・。
>周りに誰も聞く人がいなくて、参考書のみようみまねです。

先程のコードは省略してますよね?
stLinkCriteriaの値(Bフォーム開くときの条件)が何処にも書いてないのですが...

【4687】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/23(水) 16:27 -

引用なし
パスワード
   はぁぁ、全然わかりません。ごめんなさい。

▼クロ さん:
>>⇒クエリですが、更新可能は何処で確かめればよいでしょうか?
>
>クエリをデータシートビューで開き編集できるか確かめます。
>また、新規にレコードが入力できるか確かめます。
>結果を報告してください。

⇒更新は出来ませんでした。やはり先ほどと同じように、更新できませんという
 ことですした。

>
>>⇒すみません、プロパティの何処を参照すれば確認できますでしょうか?
>
>Bフォームをデザインビューで開き、F4キーを押下すると現れます。
>データタブのところにあります。

⇒F4を押したのですが、何も・・・なんです。

>
>>本当に悲しいほど初心者なのに、担当になってしまいました・・・。
>>周りに誰も聞く人がいなくて、参考書のみようみまねです。
>
>先程のコードは省略してますよね?
>stLinkCriteriaの値(Bフォーム開くときの条件)が何処にも書いてないのですが...

⇒条件書かなくちゃいけないんですか?

ってか、こんな私で、できるのでしょうか?不安。

すみません。

【4688】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/23(水) 16:39 -

引用なし
パスワード
   >⇒更新は出来ませんでした。やはり先ほどと同じように、更新できませんという
> ことですした。

了解です。たぶんプロパティの方は、通常でフォーム作成すると
「更新の許可」は「はい」になっているので問題ないと思います。

>>stLinkCriteriaの値(Bフォーム開くときの条件)が何処にも書いてないのですが...
>⇒条件書かなくちゃいけないんですか?

この件はまず、更新可能なクエリにしてから行いましょう。

ではクエリを開いてください。
この状態でメニュー>表示>SQLビューにして下さい。
SELECT...というような文字が出てきますので、コピペしてこちらに貼ってください。
※個人情報に関わるものはクエリでは出てこないと思いますので大丈夫だと思いますが
 テーブル名など気になるようでしたら変更(コピペ後)して下さって結構です。

たぶん2つ以上のテーブルを結合線で繋がれていると思います。

【4689】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/23(水) 16:55 -

引用なし
パスワード
   >この件はまず、更新可能なクエリにしてから行いましょう。
>
>ではクエリを開いてください。
>この状態でメニュー>表示>SQLビューにして下さい。
>SELECT...というような文字が出てきますので、コピペしてこちらに貼ってください。
>※個人情報に関わるものはクエリでは出てこないと思いますので大丈夫だと思いますが
> テーブル名など気になるようでしたら変更(コピペ後)して下さって結構です。
>
>たぶん2つ以上のテーブルを結合線で繋がれていると思います。

SELECT [版権テーブル].[個別ID], [メーカー名修正用クエリ].[メーカー名], [モチーフテーブル].[モチーフ], [版権テーブル].[件名], [版権テーブル].[件名(カナ)], [種別テーブル].[種別], [版権テーブル].[個別名], [版権テーブル].[発売時期], [版権テーブル].[販売台数], [版権テーブル].[備考], [メーカーテーブル].[メーカーID], [メーカーテーブル].[メーカーID]
FROM 販売台数テーブル INNER JOIN (メーカーテーブル INNER JOIN (((版権テーブル INNER JOIN モチーフテーブル ON [版権テーブル].[モチーフID]=[モチーフテーブル].[モチーフID]) INNER JOIN 種別テーブル ON [版権テーブル].[種別ID]=[種別テーブル].[種別ID]) INNER JOIN メーカー名修正用クエリ ON [版権テーブル].[個別ID]=[メーカー名修正用クエリ].[個別ID]) ON [メーカーテーブル].[メーカーID]=[版権テーブル].[メーカーID]) ON [販売台数テーブル].[販売台数ID]=[版権テーブル].[販売台数ID]
WHERE ((([版権テーブル].[個別ID])=[forms]![修正フォーム]![個別ID]))


全然意味がわかりません・・・。ごめんなさい・・・。

【4690】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/23(水) 17:33 -

引用なし
パスワード
   各テーブルの**IDに主キーを設定します。
各テーブルをデザインで開いて以下の**IDにポインタ(カーソル)を
置いてツールバーの鍵マークをクリックしてください。
フィールド名の左のグレー部分に鍵マークつけばOKです。

版権テーブルの個別ID
メーカーテーブルのメーカーID
モチーフテーブルのモチーフID
種別テーブルの種別ID
販売台数テーブルの販売台数ID
以上の5テーブルに鍵マークがつきましたか?

これで一応更新可能なクエリになると思います。

ただし、このクエリで「モチーフ」を変更したとします。
この場合変更されるのは「モチーフテーブル」の「モチーフ」が変更
されますが、これはこれでいいのでしょうか?

見た感じレコードが可変していいテーブルは「版権テーブル」だけで
他のテーブルはマスタみたいな感じがするのですが...
版権テーブルの「モチーフID」を変更したことで「モチーフ」が可変
するような感じでないとマズイのではないでしょうか?

現在使用しているmdbファイル(アクセスの書類)を1つコピーしてバックアップして
から行って下さい。※実際のレコード破損防止のため

【4696】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/24(木) 9:46 -

引用なし
パスワード
   おはようございます。いつも、ありがとうございます。

▼クロ さん:
>各テーブルの**IDに主キーを設定します。
>5テーブルに鍵マークがつきましたか?

⇒ 最初から鍵マークがついてました・・・。
  でも、これで、更新可能なんですね。

>これで一応更新可能なクエリになると思います。
>
>ただし、このクエリで「モチーフ」を変更したとします。
>この場合変更されるのは「モチーフテーブル」の「モチーフ」が変更
>されますが、これはこれでいいのでしょうか?

⇒ そうなんです・・・
  各テーブルが変更されちゃうとまずくって、版権テーブルの内容を
  のみを修正したいのです。
  ん?
  そうすると、上記で書くテーブルを更新可能にしたのはちがうのかな?

【4698】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/24(木) 10:20 -

引用なし
パスワード
   > ⇒ そうなんです・・・
>  各テーブルが変更されちゃうとまずくって、版権テーブルの内容を
>  のみを修正したいのです。
>  ん?
>  そうすると、上記で書くテーブルを更新可能にしたのはちがうのかな?

う〜ん、版権テーブルでは他の各IDしか値をもっていませんよね?
ということは前述のクエリ(SQL文)では版権テーブルのIDを変更する仕様に
なっていません。

版権テーブル上の各IDを変更することでモチーフなどの名称を変えるために
はクエリのフィールドに版権テーブルから各IDを入れば出来ます。
このときモチーフ名を変えるのでなくモチーフIDを変更すれば自動的にモチ
ーフ名が変更になると思います。
クエリ上で試してみてください。

【4700】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/24(木) 10:58 -

引用なし
パスワード
   いつもありがとうございます。

>版権テーブル上の各IDを変更することでモチーフなどの名称を変えるために
>はクエリのフィールドに版権テーブルから各IDを入れば出来ます。
>このときモチーフ名を変えるのでなくモチーフIDを変更すれば自動的にモチ
>ーフ名が変更になると思います。
>クエリ上で試してみてください。

ん〜、ということは、クエリのフィールドに各ID項目を追加する、
ということでしょうか?
一応、クエリに各ID項目を追加してみて、クエリ上で各ID項目に修正を
かけてみたのですが、やっぱり「変更できません」になります。

基本的なことをお聞きしたいのですが・・・
そもそも、このような場合、版権テーブルの内容を修正したりした場合で、
各テーブルの値を参照しているような場合は、このようなテーブル設計では
うまく行かないのでしょうか?
単純に、モチーフやメーカーなどはテーブルにして、実際に表示や変更等の場合
(フォーム上)、各テーブルを参照して、モチーフ名やメーカー名を出したい、
とか、登録したい・・・という感じなんですけど・・・。
誰にも聞く人がいないので、本のサンプルをごちゃごちゃ変更して作成してしまった
ので、もしかしたら、テーブルの持たせ方自体、最初からおかしかった・・・
のではないのかと、思いはじめました。

【4702】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/24(木) 11:02 -

引用なし
パスワード
   >基本的なことをお聞きしたいのですが・・・
>そもそも、このような場合、版権テーブルの内容を修正したりした場合で、
>各テーブルの値を参照しているような場合は、このようなテーブル設計では
>うまく行かないのでしょうか?

そんなことはないと思います。
実際、私のところで前述のSQLからサンプルテーブルを作成しましたが
出来ます。

リレーションとか組んでますか?

【4704】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/24(木) 11:47 -

引用なし
パスワード
   お忙しい中、本当にすみません。

>そんなことはないと思います。
>実際、私のところで前述のSQLからサンプルテーブルを作成しましたが
>出来ます。
>
>リレーションとか組んでますか?

今、もう一回、クエリ上で変更をかけてみました。
やはり、版権テーブルからの項目(例えば個別名など)はちゃんと更新されます。
ただし、各ID項目については、レコード保存をする際に、
「インデックス、主キー、またはリレーションシップで値が重複しているので、
テーブルを更新できませんでした。重複する値のあるフィールドの値を変更するか、
インデックスを削除してください」
とのメッセージが出て、保存できませんでした。
これは、リレーションの組み方ですよね?リレーションは、全て?のリレーション
と、クエリのリレーション(デザインビューで出るやつ)の2つありますよね?
あのへんがおかしいのでしょうか?

【4705】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/24(木) 12:07 -

引用なし
パスワード
   >これは、リレーションの組み方ですよね?リレーションは、全て?のリレーション
>と、クエリのリレーション(デザインビューで出るやつ)の2つありますよね?
>あのへんがおかしいのでしょうか?

メニュー>ツールのリレーションシップで設定すると融通が利かなくなるので
私的にはリレーションシップでの設定はしない方なのですが...
試しにリレーションシップでの設定を外すとどうなりますか?

【4708】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/24(木) 13:00 -

引用なし
パスワード
   早々のレス、ありがとうございます!!

▼クロ さん:
>メニュー>ツールのリレーションシップで設定すると融通が利かなくなるので
>私的にはリレーションシップでの設定はしない方なのですが...
>試しにリレーションシップでの設定を外すとどうなりますか?

⇒とりあえず、メニューからのリレーションシップは全て外してみました。
 それで、クエリ上で修正してみたんですけど、今度は、
 「テーブル'版権テーブル'のレコードに、'→'側と対応するレコードが
  なくなります」
 ということで、修正ができないのです。

【4710】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/24(木) 13:10 -

引用なし
パスワード
   >⇒とりあえず、メニューからのリレーションシップは全て外してみました。
> それで、クエリ上で修正してみたんですけど、今度は、
> 「テーブル'版権テーブル'のレコードに、'→'側と対応するレコードが
>  なくなります」
> ということで、修正ができないのです。

クエリで結合線を引けばいいと思います。
版権テーブル側から同フィールド名(**ID)をドラッグ&ドロップで各テーブルの
同名フィールドに落としてみてください。結合線が書かれます。
その上でモチーフIDを変更するとモチーフ名が変わるか確認してください。

【4711】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/24(木) 13:19 -

引用なし
パスワード
   ▼クロ さん:
>クエリで結合線を引けばいいと思います。
>版権テーブル側から同フィールド名(**ID)をドラッグ&ドロップで各テーブルの
>同名フィールドに落としてみてください。結合線が書かれます。
>その上でモチーフIDを変更するとモチーフ名が変わるか確認してください。

⇒ さっそくやってみました。
  結合線は確かに引かれましたが、先ほどと同じ状態なメッセージで変更
  ができませんでした。
  クエリ上でいいんですよね、修正かけるのは。
  ん〜、なんででしょう?

【4712】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/24(木) 13:25 -

引用なし
パスワード
   >⇒ さっそくやってみました。
>  結合線は確かに引かれましたが、先ほどと同じ状態なメッセージで変更
>  ができませんでした。
>  クエリ上でいいんですよね、修正かけるのは。
>  ん〜、なんででしょう?

テスト的に
版権テーブルとモチーフテーブルでだけでクエリを作ってみてください。
版権テーブルのモチーフIDとモチーフテーブルのモチーフIDを結合線で
結びます。
クエリのフィールドに版権テーブルのモチーフIDをモチーフテーブルの
モチーフ(モチーフ名)を下ろしてください。
この状態でデータシートビューにして、モチーフIDを変更するとモチーフ
(モチーフ名)が可変しませんか?

【4713】Re:初心者です・・・フォームからのレコー...
発言  赤兎馬  - 05/3/24(木) 13:42 -

引用なし
パスワード
   ▼クロ さん:
>テスト的に
>版権テーブルとモチーフテーブルでだけでクエリを作ってみてください。
>版権テーブルのモチーフIDとモチーフテーブルのモチーフIDを結合線で
>結びます。
>クエリのフィールドに版権テーブルのモチーフIDをモチーフテーブルの
>モチーフ(モチーフ名)を下ろしてください。
>この状態でデータシートビューにして、モチーフIDを変更するとモチーフ
>(モチーフ名)が可変しませんか?

できました!!!!!!可変しました!!
なるほど、リレーションシップを適当にいろいろ設定すると大変なんですね!!
ところで、この場合、IDを修正したら、名称が変わってくれるってことですが、
これをフォーム上で修正したい場合は、きっとIDを入力させるんじゃなくて、
名称をコンボボックス?とかで、選択させて、修正って感じが使いやすいですよね?
そういう風なことはできるのですか?

【4715】Re:初心者です・・・フォームからのレコー...
回答  クロ  - 05/3/24(木) 14:04 -

引用なし
パスワード
   >できました!!!!!!可変しました!!
>なるほど、リレーションシップを適当にいろいろ設定すると大変なんですね!!
>ところで、この場合、IDを修正したら、名称が変わってくれるってことですが、
>これをフォーム上で修正したい場合は、きっとIDを入力させるんじゃなくて、
>名称をコンボボックス?とかで、選択させて、修正って感じが使いやすいですよね?
>そういう風なことはできるのですか?

出来ないこともないですが...
出来ればフォーム上ではIDの方コンボボックスにして表示させ、名称(モチーフ名)
コントロールはプロパティで修正不可(使用可能:いいえ/編集ロック:はい)にした
方がいいと思います。

テーブルのルックアップ機能を使えば出来ますが、実際はIDが格納されているのに
名称が表示されるのでチョット混乱します。もう少し勉強されてからの方がいいと
思いますがどうでしょうか?

【4719】Re:初心者です・・・フォームからのレコー...
お礼  赤兎馬  - 05/3/24(木) 14:54 -

引用なし
パスワード
   >
>出来ないこともないですが...
>出来ればフォーム上ではIDの方コンボボックスにして表示させ、名称(モチーフ名)
>コントロールはプロパティで修正不可(使用可能:いいえ/編集ロック:はい)にした
>方がいいと思います。
>
>テーブルのルックアップ機能を使えば出来ますが、実際はIDが格納されているのに
>名称が表示されるのでチョット混乱します。もう少し勉強されてからの方がいいと
>思いますがどうでしょうか?

ですね〜。
今から、ちょっと上記のアドバイスのとおり一回作り直してみます。
一応、このトピ的には本当に助かりました。
ありがとうございました。
また、絶対お聞きしちゃうことになると思いますが、どうぞ、よろしくお願いします。

1903 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free