アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelからAccessへデータを書き込もうとしていますが、うまくいきません。原因は、フィールド名にあるような気がしますが、どなたかアドバイス頂けないでしょうか?宜しくお願いいたします。
Accessのテーブルで、フィールド名を
ログイン名、名前、年齢、血液型、住まい1、住まい2、仕事、確認日時
としエクセルから
With RecSet
.Open MySQL, Excite_DB, , adLockOptimistic
.AddNew
With .Fields
.Item("ログイン名").Value = "test_LogIn"
.Item("名前").Value = "山田"
.Item("年齢").Value = "25"
.Item("血液型").Value = "A"
.Item("住まい1").Value = "東京都"
.Item("住まい1").Value = "新宿区"
.Item("仕事").Value = "会社員"
.Item("確認日時").Value = DateValue("2007/05/04 12:20") + TimeValue("2007/05/04 12:25")
End With
.Update
.Close
End With
と書き込もうかとしたところ、実行時エラー:3265
要求された名前、または、序数に対応する項目がコレクションに見つかりませんとでます。が発生します。
そこで、
For Each MyField In .Fields
Debug.Print MyField.Name
Next
とフィールド名を取得したところ
ログイン名、Expr1001、Expr1002、Expr1003、住まい1、Expr1004、Expr1005、確認日時
となります。
そこで、書込み時のフィールド名を、"Expr1001"とすると今度は、
実行時エラー:-2147217887
UpdateまたはCancelupdeteメゾッドには、対応するAddNewまたは、Editメゾッドが必要ですになります。
よろしくお願いいたします。

Accessでは、間違いなくフィールド名が設定されているのですが、

A 回答 (1件)

> With RecSet


> .Open MySQL, Excite_DB, , adLockOptimistic

の2行目で渡している SQL にミスがあると思います。SQL の内容
は省略されているので、具体的にはアドバイスできませんが、
見直してみて下さい。

> Expr1001

これは Access が設定する仮フィールド名です。これが発生する
一例をあげれば、

・名前: tMember
・フィールド: ID, Shimei, Birthday

というテーブルがあったとして、次のような SQL を渡した場合。

  SELECT ID,Shimei,Birthday,Shimei FROM tMember;

[ Shimei ]フィールドを2重で Select してます。

この時、一方は[ Shimei ]という正しいフィールド名で、もう一方
は [ Expr1001 ] というフィールド名になってしまいます。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
仰る通り、SQLに間違いがありました。
読み込みのSQLと書込みのSQLを共有していたのですが、読み込みの時にNullの値を文字列0に変換させるために、
SELECT ID,Shimei,Birthday & '', FROM tMember;
と、& ''を挿入していたのが原因でした。
読み出しでは上手くいっていたので、SQLには絶対に間違いはないと思いこみ1日以上悩んでいました。
本当にありがとうございます。助かりました。
& ''を削除したところ上手くいきました。

お礼日時:2007/05/04 21:03

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