位置情報で子どもの居場所をお知らせ

Access2000(初心者)
下記コードを実行すると実行時エラー '3061': パラメータが少なすぎます。1を指定してください。と出ます。
※検索したレコードの削除(日付)
CurrentDb.Execute "DELETE * FROM テーブル名 WHERE ((([テーブル名].[日付]) Between #2009/01/01# And テキスト名)); "

テキスト名に入力されているデータがおかしいのでしょうか?
Me.テキスト名 = DateSerial(Format(Date, "yyyy"), Format(Date, "mm")-1, Format(Date, "dd"))
御教授願います。

A 回答 (2件)

#1です



申し訳ない、確認して上げたつもりが・・・
> Format("yyyy/mm/dd", Me.テキスト名)
の引数が逆
Format(Me.テキスト名, "yyyy/mm/dd")
と、言うことね
    • good
    • 0
この回答へのお礼

なるほど、テキストの場所が明確で無かったんですね^^;
回答有り難う御座いました。解決出来ました。

お礼日時:2009/03/31 11:44

普通に、



> CurrentDb.Execute "DELETE * FROM テーブル名 WHERE ((([テーブル名].[日付]) Between #2009/01/01# And テキスト名)); "



CurrentDb.Execute "DELETE * FROM テーブル名 WHERE [テーブル名].[日付] Between #2009/01/01# And #" & Format("yyyy/mm/dd", Me.テキスト名) & "# ;"

と、すれば?と思うのですが・・・
要は、「テキスト名」が、どこの「テキスト名」か、実行する側には、訳判らんって、エラーだと思いますよ
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q"パラメータが少なすぎます。1を指定して下さい。"

Access97を使用しています。

SQLで組んだモジュール中に
"実行時エラー '3061'"
"パラメータが少なすぎます。1を指定して下さい。"
と表示されます。

デバッグをクリックすると下記2行目が黄色になります。

Set Database = CurrentDb
Set Table = Database.OpenRecordset("選択クエリー", dbOpenDynaset, dbReadOnly) ←

情報が少ないかもしれませんが、何故このようなメッセージが出るのでしょうか?

Aベストアンサー

選択クエリーの中に、抽出条件がパラメータを指定するかたちで入力されていると、このようになることがあります。

つまり、クエリ内のあるフィールドの抽出条件が、

Between 100 And 200

という風に値をはっきりと指定したかたちではなくて、例えば…

Between [開始IDを入力してください] And [終了IDを入力してください]

Between [Forms!][フォーム名]![テキストボックス名] And [Forms!][フォーム名]![テキストボックス名]

みたいな感じで、ユーザーに値を入力させたり、フォームのテキストボックスの値を流用するみたいになってると、値がすぐに定まらないせいか(?)、OpenRecordsetを使うとご質問のようなエラーになります。(単純にクエリをダブルクリックで開くだけとか、Docmdでクエリを開く場合ならエラーになりません。OpenRecordsetを使ってクエリを開こうとするとエラーになります。)

回避する方法としては、●直接VBA内でSQLを書いて、パラメータ部分を変数などを使って直接値を指定してレコードセットを取り出す…などで行けると思うのですが、それ以外にも簡単な方法があるので、以下のURLを参照してみてください。

http://ws.31rsm.ne.jp/~pension/access/tips/benri1.htm#parameter

もし意味が違ってたらごめんなさい。

選択クエリーの中に、抽出条件がパラメータを指定するかたちで入力されていると、このようになることがあります。

つまり、クエリ内のあるフィールドの抽出条件が、

Between 100 And 200

という風に値をはっきりと指定したかたちではなくて、例えば…

Between [開始IDを入力してください] And [終了IDを入力してください]

Between [Forms!][フォーム名]![テキストボックス名] And [Forms!][フォーム名]![テキストボックス名]

みたいな感じで、ユーザーに値を入力させたり、フォームのテキ...続きを読む

QAccess 2010で実行時エラー3061

Access 2010でDoCmd.SendObjectを使用してメールを自動生成したいのですが、実行時エラー3061でとまってしまいます。デバッグすると、Set RS = DB.OpenRecordset("30DaysQuery")でとまっています。生成するメールは1通、その本文に複数データを列記という形です。イメージとしてはこんな感じです。→<http://www.tsware.jp/tips/tips_464.htm>
大した知識もなく作っています。言葉足らず、情報足らずの点があれば、ご指摘ください。よろしくお願いします。

Private Sub EmailReminder_Click()

Dim DB As Database
Dim RS As Recordset
Dim Subject As String
Dim Body As String

Subject = "Audit Corrective Actions"
Body = "Good Morning Sir/Ma'am," & vbCrLf _
& "This is an auto generated email." & vbCrLf _
& "In response to a recent audit, your attention is needed for the following item(s)." & vbCrLf & vbCrLf _
& "Please advise when these actions are completed. If you have any questions please feel free to contact our office. Thank you for your help and cooperation in this matter. Have a nice day." & vbCrLf & vbCrLf _
& "Corrective Actions:" & vbCrLf _

Set DB = CurrentDb()
Set RS = DB.OpenRecordset("30DaysQuery")
Do Until RS.EOF
Body = Body &
"------------------------------------------------------" & vbCrLf _
& "[Due Date: " & RS!DueDate & "] [Agency: " & RS!Agency & "] [Report: " & RS!Report# & "]" & vbCrLf _
& "Corrective Action: " & RS!CorrectiveAction & vbCrLf _
& "Recommendation: " & RS!Recommendation & vbCrLf
RS.MoveNext
Loop
DoCmd.SendObject , , acFormatTXT, RS!Email, "***@bbb.com", ,
Subject, Body, True
RS.Close
Resume Next

End Sub

Access 2010でDoCmd.SendObjectを使用してメールを自動生成したいのですが、実行時エラー3061でとまってしまいます。デバッグすると、Set RS = DB.OpenRecordset("30DaysQuery")でとまっています。生成するメールは1通、その本文に複数データを列記という形です。イメージとしてはこんな感じです。→<http://www.tsware.jp/tips/tips_464.htm>
大した知識もなく作っています。言葉足らず、情報足らずの点があれば、ご指摘ください。よろしくお願いします。

Private Sub EmailReminder_Click()

Dim DB As...続きを読む

Aベストアンサー

> 下記のように書き換えたところ、「エラー3265 このコレクションには項目がありません」とい うエラーに変わり、

はい、これなら一目で原因がわかります。

かなり分かりにくいメッセージではありますが、この場合には
「レコードセットの フィールドコレクション に 指定した項目名が見つからないよ」 という意味でしょう。
実際には、エラーになった行にあるコレクション の種類ごとに調べる必要があります。
(フォームのテキストボックス名が間違っている場合など。)

項目数が少ない場合は
止まって、黄色になっている行の 項目名の上にマウスを持っていくと
正常なものはその値、間違っている項目名のところは 「コレクションには項目がありません」 が表示されます。

では、フィールド名は絶対に間違っていないのになぜ?
という疑問にはこちら。

Access 2007 の予約語と記号
http://office.microsoft.com/ja-jp/access-help/HA010030643.aspx

Access データベースでの作業時に使用すべきでない特殊文字
http://support.microsoft.com/kb/826763/ja

フィールド、コントロール、およびオブジェクトの名前について
http://office.microsoft.com/ja-jp/access-help/HP005186769.aspx

Access 2007 または Access 2003 でクエリを実行すると、全角のアラビア数字が原因でエラー メッセージが表示される
http://support.microsoft.com/kb/932994/ja

先頭文字が全角数字のフィールド名を含む Access のクエリを最適化すると、フィールドの定義が失われる場合がある
http://support.microsoft.com/kb/937915/ja

半角カタカナ や 機種依存文字 を 避けるのは言うまでもありません。

"30DaysQuery" のような数字で始まるもの、
"Report" のような 予約語 とぶつかるもの、
「_」 (アンダーバー) 以外の記号(全角・半角) を 含むもの
は、後々分かりにくいエラーなどのトラブルを起こす可能性があります。

できるだけ使用しないことをお勧めします。

直接の回答は

手っ取り早いのは

RS!Report# を RS![Report#] に変更する。

根本的な対策は、「Report#」 という テーブルのフィールド名を変更する。
(例: ReportNo 、 ReportNum など)

テーブルのフィールド名 変更が 影響が大きすぎるなら
クエリの フィールド名 を変更する。
(クエリのフィールドのところに 「ReportNo: Report#」 とか。)

Report という フォーム名もかなりビックリです。
F_Report とか frmReport など のような命名 がお勧めです。

> 下記のように書き換えたところ、「エラー3265 このコレクションには項目がありません」とい うエラーに変わり、

はい、これなら一目で原因がわかります。

かなり分かりにくいメッセージではありますが、この場合には
「レコードセットの フィールドコレクション に 指定した項目名が見つからないよ」 という意味でしょう。
実際には、エラーになった行にあるコレクション の種類ごとに調べる必要があります。
(フォームのテキストボックス名が間違っている場合など。)

項目数が少ない場合は
止まって、黄...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS VBA クエリを開く

ACCESS初心者です。
VBAはEXCELで独学した程度の知識です。

フォームから受注納期を入力し、クエリを抽出。
クエリでレコード毎に製品票の印刷枚数を計算し
レポートで各レコード毎に求められた印刷枚数分を
印刷させたいのですが・・・

クエリを開く段階でつまずいており困っています。

Private Sub コマンド23_Click()

Dim db As DAO.database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef

Set db = CurrentDb()
Set qdf = db.QueryDefs("受注クエリ")

With qdf
.Parameters("納期") = Format(Forms![受注データ一覧]![納期], "yyyy/mm/dd")
Set rs = .OpenRecordset
.Close
End With

MsgBox rs![注文番号]

rs.Close

End Sub

パラメータクエリの開き方、上記コードで問題ないでしょうか?

そしてこのコードを実行した際
実行時エラー3421
データ型の変換エラーが発生しましたと表示されます。

ローカルウィンドウで 変数rs = nothingとなっており
クエリのレコードが読み込めていないようです。
(Msgbox rs!注文番号はデータが読み込めたかテストするために
コードを書いています。)

どうぞ宜しくお願いいたします。

ACCESS初心者です。
VBAはEXCELで独学した程度の知識です。

フォームから受注納期を入力し、クエリを抽出。
クエリでレコード毎に製品票の印刷枚数を計算し
レポートで各レコード毎に求められた印刷枚数分を
印刷させたいのですが・・・

クエリを開く段階でつまずいており困っています。

Private Sub コマンド23_Click()

Dim db As DAO.database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef

Set db = CurrentDb()
Set qdf = db.QueryDefs("受注クエリ")

With qdf
.Parameters("納期") = Format(F...続きを読む

Aベストアンサー

ですから、

>など設定がばらばらなのでQueryDefを使ってパラメータを
>VBAで設定するならば、他の方への補足の内容をもとにすると、
>SQL文を、

として、補足にあるパラメータの宣言、

>PARAMETERS 納期1 DateTime;

をはずしたクエリのSQL文を提案し、VBAでは、

>With qdf
>.Parameters("納期") = Format(Forms![受注データ一覧]![納期], "yyyy/mm/dd")
>Set rs = .OpenRecordset
>.Close
>End With

のところで、

With qdf
qdf.Parameters("XYZ") = CDate(Format(Forms![受注データ一覧]![納期], "@@@@/@@/@@"))
Set rs = .OpenRecordset
End With

のように、Parameters("納期") を Parameters("XYZ") のように
パラメータが「納期」というようなフィールド名と同じになるのを
避けるために「XYZ」としているのですが・・・。パラメータと
フィールド名を同じにするとエラーが出るのでこのようにしています。



補足にある、

>フォームからyyyy/mm/ddの書式で日付を指定し該当する
>レコードをクエリで抽出します。

ということは、フォームではテキストボックスの書式が
日付型に設定してあると、いうことだと解釈します。したがって、
VBAでは、
.Parameters("XYZ") = Forms![受注データ抽出]![date1]
とします。


>上記記述で
>実行時エラー3061
>パラメーターが少なすぎます。2を指定してください。
>エラーが発生します。

これは、補足にある書き変えたVBAの中で、

>With qdf
>.Parameters("納期1") = Forms![受注データ抽出]![date1]
>Set rs = db.OpenRecordset("確定クエリ", dbOpenDynaset)
>End With

のところで、
db.OpenRecordset
としているために、「確定クエリ」をパラメータを指定せずに
レコードセットとして接続しようとしているためにエラーが
エラーがでるのです。したがって、ここのところは、もともとの
設定のようにQueryDefを使って、

With qdf
.Parameters([XYZ]) = Forms![受注データ抽出]![date1]
Set rs = .OpenRecordset("確定クエリ")
End With

とします。ようするに、
Set rs = qdf.OpenRecordset("確定クエリ")
ということです。





以上より、クエリの「納期1」の抽出条件に「[XYZ]」 (XYZではなく、[XYZ]です)と記入し、
そのクエリのSQL文は、

SELECT 確定.注文番号, 確定.注文年月日, 確定.発注者品名コード, 確定.[品名(品名仕様)], 確定.[注文数量(受注数量)], 社内データ.SNP, 確定.単位, 確定.納期1, 確定.納入No1, 確定.納品キー番号1, 確定.受渡場所名, 確定.発注者用備考, 確定.発注者名, Int([納入指示数量1]/[SNP]+0.5) AS 印刷枚数
FROM 確定 LEFT JOIN 社内データ ON 確定.発注者品名コード = 社内データ.得意先品目コード
WHERE (((確定.納期1)=[XYZ]));


VBAは、

Private Sub コマンド23_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef

Set db = CurrentDb
Set qdf = db.QueryDefs("確定クエリ")

With qdf
.Parameters("XYZ") = Forms![受注データ抽出]![date1]
Set rs = .OpenRecordset
End With

MsgBox rs![注文番号]

qdf.Close: Set qdf = Nothing
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub

ですから、

>など設定がばらばらなのでQueryDefを使ってパラメータを
>VBAで設定するならば、他の方への補足の内容をもとにすると、
>SQL文を、

として、補足にあるパラメータの宣言、

>PARAMETERS 納期1 DateTime;

をはずしたクエリのSQL文を提案し、VBAでは、

>With qdf
>.Parameters("納期") = Format(Forms![受注データ一覧]![納期], "yyyy/mm/dd")
>Set rs = .OpenRecordset
>.Close
>End With

のところで、

With qdf
qdf.Parameters("XYZ") = CDate(Format(Forms![受注データ一覧]![納期], ...続きを読む

QACCESSでVBAから選択クエリの抽出条件を指定したい

選択クエリの抽出条件はデザインビューの「抽出条件」欄に直接条件式を書き込むのが普通だと思いますが、この条件式をVBAで記述することは出来るでしょうか?

DoCmd.RunSQL ではアクションクエリしか実行できないようだし、
DoCmsOpenQuery では引数に抽出条件を指定することが出来ないし困っています。

Aベストアンサー

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてます(^^)

ちなみに、
Me.
と打ち込んだ時点でオートコンプリート(名称あってるかな~)
機能が働いて参照できるオブジェクトが表示される
はずです。
その中にKojiさんが書いた埋め込みオブジェクトが
きっとあるはず
もしかすると"FormA"とか名前を付けたつもりでも
Visual Basic Editor君が気を利かせて
Form_formA
とかになってる場合があります。
最近やってないんでうろ覚えなんですが、こんな処を注意すれば大丈夫!

追伸
このコードって検索とかで使えますから
覚えておくときっと役に立ちますよ♪

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてま...続きを読む

QVBとアクセスでSQL文に変数を使いたいのですが

したいことはレコードの挿入をSQL文で変数を使用して処理したいのですがうまく動作してくれません

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'(変数1)','(変数2)','(変数3)')"

変数の部分が置き換わりません、いろいろ調べてみたのですがどうもわかりませんvaluesでは変数を使えないのでしょうか?

もしそうだとするとどのようにすればレコードを挿入するSQL文で変数を利用できるのかをおしえていただけないでしょうか

Aベストアンサー

文字列なんで、&で連結すればOKです。

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'" & 変数1 & "','" & 変数2 & "','" &(変数3)& "')"

QACCESSのクエリー抽出条件にIIFを使用して

コンボボックスの値を抽出条件にしたクエリーを作成しています。
コンボボックスにて"ALL"を選択したときに、全レコードを表示したく、
以下の式を入れたのですが全表示がされません。

IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])

Like "*" の部分がいけないのでしょうか?
(偽の場合は選択した値のレコードが抽出されます)

どなたか教えてください、よろしくお願いいたします。

Aベストアンサー

>IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])
この条件は、抽出したいフィールドの「抽出条件」の所に入力しているんですよね?

ちょっと内容を変えまして・・・
(1)「抽出条件」ではなく、「フィールド」の行に入力してください。
 (つまり、抽出用の新しいフィールドを作成するということです。)
(2)式は
式1: IIf([Forms]![テーブル名]![コンボボックス名]="ALL",True,[テーブル名]![コンボボックス名]=[Forms]![テーブル名]![コンボボックス名])
にしてください。
(3)IIfを入力したフィールドの「抽出条件」に True と入力します。
 (Trueの囲い文字はいりません。)

どうでしょう?ちゃんと出ますよね・・・?
ただし、フィールドを作ったわけですから、
クエリのデータシートビューには必要のない、-1などが表示されたフィールドが表示されますよね。
これは、デザインビューに戻って、表示のチェックボックスをオフにすれば解決します。

IIFというのは、ExcelのIF関数とはちょっとイメージが違います。
以下解説↓

今回の条件式の部分には、[コンボ]="ALL"という評価式(←ポイント!)が入力されています。
Excelでは条件式というイメージが強いですが、
IIFは評価式という意味です。
つまり、この評価式自体がTrueとFalseを持つということです。
IIf([Forms]![テーブル名]![コンボボックス名]="ALL",・・・・)という式で、
条件をALLとしたら・・・
評価結果=True となります。
そして真の場合の処理にTrueを指定することで、IIFの戻り値がTrueになります。
条件にALL以外を入力すると・・・
評価結果=False となります。
そして偽の場合の処理の戻り値が、ALL以外の条件になります。
抽出条件にもTrueを入力したのは、無条件に全件が表示されるのを防ぐためです。

これは、表示をオンにして動作確認すると分かりやすいかも知れませんね。
または、とりあえず現象を直して、理解は後々・・・でもよいかも知れません。
健闘を祈ります!

>IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])
この条件は、抽出したいフィールドの「抽出条件」の所に入力しているんですよね?

ちょっと内容を変えまして・・・
(1)「抽出条件」ではなく、「フィールド」の行に入力してください。
 (つまり、抽出用の新しいフィールドを作成するということです。)
(2)式は
式1: IIf([Forms]![テーブル名]![コンボボックス名]="ALL",True,[テーブル名]![コンボボックス名]=[Forms]![テーブル名]![コンボボックス名])
にして...続きを読む

QAccess VBAでクエリーのレコード件数を取得したいのですが

Access2003のVBAで次のような構文を用いてクエリーの該当レコード数を取得したいのですがうまく出来ません。
構文又は手法が間違っているのでしょうか。

Dim db As Database
Dim rs As Recordset
Dim cnt As Long

Set db = CurrentDb
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenTable)
cnt = rs.RecordCount

※OpenRecordsetの行で「実行時エラー'3219'無効な処理です」と出てしまいます。
又、”該当顧客リストクエリ”では特定の抽出条件を設定して、”顧客リストテーブル”の一部を抽出するようにしています。

Aベストアンサー

Set db = CurrentDb
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenTable)
cnt = 0
If Not rs.EOF Then
  rs.MoveLast
  cnt = rs.RecordCount
  rs.MoveFirst
End If

このようにしたほうが、良いですよ
DAOのレコードセットは展開したときには、正確なレコード件数を返しません
一旦、MoveLastメソッドで最終ポイントまで行けば正確な件数が得られます
(ただし、パフォーマンスが落ちますorz)

面倒でも、「select count(*) as RecordCount from "テーブル名"」で取得したほうがいいですよ

ちなみに、別件はこれで良いんじゃないですかね?
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenSnapShot)

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を見た人がよく見るQ&A

人気Q&Aランキング