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

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

A 回答 (3件)

遅くなり申し訳ありません。



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

という補足をいただきましたが、最初に回答する時点で
内容を読み間違えていたかもしれないな、と思っていました。
試料基礎資料フォームを開いてときに、試料番号をコピーし、
新しいレコードを開く、ということはコピーした試料番号を
新しいレコードの主キーの番号にするといことなのでしょうか。
新しいレコードとは新規レコードと解釈してよろしいのでしょうか。


実験記録結果フォームのレコードソース、
たとえばテーブルならばテーブルのフィールドの主キー
の名称、データ型、そのほかいくつかのフィールドについて、
また、試料基礎資料フォームについても同様に補足していただければ
と思います。

いただいた補足から何となく判るのですが、具体的な
補足があればと、思います。
    • good
    • 0

失礼ですがアクセスは初心者ですね、


アクセスはリレーショナルデーターベースの一つです。
アクセスの設計はテーブル作成から始めます。
通常のテーブルには、重複を許さない主キーを設けます。
※主キーは通常オートナンバー設定にします。
 たまに商品コード等を主キーに設定されたものも見かけますが、商品コードの変更ができなくなるためこれは別に設定してください。
2つ以上のテーブルに共通の項目を1つ用意して、この項目によりテーブル同士を関連付け(リレーションシップと呼ぶ)ます。
リレーションシップが設定されたテーブル間には1:Nで関連付けられます。

本題に入ります。
試料基礎資料と実験経過記録テーブルは出来上がっていますね
それぞれのテーブルには主キーがオートナンバーで設定されていますね、
この項目名を[試料基礎資料ID]と[実験経過記録ID]とします。
実験経過記録テーブルに[試料基礎資料ID]を追加します。
テーブル間を[試料基礎資料ID]でリレーションシップを設定して初期の目的は達成されます。
実験経過記録テーブルを開いて試料基礎資料データを
[試料基礎資料ID]をとばして登録してください
左端の+マークをクリックしてください。
実験経過記録テーブルの窓が開きます。

ヒューマンインターフェースが悪いですね
ウィザードを使ってフォームを作ってください。
このとき、[試料基礎資料ID]、[実験経過記録ID]はウィザードの対象外
プログラムコーディングは一つもいりません
    • good
    • 0

それぞれのフォームの形式がわからないので


試料基礎資料フォームと実験経過記録フォームは
それぞれ単票形式とします。フォームの形式が
帳票形式、あるいはサブフォームを持っている場合は
コードそのものを変更する必要がある場合も
あります。以下手順です。

(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


フォームの構造がわからないので今のところ
このような感じです。はずしているかも
しれませんが。

この回答への補足

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

補足日時:2010/05/21 15:38
    • good
    • 0

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