ACCESS2000の超初心者です。先日に質問を入力しましたが内容を間違えていましたので再掲です。宜しくお願いいたします。
 accessのフォームで元になるクエリの名称を変更した場合、そのフォームは実行しても「データが取り出せません」となってしまうので、フォーム側の設定変更で対応したいのです。このサイトの過去質問からデザインビューのプロパティでレコードソースを新しいクエリに変えればよい となっていたので、やってみましたが「データが取り出せません」のままです。レコードソースはプロパティを開いてデータのタブの▼からクエリを選択して変更しているのですが、変更方法が間違っているのでしょうか。

A 回答 (1件)

クエリ自身は単体で走りますか?


もしかしたら、フォームとクエリの関係でエラーがでているのではなくて、クエリ自身に問題があるのではないでしょうか。

もし、クエリ自身に問題があれば、SQLを貼り付けると回答がたくさんつくかもしれません。
いや、どこか別の所のSQLを貼り付けて使っているのではないか、と勝手に想像しているだけなのですが・・・・・

SQLがなんなのかご存じなければ、後半は読み飛ばしてください。

この回答への補足

boc-ianさま ご回答ありがとうございます。
クエリは単体で走ります。このクエリはテーブルデータから単純に抽出するだけの選択クエリです。フォームは新規作成からピボットテーブルウイザードで元になるクエリとして選択しました。

 実はクエリのSQLを見てみても「FORM」らしき単語は出てきません。クエリ作成時に何かを設定しておかないといけないのでしょうか?
質問が初歩的過ぎて申し訳ございませんが宜しくお願いいたします。

補足日時:2009/05/24 22:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2007のフォームウイザードでデータシートを作りたいが方法が分からない

Access2003では、フォームウイザードでデータシートを作れたが。
Access2007では、フォームウイザードでは単票のフォームしか作れない様だ。

どうやって、作るのだろうか。操作が分からない。

Aベストアンサー

どういう帳票が欲しいかわかりませんが一応例として....
まずAccess上部にある作成をクリックします。
フォームウィザードをクリックして使用するテーブルとフィールドを選択します。
次に表形式を選択すれば帳票形式でフォームが作成されます。

もう1つはその他のフォームから複数のアイテムを選択すれば帳票形式でフォームが作成されます。

QAccess フォームのレコードソースに選択クエリを設定した場合のレコード削除

ACCESS2003を使用しています。
フォームでレコードソースをあるテーブルの選択クエリにしています。
フォームはデータシートビューでレコードを右クリックして削除すると、
削除されますが(画面上からは消えますが)、フォームを再立ち上げすると
元に戻っています。

よく見ると選択クエリからレコード削除しても元のテーブルからは
削除されません。
こういうものなのでしょうか?

Aベストアンサー

リレーションの参照整合性やクエリの内容によっては削除や修正ができない場合があります。

例えばクロス集計クエリのレコードは更新も削除もできません。
また、参照整合性が設定してある場合、設定内容によって削除ができない場合があります。
連鎖削除が許可されていない場合などです。

以下のURLも参考にしてください。
http://www.accessclub.jp/actips/tips_30.htm
ヘルプに書かれている内容がアップされています。

Q【Access】複数フォームを閉じる時の、選択処理について

Access Ver. : 2003
Windows Ver.: XP

Accessフォームの「閉じる時」処理で、下記のような工夫をした
いと考えております。

・フォームがひとつしか開かれていないとき、Accessを終了する
・複数のフォームが開かれている時、そのフォームのみを閉じる

そんなVBAコードがありましたら、教えてください。
何か参考になるページでも、かまいません。
どうぞ、宜しくお願いいたします。

Aベストアンサー

forms.count で開いているフォーム数を得て分岐
Application.quit

Access VBE のヘルプで、CurrentProject オブジェクト を見てみたら?

QAccess サブフォームのレコードソースを変更するには

Accessのプロシージャについて教えてください。

フォーム FM0020 上に、2つのサブフォーム FS002001 と、FS002002 があります。
メインフォームにある値を使って、サブフォームのレコードソースを変更したい
のですが、どうもうまくできません。

FS002001のレコードソースは下記の1行目のコードで変数strSQLに代入出来るのですが、
FS002002のレコードソースは下記の2行目のようにしても
「オブジェクトまたはクラスがこのイベントセットをサポートしていません」
となり、代入出来ないのです。
2つ目のサブフォーム上にあるテキストボックス HMCD が下記3行目のように
すると代入できるので、サブフォームの名前を間違えているわけではないと思うのですが...。
他に原因としては何が考えられますか?
下記の3行を同じモジュール内に続けて書いても2行目だけがひっかかるのでもうお手上げ
状態です..。
なんとか助けてください。
お願いします。



strSQL = Forms!FM0020.FS002001.Form.RecordSource
strSQL = Forms!FM0020.FS002002.Form.RecordSource
strSQL = Forms!FM0020.FS002002!HMCD

Accessのプロシージャについて教えてください。

フォーム FM0020 上に、2つのサブフォーム FS002001 と、FS002002 があります。
メインフォームにある値を使って、サブフォームのレコードソースを変更したい
のですが、どうもうまくできません。

FS002001のレコードソースは下記の1行目のコードで変数strSQLに代入出来るのですが、
FS002002のレコードソースは下記の2行目のようにしても
「オブジェクトまたはクラスがこのイベントセットをサポートしていません」
となり、代入出来ないのです。
2つ...続きを読む

Aベストアンサー

2行目の
>strSQL = Forms!FM0020.FS002002.Form.RecordSource

>strSQL = Forms!FM0020.FS002002.Form.Width
にしても、「オブジェクトまたはクラスがこのイベントセットをサポートしていません」のエラーが出ますか?
Forms!FM0020.FS002002.Form.DUMMY
のように、Form までは正しくて、存在しないプロパティを指定すると
「アプリケーション定義またはオブジェクト定義のエラーです。」となるんですけど、
Forms!FM0020.FS002002.DUMMY.RecordSource
のように正しくないサブフォームのプロパティを指定すると、「オブジェクトまたはクラスがこのイベントセットをサポートしていません」となりましたので、
Forms!FM0020.FS002002 から先の部分がおかしいようですね。
推測されるのは、「Form」と書いているつもりで「Forms」になってしまっている、とかいうことくらいですかね・・・。
あとは、メインフォームの RecordSource に FS002002 というフィールドがあるとか。(そんなわけないと思いますけど・・・)

ちなみに Access のバージョンは何でしょうか?

2行目の
>strSQL = Forms!FM0020.FS002002.Form.RecordSource

>strSQL = Forms!FM0020.FS002002.Form.Width
にしても、「オブジェクトまたはクラスがこのイベントセットをサポートしていません」のエラーが出ますか?
Forms!FM0020.FS002002.Form.DUMMY
のように、Form までは正しくて、存在しないプロパティを指定すると
「アプリケーション定義またはオブジェクト定義のエラーです。」となるんですけど、
Forms!FM0020.FS002002.DUMMY.RecordSource
のように正しくないサブフォームのプロパティ...続きを読む

QACCESSフォームのボタン表示

ACCESSフォームのボタン表示

ACCESS2000で作成したフォームのボタンはACCESS2007でも変わりません。
ACCESS2007で一から作成したMDBは、ボタンの表示スタイルが異なります。
※ボタンの角が丸く、マウスカーソルをボタンの上に当てるだけで色が変わる。
ACCESS2000で作成したMDBをACCESS2007で上記のように表示させる設定は
あるのでしょうか?
いろいろ見ても、見当たらないのです。
よろしくお願いします。

Aベストアンサー

[Office ボタン] - [Accessのオプション] - [カレントデータベース] で
「フォーム上のコントロールに Windows のテーマを使用する」にチェック。

QACCESS97 サブフォームのレコードソースプロパティーを変更したい。

フォームの中にサブフォーム(データシート)が1つあります。
元のフォームのチェックボックスのオン・オフでサブフォームのレコードソースプロパティーを変更すると、
実行時エラー438
オブジェクトはこのプロパティまたはメソッドをサポートしていません。がでます。
サブフォームのビューは変更したくありません。
だれか助けてください。

If Me.未送信のみ = -1 Then
Forms!F_処理選択!F_理選択サブ.RecordSource = "F_処理選択サブ_1"
Else
Forms!F_処理選択!F_処理選択サブ.RecordSource = "F_処理選択サブ_2"
End If

Aベストアンサー

If Me.未送信のみ = -1 Then
Forms!F_処理選択!F_処理選択サブ.Form.RecordSource = "F_処理選択サブ_1"
Else
Forms!F_処理選択!F_処理選択サブ.From.RecordSource = "F_処理選択サブ_2"
End If

と、サブフォーム名と、RecordSource の間に、"From"を入れてみてください。

QExcelで作成されたフォームをAccessにコンバージョンしたいので

Excelで作成されたフォームをAccessにコンバージョンしたいのですが、フォームのインポートはできないのでしょうか?
Accessのフォーム作成画面から、インポートを選択していって、Excelファイルを開くのですが、シートしか選択できません。
コントロールのコピペもできないみたいですが。。。
Excelで作成されたフォームはAccessにはインポートできないのですか?
コーディングをそっくり使用することはできなくても、せめてフォームのデザインはコピーしたいのですが。。。(> <)
よろしくお願いします。m(_ _)m

Aベストアンサー

質問者はプロかプロ経験者ですか。でないならこんな勉強は試みないほうが良いでしょう。
市販の書物や初心者向けの講習で説明される話題ではない。プロで会社にその辺の経験者がいたりすれば聞けるでしょうが。原理的には最熟練者の人は変換プログラムは組めるかもしれませんが、そのレベルの人は、この質問コーナーを読んでないでしょうし、無料で教えるスキルではないと思います。
WEBの記事も多分少ないでしょう。
Googleででも「エクセル フォーム アクセス 移行」で出てくる記事を参考にしてはどうでしょう。
http://www.accessclub.jp/bbs2/0080/beginter24987.html
同じ発想の人はいることはいるが。
ーー
VBAとVBのフォームはコードで扱う上で微妙に違うし、アクセスVBAとエクセルVBAでは違う点も多い。
またコントロールの生成もコードで行う方法は隠して、易しいD&Dやマウスによる移動、プロパティボックスでの入力にして易しくしています。
エクセルのUserForm1のフォームも本格的なものではないサービスのような気がする。エクセルで第3者を巻き込んだ業務の開発までは予定して無いように推測する(何でもエクセル的な過大期待が横行している)。
それにエクセルでのセルとの連携をつけた機能LinkedCell、FillいstRangweなどはエクセル特有で、RecordSourceのSQL指定やフォーム指定はアクセス特有と思います。
外観を決めるサイズや書式関係は(エクセルでフォームやコントロールの)プロパティーメモー(アクセスでのフォームやコントロールの)プロパティ設定でやや似せて移せるかもしれない。
エクセルバージョン内の相違、エクセル・アクセルで使えるコントロールの種類の相違などもあります。

質問者はプロかプロ経験者ですか。でないならこんな勉強は試みないほうが良いでしょう。
市販の書物や初心者向けの講習で説明される話題ではない。プロで会社にその辺の経験者がいたりすれば聞けるでしょうが。原理的には最熟練者の人は変換プログラムは組めるかもしれませんが、そのレベルの人は、この質問コーナーを読んでないでしょうし、無料で教えるスキルではないと思います。
WEBの記事も多分少ないでしょう。
Googleででも「エクセル フォーム アクセス 移行」で出てくる記事を参考にしてはど...続きを読む

QAccess2000VBA オブジェクト転記時にレコードソースや標題も一緒に変更したい

転記したフォーム、レポートのレコードソース、標題をVBAで変更したいんです。

テーブル名、フォーム名、レポート名の3つのフィールドが一覧となっているテーブル「オブジェクト名」があるとします。

○例「オブジェクト名」テーブル
テーブル名  フォーム名  レポート名
T_ああ      F_ああ    R_ああ
T_いい      F_いい    R_いい

まず、Excelからインポートしたテーブル名を、上の一覧中のテーブル名「T_ああ」をインプットボックスでまず割り当てておきます。
割り当てた値は「varac」とします。

また、フォーム「オブジェクト作成」に、「フォーム作成」、「レポート作成」というコマンドボタンを作り、TransferDataBaseメソッドを利用し、フォーム、レポートを、既にあるそれぞれ元となるオブジェクトから転記していきます。

その際、それぞれの名称は、DLookUp関数を使い、「varac」を元にして「オブジェクト名」テーブルからフォーム名、レポート名を引っ張ってきます。
ここまでは順調に出来ました。
さらに値「varac」を利用して、フォーム、レポートのレコードソース、標題を変更したいんです。

でも、どうコーディングしたら全体プロパティのレコードソース、標題が変わってくれるのか分かりません。
一つのフォームのレコードソースや標題を変えるのなら、
Me.RecordSource = varacや、Me.Caption = varacにすれば変更できます。
ただ、転記中にフォーム「オブジェクト作成」からどう指示したら、転記先のフォーム上のプロパティ、または転記先のレポート上のプロパティと、認識してくれるのかまったく分かりません。

初心者でもあるため、コーディングに詳しいコメントをしていただくと、とても嬉しいです。
よろしくお願い致します。

転記したフォーム、レポートのレコードソース、標題をVBAで変更したいんです。

テーブル名、フォーム名、レポート名の3つのフィールドが一覧となっているテーブル「オブジェクト名」があるとします。

○例「オブジェクト名」テーブル
テーブル名  フォーム名  レポート名
T_ああ      F_ああ    R_ああ
T_いい      F_いい    R_いい

まず、Excelからインポートしたテーブル名を、上の一覧中のテーブル名「T_ああ」をインプットボックスでまず割り当てておきます。
割り当てた...続きを読む

Aベストアンサー

> 転記中にフォーム「オブジェクト作成」からどう指示したら、転記先の
> フォーム上のプロパティ、または転記先のレポート上のプロパティと、
> 認識してくれるのかまったく分かりません。

  Dim strName As String
  strName = "フォーム名"
  
  DoCmd.OpenForm strName, acDesign
  With Forms(strName)
    .RecordSource = varac
    .Caption = varac
  End With
  
  DoCmd.Close acForm, strName, acSaveYes

こんなことでしょうか?

> コーディングに詳しいコメントをしていただくと
難しいことは、何もしていないです。
ただ、デザインビューで開き、プロパティをセット。
で、保存して閉じているだけです。
別フォームの参照方法がわからなかったということですよね?

QVBからmdbファイル(Access2000)の特定のフォームを開きたい?

VisualBasicのフォームに配置したコマンドボタンをクリックすることで、特定のmdbファイルをAccess2000で開き、開くと同時に特定のフォームが表示されるようにしたいのですが、こんなことできますか?できるとすればどのようにすればよいのですか?

例えば、C:\商品管理\在庫一覧.mdbにフォーム商品があるとしたとき、
Form1のcommand1をクリックすると、C:\商品管理\在庫一覧.mdbがAccess2000で開き、フォーム商品が最初に表示されるようにしたいのですが・・・
ちなみに、Access2000の起動時の設定では他のフォームが最初に開くようになっています。
よろしくお願いします。

Aベストアンサー

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visible = True

'表示させたいフォームを開く
acs.OpenForm "フォーム名"


こんな感じで。

最後に、Accessを終わらせるときは

'オブジェクトの開放
Set acs = Nothing

で、オブジェクトを開放してください。

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visibl...続きを読む

Q親フォームからサブフォームのレコードソースを設定

親フォームからサブフォームのレコードソースを設定するには?
フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。

フォーム1にあるコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。

「テーブル1のサブフォーム」からなら
Private Sub Form_Load()
Me.RecordSource = ""
End Sub

とできるのですが、
やりたいことはフォーム1からのイベントなので
「テーブル1のサブフォーム」からのイベントは使えません。

だからってフォーム1の
Private Sub コマンド2_Click()
Me.テーブル1のサブフォーム.RecordSource = "テーブル1のサブフォーム"
End Sub

とするとコンパイルエラーになります。

良い方法があれば教えてください。アドバイスよろしくお願いします。

Aベストアンサー

No2です。説明もれがあったので追加しておきます。
No2のところで、

>このとき、「テーブル1のサブフォーム」
>のフィールドには「#Name?」のような表示がされていると
>思います。すなわちこときはサブフォームにはレコードソースが
>設定されていないからです。

としていますが、「#Name?」と表示される理由はフィールドの
コントロールソースが設定されているために、「#Name?」のような
表示が出てきます。


ここからは蛇足ではありますが、コントロールソースが設定されていなければ
こうした表示はでませんが、もしコントロールソースも取り除いて
いるならば、コマンド1でもコマンド2のクリックイベントでもどちらでも
かまいませんが、たとえば「テーブル1のサブフォーム」の
フィールドのコントロールソースをすべて取り除いておいて、
コマンド2のクリックイベントで設定するとすれば、一応
「テーブル1のサブフォーム」のフィールドの名前をID、名前、住所として
テーブル1のフィールド名を同じくID、名前、住所とするならば、

Private Sub コマンド2_Click()
Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1"
Me.テーブル1のサブフォーム.Form.Controls("ID").ControlSource = "ID"
Me.テーブル1のサブフォーム.Form.Controls("名前").ControlSource = "名前"
Me.テーブル1のサブフォーム.Form.Controls("住所").ControlSource = "住所"
End Sub

として、レコードソース、コントロールソースを設定します。

No2です。説明もれがあったので追加しておきます。
No2のところで、

>このとき、「テーブル1のサブフォーム」
>のフィールドには「#Name?」のような表示がされていると
>思います。すなわちこときはサブフォームにはレコードソースが
>設定されていないからです。

としていますが、「#Name?」と表示される理由はフィールドの
コントロールソースが設定されているために、「#Name?」のような
表示が出てきます。


ここからは蛇足ではありますが、コントロールソースが設定されていなければ
こうした表示はで...続きを読む


人気Q&Aランキング

おすすめ情報