• ベストアンサー

アクセスでデータを分配するには

フォームにテキストボックスが3つあり 企業名を入力するテキストボックスと 駅名を入力するテキストボックスが2つあり登録ボタンを 押下すればテーブルに2つレコードが作成されるようにしたいのですが どうすればいいのでしょうか? 例えばテキスト1の企業名に ●●商事 テキスト2の駅名に銀座 テキスト3の駅名に有楽町と入力し登録ボタンを押下すればテーブル のフィールド名、企業名に●●商事フィール名 駅名に銀座というデータともうひとつ とフィールド名、企業名に●●商事フィール名 駅名に有楽町というデータの2つのデータが テーブルに作成されるようにしたいのですが。。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

失礼しました。 >ra.Close: se rs = Nothing 何を勘違いしていたのか、上記は rs.Close: Set rs = Nothing としてください。これは、 rs.Close Set rs = Nothing と縦に記述するのを横に連続して記述し、 処理する表現方法です。 最後の後始末なので必ず処理を入れる ようにします。 [ ADOについて ] ADOはAccessだけでなく、他の言語たとえばVisual Basicなどの 言語においても使用しており、たとえばVB6.0という言語で 使用している形式はほぼそのままAccessでも使用できます。 なかなかADOのみというのは少ないのですが、以下が比較的 ADOの要点をつかんでいるのではと思います。これらの中で わからない点が出てきたら、WEBで検索したり質問したり されればかなりいい効率で習得できると思います。 本家(2000などが主ですがそのまま他のバージョンでも 使用できます) http://msdn.microsoft.com/ja-jp/library/cc376607.aspx その他 http://www.ken3.org/ http://www.red.oit-net.jp/tatsuya/vb/ADO.htm http://kiyoeri.gotdns.org/~kiyoeri/pukiwiki/?Access%2FADO%A4%C8DAO http://pcdn.int21.co.jp/pcdn/vb/noriolib/vbmag/9812/vb6da/ http://www.happy2-island.com/access/ http://www.accessclub.jp/ado/index.html http://jsajax.com/accessOtehon/

maki06
質問者

お礼

返信ありがとうございます。 私もraがrsの間違えかと思い当初変更してみたんですが やっぱり実行できませんでした。。 >最後の後始末なので必ず処理を入れる >ようにします。 ということなので、頂いたURLを参考に検証 してみようと思います。 ADOにつてい詳しくありがとうございました! 参考にさせて頂きます。 年末の慌しい中ご丁寧な対応誠に感謝しております。 良いお年をお過ごしください(^◇^)

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

本家のADOの場所がわかりにくいかもしれないので、 http://msdn.microsoft.com/ja-jp/library/cc377101.aspx にあります。その他のところでもADOについての記述が あります。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

#1のQ1、Q2で >[フォーム2] となっているのはフォーム名です。 実際に合わせて変更してください。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

一応データを追加するものとします。 方法はいろいろですが、 フォームの企業名、駅名をいれるテキストボックスを tx企業名、tx駅名1、tx駅名2とし、 テーブルのフィールドを企業名、駅名とします。 (1)  方法1 クエリを二つ作ります。 テーブル名はデータを追加するテーブル名です。 Q1: INSERT INTO テーブル名 ( 企業名, 駅名 ) SELECT [Forms]![フォーム2]![tx企業名] AS 企業, [Forms]![フォーム2]![tx駅名1] AS 駅; Q2: INSERT INTO テーブル名 ( 企業名, 駅名 ) SELECT [Forms]![フォーム2]![tx企業名] AS 企業, [Forms]![フォーム2]![tx駅名2] AS 駅; フォームのボタンクリック時に、 Private Sub コマンド0_Click() DoCmd.SetWarnings False DoCmd.OpenQuery ("Q1") DoCmd.OpenQuery ("Q2") DoCmd.SetWarnings True End Sub (2)  方法2 DAOを使用した例。DAOを使っているので コード表の参照設定でDAOにチェックが入っているか 確認してください。 Private Sub コマンド0_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset) rs.AddNew rs!企業名 = Me!tx企業名 rs!駅名1 = Me!tx駅名1 rs.Update rs.AddNew rs!企業名 = Me!tx企業名 rs!駅名1 = Me!tx駅名2 rs.Update ra.Close: se rs = Nothing db.Close: Set db = Nothing End Sub

maki06
質問者

お礼

piroin654 さんご回答ありがとうございます。 ADOを使用したコードで実行させたらテーブルに条件通りの データが作成されました!!! ただ↓でエラーがでてしまうのでコメント化し読み込ませないようにしました。 ra.Close: se rs = Nothing これにおいては問題ないので大丈夫です。 また予断ですがADOにおいてもう少し勉強したいのですが何かお勧め のサイトなどありますでしょうか?

関連するQ&A

  • Accessにてデータの更新

    Accessにて、フォームにボタンを作成し、クリックすると フォームのテキストボックスのデータを取得し、 テーブルのデータを更新するVBAを作りたいのですが、 mySQL = "UPDATE テーブル名 SET フィールド名 = '1234'" このようにすると、フィールドが1234のデータに更新されるのですが、 これを namae =Me!テキストボックス名 mySQL = "UPDATE テーブル名 SET フィールド名 = namae" とするとうまくいきません。 正しい書き方をお願いします。

  • アクセス2000でデータの追加がうまくいかないんですけど

    アクセス2000を使ってます。 基礎データというテーブルを作って、そこに「テキスト」というメモ型のフィールドを作り、 参照追加フォームというフォームを作って、その中に二つのテキストボックスを配置し、一方のテキストボックス1には「基礎データ」の「テキスト」をコントロールソースとして設定し、他方のテキストボックス2は非連結にし、コマンドボタンを二つ配置して、一方のコマンドボタン1を押すと、テキストボックス1のデータがテキストボックス2のデータにコピーされるようにVBAコードを書き、さらに、もうひとつのコマンドボタン2を押すと、非連結のテキストボックスのデータを、基礎データテーブルの「テキスト」というフィールドに追加する追加クエリを動かすようにしました。  このような状況で、コマンドボタン2を押すと、非連結のテキストボックス2のデータが、全角126文字までなら正常に動作するのですが、それ以上(全角127文字以上)になると、「引数が無効です。」というエラーが出てしまいます。 基礎データテーブルの「テキスト」はメモ型に設定してあるのに、どうしてこのようなエラーが出てしまうのでしょうか?誰か教えてください。  ※ためしに、追加クエリ単独で動かして、全角127文字以上のデータを入れた場合には、追加クエリは正常に動作します。これって、フォーム側の問題なんですか?  

  • AccessのデータをVBを使って置換する

    (1)VisualBasic6.0を用いて、Access2000のデータベースに接続します。 (2)データベースの中のテーブル(テーブル名:T-カレンダー)にあるフィールド(フィールド名:コード)に保存されているデータの一部分を置換したい。(⇒途中のアルファベットを変更したい。)(例;置換前:123FFF789 置換後:123III789)  テーブルを直接開いて、フィールドにカーソルをあわせて、”編集メニュー”の『検索と置換』から行っても出来るのですが、Accessを触らないでVBから作ったフォームから変更(置換)をさせたい。  ◇フォームに2つテキストボックスを作って、「検索する文字列」と「置換後の文字列」を入力し、『変換』ボタンを押したら、データが置換される、という流れ。   一回きりの置換でなくて、何回でも同じフィールド内のデータを置換したい。   SQLのREPLACE関数を用いて出来るかな、とは思っているのですが、どのように作成すればよろしいのでしょうか。  また他のやり方でシンプルな方法があればお教えください。

  • ACCESS2003でテーブルと一致したときだけメッセージを表示するには?

    はじめまして、アクセスでデータベースを作成していたのですが、わからないことが出てきてしまい困っております。 フォーム上で、テキストボックスに入力した文字列(テキスト形式)をテーブル内のデータと照合し、一致すれば「保留対象の商品です」、なければ「保留対象の商品ではありません」といったテキストボックスを表示できるようなボタンを作りたいのです。 登録条件を変更するのではなく、メッセージが表示できさえすれば良いのです。 IFとDcount、msgboxを組み合わせることで表示できるような気はするのですが、エラーが出てしまい、作動してくれません。 私の書いたVBAコードは IF Dcount("フィールド名","テーブル名","フィールド名="" & Me!テキストボックス名") = 1 Then Msgbox "保留対象の商品です" Else msgbox "保留対象の商品ではありません" End IF 結局、テキストボックスに入力されたデータと対象のテーブル内データを検索し、一致するデータを数えて、1個のときにメッセージを出すようにしてみたのです。 しかし、うまく動いてくれません。。 詳しい方がいらっしゃったらアドバイスいただければ幸いです。 よろしくお願いいたします。

  • Access2010 テキストの連結

    よろしくお願いします。 Access2010を使用しております。 非連結のフォームに入力した情報を、 保存ボタンで、テーブルに追加しております。 そこで、サブフォームにある複数のテキストボックスをボックス毎に改行して、 一つのフィールドに入れたいと思っております。 一つ一つのテキストボックスは別テーブルを作っておりますが、メインにしているテーブルには、一つのフィールドに入れたいのです。 txt箱1、txt箱2、…txt箱20の空白ではないテキストボックスを改行して、一つのフィールドに追加したいです。 テキストボックスが、ランダムに記入されていたり、空白が間にあると、 うまく一つのフィールドに入れることができません。 改行が何個も入った箇所ができてしまいます。 間に空白があっても、改行を綺麗に入れて、 一つのフィールドに入力させるには、どうしたらよろしいでしょうか。 お世話になりますが、よろしくお願いします。

  • ACCESSでVBを使って特定のデータを変更したいのですが・・・

    ACCESSのVB初心者です。 専門書も買って読んでるのですが、どうにも行き詰ったので質問させてください。 今やろうとしているのは、データNoが入るフィールドと文字列が入るフィールドの2つのフィールドから出来ている「Aテーブル」を作ってあり・・・フォームのテキストボックスに入力された任意の数字とAテーブルのデータNoを照合し、同じ番号を処理するコードを打ち込みたいのですが、どうにもやり方がわかりません。 フォームで「12」という数字をテキストボックスで指定し、「新規追加」をすると、Aテーブルに12のデータNoがない場合は、Aテーブルに12というデータNoと文字列を追加し、「データ削除」をすると、AテーブルのデータNo12を削除と言う感じでやりたいのですが・・・。 どなたか知識のある方、教えてくださいませ。 または、このサイトを見れば分かるんじゃないかと言う情報もお待ちしております。

  • アクセス2000の使い方についての質問

    アクセス2000の使い方について2つ質問があります。だれか教えて下さい。 1.フォーム上に2つのテキストボックスを配置し、一方のテキストボックスに全角で入力した文字を、ボタンを押したら、他方のテキストボックスに半角で返すようにしたいのですが、どのようにすればいいでしょうか? 2.データが格納されているフォルダのフルパスを入力するためのフィールドを作成し、例えば、「d:\db\data\」のように入力するようにしてあるのですが、このフィールドに初心者でもフォルダのフルパスを入力できるようにしたいのですが、ボタンを押すと、フォルダを指定するダイアログボックスを表示させ、そのダイアログボックスでフォルダを選択させるようにすることはできないでしょうか? 教えてください。

  • Access クエリについて

    初めまして。Accessのクエリについての質問です。 Access2003です。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件に[forms]![フォーム名]![テキストボックス名]を入れています。 今は2つのテキストボックス両方に言葉を入力するとデータが抽出されますが、これを1つのテキストボックスだけ入力でもデータが抽出されるようにしたいのですが可能ですか?今は一つのテキストボックスに言葉を入力しもう一つを空欄にすると何もデータが出てこない状態です。 2つのテキストボックスをテキスト(1)とテキスト(2)とすると 以下のようにデータを抽出したいです。 ・テキスト(1)とテキスト(2)に入力 →両方の言葉が一致したデータ ・テキスト(1)だけに入力  →テキスト(1)の言葉だけ一致したデータ ・テキスト(2)だけに入力  →テキスト(2)の言葉だけ一致したデータ 初歩的な質問でしたら申し訳ないです。どうかお願いします。

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

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

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。