• ベストアンサー

Accessでフォームからテーブルへ書き込む

Access2000 (初心者) フォームからテーブルへ入力したいのですが、レコードソースが違う為入力出来ません。 DLookup("AA", "BB")で違うレコードから抽出出来る様に、違うレコードへ簡単に入力出来ないでしょうか? Me.CC = DLookup("AA", "BB") DLookup("AA", "BB") = Me.CC みたいに・・・

  • mmac
  • お礼率94% (64/68)

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.2

出来るのは出来ますが・・・。 Access のヘルプを参照すれば、そこにヒントがあります。 UPDATE ステートメント Sub UpdateX()   Dim dbs As Database   Set dbs = OpenDatabase("Northwind.mdb")   dbs.Execute "UPDATE Employees " _     & "SET ReportsTo = 5 " _     & "WHERE ReportsTo = 2;"   dbs.Close End Sub tab1: ID__fld1 _1__AAA _2__BBB で、ヒントに基づいて、[tab1]の[ID]=1のレコードの[fld1]を'CCC'に更新してみましょう。 [イミディエイト] ? DbUpdate("tab1", "fld1", "'ccc'", "ID=1") True tab1: ID__fld1 _1__ccc _2__BBB 確かに[tab1]の[fld1]が更新されています。 DbUpdate(テーブル名, 列名, 値, 条件) ですから Dlookup()と同じ感覚です。 で、この DbUpdate() はAccess の上記ヘルプのサンプルを単に関数にしただけ。 で、結局は、<違うレコードへ簡単に入力>は<一連の手続きの自動化>しかないということ。 で、<一連の手続きの自動化>は関数の役目ということです。 Public Function DbUpdate(ByVal tblName As String, _              ByVal fldName As String, _              ByVal strValue As String, _              ByVal strWhere As String) As Boolean On Error GoTo Err_DbUpdate   Dim isOK As Boolean   Dim dbs As DAO.Database   Set dbs = OpenDatabase(CurrentDb.Name)   dbs.Execute "UPDATE " & tblName & _         " SET " & fldName & " = " & strValue & _         " WHERE " & strWhere   dbs.Close   isOK = True Exit_DbUpdate:   DbUpdate = isOK   Exit Function Err_DbUpdate:   MsgBox Err.Description & "(DbUpdate)"   Resume Exit_DbUpdate End Function Microsoft DAO 3.6 Object Library を参照させる必要があります。

mmac
質問者

お礼

有難う御座いました。 簡単には出来ないんですね、助かりました。 せっかくやり方を教えて頂いたので、勉強の為に上記試してみます。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

値の代入、更新クエリ、追加クエリなど手段はいくらでもあります ただし >DLookup("AA", "BB") = Me.CC みたいに・・・ こんなことは出来ません

mmac
質問者

お礼

有難う御座いました。 やはり簡単には出来ないみたいですね。 出来る出来ないだけでも教えて頂いて助かりました。

関連するQ&A

  • Access2010フォーム関数からテーブル入力

    アクセス2010について過去からの質問があまりないようですので 浅学ながら質問させていただきます。 フォームのテキストボックス内にて DlookUp関数で返した値を、 "Aテーブル"へ自動で入力したいのですが、 そのような関数はあるのでしょうか? また、このような操作は Dlookupを記述しているコントロールソースから 改行でコードを入力すればよいのでしょうか? ご教示いただければ幸甚です。 よろしくお願いいたします。

  • 【ACCESS】テーブルの内容がフォームから見れないんです。。。

    テーブルに入力してある内容が、(レコードソースのテーブル名も間違ってないのに)フォームからその内容が見れないんです。 分かる方がいらっしゃいましたら、教えてください。よろしくお願いします。

  • アクセスでの、フォームとテーブルの連動の方法を教えてください

    初歩の初歩だと思うのですが、教えてください。 アクセスで、テーブルのフィールドと全く同じ内容でフォームを作りました。(受講生情報の管理) その中で「性別番号」と「性別」があり、(「性別番号」と「性別」は、別にテーブルを作っています)フォーム上では「性別番号」に番号(男なら1、女なら2)を入力すると「性別」に自動で値が入るように設定できたのですが、テーブルに反映されません。(フォームの「性別」のプロパティのコントロールソースに”DLOOKUP~”を入力しました) テーブル上にも同じように反映させるには、どうすればよいのでしょうか。 同様の質問と思われるものを参考にいろいろとやってみたのですが、どうもうまくいかなくって・・・ よろしくお願いします。

  • フォームのプロパティを設定したい(Access2000)

    Access2000 XPです。 都道府県名が1レコードに1つずつ入っているテーブルと 各都道府県名のテーブルが47コあります。 新規でフォームを作成し(フォームのレコードソースはまだ未設定) コンボボックスを1つ置いて、値集合ソースに都道府県テーブルを設定し コンボボックスで選ばれた都道府県にフォームのレコードソースを変更しようと思っています。 Me.RecordSource=コンボボックス.text 単純にこれで良いと思うのですがエラー(入力された値は、フィールド又はコントロールで定義されている入力規則に従っていません)が出て全然更新されません。 どなたか分かる方、解決法をお願いします。。。

  • Access テーブル作成クエリについて

    お世話になります。 以下のようなテーブルがあります。 区分 コード AA  I001 AA  I002 AA  I003 BB  I004 BB  I005  ・   ・  ・   ・ FF  I012 例えば、フォーム上で数量「3」と入力され、「出力」ボタンが押されたときに、 上記のテーブルのレコードが3セットあるテーブルを作成したいと考えて おります。 区分 コード AA  I001 AA  I002  ・   ・  ・   ・ FF  I012 AA  I001 AA  I002  ・   ・  ・   ・ FF  I012 AA  I001 AA  I002  ・   ・  ・   ・ FF  I012 となるイメージです。 まっさらのテーブルを作成し、ループで回しつつレコードを追加していけば よいかと思うのですが、1回のテーブル作成クエリの実行で作成することは 可能でしょうか。 ※上記テーブルが出来たら、そのテーブルをソースとしたレポートでラベルを   印刷させます。 ご教授の程、宜しくお願い致します。

  • ACCESS2000 フォームとテーブル

    カテゴリを間違っていたので再度ご質問致します。 ACCESSのフォームなんですけど、 フォームとサブフォームがあり、サブフォームの数量の合計をフォームの合計に表示するように出来たのですが、 表示ではなく、テーブルに保存される形にしたいのですが・・。 テーブル T_(1) (1)No. (2)企業名 (3)合計 フォームのレコードソースは、T_(1)です。 今のやり方では、フォームで見ると表示されてますが、 テーブルの合計には保存されてません。 どうすればよいでしょうか? 今は、コントロールソースに、=[サブフォーム名].![テキスト名] にしています。

  • アクセスのフォームでデータ元をテーブルからクエリにかえたい

    上手く表現できるかどうかわからないのですが、頑張って書きます。少々長いです。 アクセスでフォームを使ってデータ入力しています。これは単純で、あるテーブルへのデータ入力をフォームを使ってやるだけのことです。このテーブルの中に「都道府県」というフィールドがあります。ある事情からこのフォームを使ってデータ入力(または修正)をするレコードは、「都道府県」のフィールドが「福岡県」のものだけでよくなりました。 そこで、「都道府県」に「福岡県」を持っているレコードだけを取り出すクエリを作ります。このクエリを元にして、同じフォームでデータ入力したいのです。入力項目は全く同じです。「福岡県」をもっているレコードだけが全く同じフォームで表示されるようにしたいのです。 もとのテーブル名を「全データ」とし、クエリを「福岡県抽出クエリ」と呼ぶとすると、どこかで「全データ」を「福岡県抽出クエリ」に書き換えればすべてのテキストボックスのデータ元が入れ替わってくれると思うのですが、それでいいのでしょうか。その場合、どうやったらいいのでしょう。 なぜ一からファームを作り直さないかというと、テキストボックスの大きさや配置を決めるのに膨大な労力を費やしていて、全部をやり直したくないからです。 どうかお願いします。ご指導ください。

  • アクセス2003のテーブルとフォームの関係

    私はアクセス初心者です。 簡単なテーブルをまず作成しました (主キー、オートナンバーなどは設定していません) そのテーブルを保存し、次にフォームを作成してデータ入力しました。 そのデータを保存して、次にテーブルを開くとフォームで入力した 順番には入らずに、バラバラにテーブルに入力されています。 アクセスとはこういうものなのでしょうか? それと、これはどういう順番で並んでいるのでしょうか? なにぶん初心者なものでよろしくお願いいたします。

  • Access フォームのイベントについて

    使用環境  WIN2000  ACCESS2000 質問  入力テーブル名:AA  項目名    :X01、XO2、X03、・・・・  をフォームのレコードソースにAAを定義して  連結項目を配置しています。  この時、非連結を一つ配置し、入力テーブルのX01,  X02、・・・の値を判定し非連結に値を計算する  仕組みを考えています。  イメージとしては、入力テーブルを1件ごと読み込みするとき  のイベントの中に計算ロジックを設定する内容です。  可能かどうかを含めアドバイスお願い致します。             

  • Accessフォーム

    Access初心者です。 Accessのフォーム上で、 [都道府県]のコンボボックスで東京都を選んだ場合、 [市区町村]のコンボボックスには「東京都」の市区町村名が選択できるようにしました。 フォームでの入力はきちんと出来るのですが、新しいレコードに入力すると、 前のレコードに入力した項目が消えてしまいます。 (テーブル上には、入力した情報が残っています) 色々試してみましたが、どうしても出来ません。 いったいどうしたらよいのでしょうか。ほとほと困っています。 どうかご教示ください。お願いいたします。