• 締切済み

Access2007を使用して、試料の基礎データと実験経過を記録してい

Access2007を使用して、試料の基礎データと実験経過を記録しています。試料基礎資料フォームと実験経過記録フォームがあります。両方のフォームには試料番号のフィールドがあります。いま、試料基礎資料フォームにボタンをつくり、実験経過記録フォームの新規レコードが開くようになっています。このとき、はじめの試料基礎資料フォーム上で参照されているレコードの試料番号フィールドの試料番号を、ボタンを押して実験経過記録フォームを開いたときに、事件経過記録フォームの新規レコードの試料番号のフィールドに自動的に入力するようにしたのですが・・・ どのようにすれば、よいのでしょうか?よろしくお願いします。

みんなの回答

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

遅くなり申し訳ありません。 >試してみましたが、動きませんでした。ちなみにこれだと >実験結果記録フォームが開いたとき、1番目のレコードが >開いてしまうからかなと思いました。新しいレコードを開き、 >そこの空欄の試料番号の欄に、試料基礎資料フォームの >試料番号をコピーするとうまくいくなあと素人考えで >思いました。すみません基本的なことで、新しいレコードを >開く部分をどう書けばいいですか。 という補足をいただきましたが、最初に回答する時点で 内容を読み間違えていたかもしれないな、と思っていました。 試料基礎資料フォームを開いてときに、試料番号をコピーし、 新しいレコードを開く、ということはコピーした試料番号を 新しいレコードの主キーの番号にするといことなのでしょうか。 新しいレコードとは新規レコードと解釈してよろしいのでしょうか。 実験記録結果フォームのレコードソース、 たとえばテーブルならばテーブルのフィールドの主キー の名称、データ型、そのほかいくつかのフィールドについて、 また、試料基礎資料フォームについても同様に補足していただければ と思います。 いただいた補足から何となく判るのですが、具体的な 補足があればと、思います。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

失礼ですがアクセスは初心者ですね、 アクセスはリレーショナルデーターベースの一つです。 アクセスの設計はテーブル作成から始めます。 通常のテーブルには、重複を許さない主キーを設けます。 ※主キーは通常オートナンバー設定にします。  たまに商品コード等を主キーに設定されたものも見かけますが、商品コードの変更ができなくなるためこれは別に設定してください。 2つ以上のテーブルに共通の項目を1つ用意して、この項目によりテーブル同士を関連付け(リレーションシップと呼ぶ)ます。 リレーションシップが設定されたテーブル間には1:Nで関連付けられます。 本題に入ります。 試料基礎資料と実験経過記録テーブルは出来上がっていますね それぞれのテーブルには主キーがオートナンバーで設定されていますね、 この項目名を[試料基礎資料ID]と[実験経過記録ID]とします。 実験経過記録テーブルに[試料基礎資料ID]を追加します。 テーブル間を[試料基礎資料ID]でリレーションシップを設定して初期の目的は達成されます。 実験経過記録テーブルを開いて試料基礎資料データを [試料基礎資料ID]をとばして登録してください 左端の+マークをクリックしてください。 実験経過記録テーブルの窓が開きます。 ヒューマンインターフェースが悪いですね ウィザードを使ってフォームを作ってください。 このとき、[試料基礎資料ID]、[実験経過記録ID]はウィザードの対象外 プログラムコーディングは一つもいりません

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

それぞれのフォームの形式がわからないので 試料基礎資料フォームと実験経過記録フォームは それぞれ単票形式とします。フォームの形式が 帳票形式、あるいはサブフォームを持っている場合は コードそのものを変更する必要がある場合も あります。以下手順です。 (1) 試料基礎資料フォームと実験経過記録フォームに 試料番号が表示されるテキストボックスを ともにtx試料番号とします。名前は適当に変更 してください。 (2) 以下のコードを標準モジュールに貼り付け 保存してください。 Function IsLoaded(strFrmName As String) As Boolean ' フォームがロードされているかをチェック Const conFormDesign = 0 Dim X As Integer IsLoaded = False For X = 0 To Forms.Count - 1 If Forms(X).FormName = strFrmName Then If Forms(X).CurrentView <> conFormDesign Then IsLoaded = True Exit Function End If End If Next End Function (3) 以下はフォームのボタンをクリックスして 実験経過記録フォームを開くときのイベント で試料基礎資料フォームの試料番号を 実験経過記録フォームに貼り付ける コードです。適当に変更してください。 Private Sub コマンド1_Click() 'tx試料番号にデータがあるか確認 If IsNull(Me!tx試料番号) Then MsgBox ("試料番号が入力されていません。") Exit Sub End If '実験経過記録フォームを開く DoCmd.OpenForm ("実験経過記録フォーム"), acNormal '実験経過記録フォームが開かれたか確認とデータの貼り付け If IsLoaded("実験経過記録フォーム") = False Then MsgBox ("実験経過記録フォームがひらかれていません") Exit Sub Else 'データの貼り付け Forms!実験経過記録フォーム!tx試料番号 = Forms!試料基礎資料フォーム!tx試料番号 End If End Sub フォームの構造がわからないので今のところ このような感じです。はずしているかも しれませんが。

yukitanguero
質問者

補足

ご回答ありがとうございました。試してみましたが、動きませんでした。ちなみにこれだと実験結果記録フォームが開いたとき、1番目のレコードが開いてしまうからかなと思いました。新しいレコードを開き、そこの空欄の試料番号の欄に、試料基礎資料フォームの試料番号をコピーするとうまくいくなあと素人考えで思いました。すみません基本的なことで、新しいレコードを開く部分をどう書けばいいですか。

関連するQ&A

  • Accessのフォームでデータの更新や、新規登録ができません

    Accessのフォームについての質問です。 単票形式のフォームを作成したところ、内容の更新もできず、新しいレコードを追加するためのボタン(▲と*のボタン)も無効になっているので、レコードの新規追加ができません。 フォームに入れるフィールド(氏名や商品番号など)を変えると、上記のような状況にはなりません。 何がまずいんでしょうか?

  • [Access]検索データの表示 など

    (1)テーブルがA、Bと2つあります。 Aのフィールドは店舗ID、店舗名、支店名、店舗住所、店舗電話番号です。 Bは案件ID、店舗名、支店名、店舗住所、店舗電話番号、それ以外に20ほどフィールドがあります。 Bをフォームを使って入力するのですが、Bのフォームの電話番号欄に電話番号を入力し、コマンドボタンを押すとAの該当する店舗データがBのそのレコードの各対応するフィールドに反映されるようにしたいのですが、どのようにすればいいかわかりません。 また、該当する電話番号がなかった場合は該当なしのメッセージを表示させたいです。 (2)Bのフォームで新規レコードを作成したときに、自動で日付フィールドに現在の日付を、時刻フィールドに現在の時刻を入れたいです。 どなたか教えてください。

  • ACCESS データの抽出 同一フォーム内でコマンドボタンを使用して

    ACCESSでシステムを作成中です。 T_全生徒情報 というテーブルがレコードソースに設定されています。 レコード数は約300あります。 フォームで学生一覧が参照できていますが数が多いので、条件を指定して絞り込めるようにしたいと考えています。 同一フォーム内に コマンドで「1年生」「2年生」「3年生」と作成し、 「1回生」を押すと、300のレコードの内、テーブルでフィールドの「学年」が「1」のレコード全てを表示できるようにしたいのです。 同じフォーム内でのレコードの抽出が難しく四苦八苦しています。 参考書などで Filter 等いろいろを試してみましたがうまくいきません。 どなたか教えてください!!

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

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

  • ACCESSでのデータ削除について

    XP&ACCESS2003 メインフォーム/サブフォーム形式のフォームで、受注番号で連結しています。 メインフォームが受注、サブフォームが受注明細です。(1対多) サブフォームに削除ボタンをつけて、受注明細のレコードを1件削除するようにしています。以下が削除ボタンのクリック時のプロシージャーです。 DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 クリックした段階で、クエリーで見てみると確かに削除されています。 ただ、フォームを再度開くと空のデータが追加されています。(=削除前とレコード件数は同じ) このサブフォームでは、レコード追加時にフィールド「行」に行ナンバーを入力させるために、隠しで [行NO]テキストボックスを持たせて、自動的に行NOをいれています。 サブフォームの挿入前処理は以下です。 [行NO] = Val(DMax("[行NO]", "Q_受注_工程_明細_行NO") & ".0") + 1 削除してもこの行NOが自動的に別のレコードを追加しているようです。 何か、よい方法をご存知の方、よろしくお願いします。

  • アクセス2007 コマンドボタン ウイザード

    2007を使い始めたところですが、教えてください。単票フォーム(A)のデザインで、コマンドボタンを貼り付けて、別単票フォーム(B)を「フォームを開く」のをウィザードを利用して行おうとしています。その中で、「特定のレコードを表示する」を選択した場合、フォーム(B)のフィールドだけ表示されて、フォーム(A)のフィールドが表示されません。2002では、両方表示されて、「<ー>」ボタンを押せば、うまく目的のレコードの単票フォームが表示されていたのですが、どうなっているのでしょうか?・・・・・・フォーム(A)のフィールドが表示されません。・・・・・・よろしくおねがいします。

  • ACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

    フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。 売上テーブル  ID   商品コード  日付    金額   1    G1     20080101  532153  2    G1     20080101  564281  3    G1     20080301  538123  4    J4     20080301  124531  5    J4     20080302  125483 ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型 これを使い、 フォームではまず レコードナンバーを入力画面        ↓ レコード番号を入れると、そのレコードのデーターが画面に表示され、 その画面で修正可能        ↓  保存 ボタンで保存 という流れです。 レコードナンバーはIDを使おうと思っています。 データの量が莫大な為、コンポボックスなどは使えません。 できるだけ、VBAなどは使わずに作りたいです。 よろしくお願い致します。

  • 文字列の入っているString値、何も入力されていないString値、Null値の全てを表示されるには?

    access2003です。 フォーム1とクエリ1とテーブル1があります。 クエリ1の「テーブル1の番号フィールド」の抽出条件に 「Like "*" & [Forms]![フォーム1]![番号テキスト] & "*"」と入力しています。 フォーム1の番号テキストに「1」を入力しコマンドホ゛タンを押すと 「1」を含むレコードを表示され フォーム1の番号テキストに「*」を入力しコマンドホ゛タンを押すと 何かしらの文字列が入力されているレコート゛が表示されます。 しかし テーブル1番号フィールドには、 Null値と何も入力されていないString値(""←が入っている)も含まれています。 (見た目は空白どちらも空白です) (String値がある理由はADOを使って何も入力されてない値もまとめてレコードに追加している為) ここで質問なのですが フォーム1のコマンドホ゛タンを押したときに 文字列の入っているString値、何も入力されていないString値、Null値の全てを表示されるには どうすればいいのでしょうか? よろしくお願い致します。

  • Access リレーションシップ データ型について

    リレーションシップとクエリ内部結合の違いについて リレーションシップとクエリ内部結合(リレーションシップ)の違いは参照結合性や連鎖更新、連鎖消去設定の差だけでしょうか? データ型のオートナンバーは一度使用した番号はレコードデータを消去しても、二度と使えないのでしょうか? 任意の番号に指定しようすると、オートナンバー型のIDフィールドに連結されているため編集できません となります。

  • Access VBA 抽出したレコードをフィールドを増やして別テーブルに追加する方法

    2つのクエリーで抽出したレコードを結合し、そのレコードにID番号をつけて別のテーブルに追加することはできないでしょうか? 1枚のガラスの値段表を作りたいと考えています。 使用するテーブルは、1つ目がサイズ表でサイズ番号と2つの辺の長さの3つのフィールドからできています。2つ目はガラスの種類表で種類番号と種類名の2つのフィールドでできています。3つ目は値段表で上の2つの表の5つのフィールドにID番号と値段の2つのフィールドがあり全部で7つのフィールドです。 いま、フォームにサイズ表と種類表のサブフォームをつくり、それぞれ結合したいレコードを表示させています。そこからフォームに値段を入力し登録ボタンをクリックすると値段表に新しいレコードを追加するような登録ボタンを作りたいです。 簡単な例でも構いません。 VBAがわかる方、教えてください。

専門家に質問してみよう