メニュー画面を作って
[発注入庫]・[出庫]のコマンドボタンを作り
そのコマンドボタンから[フォーム発注入庫]・[フォーム出庫]を表示します
(↑オートNOフィールドのある一つのテーブルを基に作りました)
それぞれには明細テーブルのデータがサブフォームで埋め込んであります


1)レコードを移動する時にレコードバーではなく
 [フォーム発注入庫]に作ったテキストボックスに
 オートNOフィールドで取った番号を入力して
 Enterキーを押すと
 [フォーム発注入庫]の中で表示する様にしたいのですが、
 上手くいきません・どうしたら良いのでしょうか?

2)[フォーム発注入庫]に表示するのは
 明細データの発注個数があるレコードのみ
 [フォーム出庫]に表示するのは
 明細データに出庫個数があるレコードのみ
 でも、それぞれのフォームから
 基にした一つのテーブルの
 新規レコード番号(オートNOフィールド)が取れる!!様にしたいのです
 

在庫確認や棚卸は出来るのですが、フォームの操作が今ひとつです。
いつまでも「調整中」で置いておくわけにもいかず
ギブアップです。
考えているうちに訳がわからなくなって来た・というのも原因なので
質問内容も伝わるかどうか、不安です。
素人なので、簡単に説明していただけると助かるのですが
どうかよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

とりあえず、1)だけですが。



オートNOを入力するテキストボックスを[txtAutoNo]として、
大元のテーブル名を[発注]、オートNOフィールド名を[オートNO]とします。
「Enterを押すと」は、フォーカスを失ったらということにします、とりあえず。
なので、[txtAutoNo][Enterキー入力時動作]プロパティは[規定]にしておいて下さい。


Private Sub txtAutoNo_LostFocus()

Dim tempNo As Long
Dim rs As Recordset

tempNo = CLng(Me.txtAutoNo.text)

If DCount("[オートNO]", "[発注]", "[発注].[オートNO] = " & tempNo) = 0 Then
Msgbox "データがありません。", vbCritical
Exit Sub
Else
Set rs = Me.Recordset.Clone
rs.FindFirst "オートNO = " & tempNo
Me.Bookmark = rs.Bookmark
rs.Close
Set rs = Nothing
End if

End Sub

この回答への補足

Private Sub txtautono_LostFocus()

Dim tempNo As Long
Dim rs As Recordset

tempNo = CLng(Me.txtautono.Text)

If DCount("[部品伝票NO]", "[T-部品伝票NO]", "[T-部品伝票NO].[部品伝票NO]=" & tempNo) = 0 Then
MsgBox "データがありません。", vbCritical
Exit Sub
Else
Set rs = Me.Recordset.Clone
rs.FindFirst "部品伝票NO = " & tempNo
Me.Bookmark = rs.Bookmark
rs.Close
Set rs = Nothing
End If

End Sub


という風に、テーブル名とフィールド名を変更したのですが

 コンパイルエラー
 メソッドまたはデータメンバが見つかりません

というエラーが出て固まってしまいます
何が足らないのでしょうか?

補足日時:2001/09/20 00:36
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QOutlookで[全員に返信]をクリックすると、[宛先]と[CC]をす

Outlookで[全員に返信]をクリックすると、[宛先]と[CC]をすべて[CC]に入るように設定。

今までOutlookずっと愛用していますが、現在は最新版のOutlook2010を使用してます。

[全員に返信]をクリックすると、元メールの[送信元]と[宛先]が新メールの[宛先]に変わり、[CC]はそのまま引継ぎますが、元メールの[送信元]と[宛先]と[CC]を全部[CC]に入るように設定などありますか。

または、[送信元]だけを[宛先]にして、ほかはすべて[CC]に入ってもいいですが。

Aベストアンサー

>[全員に返信]をクリックすると、元メールの[送信元]と[宛先]が新メールの[宛先]に変わり、[CC]はそのまま引継ぎます

これって、Microsoftのメールソフトの仕様ですかね。
自分が受信したメールの宛先やCCであっても、Outlook Expressもそうなるようです。

私のメインのThunderbirdでは、自分が複数の宛先やCCに含まれている場合でも、それらの受信メールから「全員に返信」で、受信メールの「送信元」のみが、返信メールの宛先に入り、他の「宛先」や「CC」はすべてCCに表示されます。

>[送信元]だけを[宛先]にして、ほかはすべて[CC]に入ってもいいですが。

この部分での方法は、返信メールの宛先欄で、送信元以外をドラッグして選択して右クリックから切り取り、CC欄に右クリックから貼り付けするしかないと思います。

Q[Access2003]フォーム下部に表示されるレコード欄を非表示にする

標題の件ですが、通常フォームを作成したときにデフォルトで開くとフォーム下部にレコード欄が表示されるのですが、それを非表示にする場合はどうすればいいですか?
お教えください。

Aベストアンサー

VBA になりますが。
http://support.microsoft.com/kb/278379/ja

参考URL:http://support.microsoft.com/kb/278379/ja

Qアクセス 正味の算出 フィールド1 オートID フィールド2 顧客No フィールド3 商品名 フィー

アクセス 正味の算出

フィールド1 オートID
フィールド2 顧客No
フィールド3 商品名
フィールド4 単価

このようなテーブル構成で、顧客Noでグループ化して、IDのカウントした結果が1、2となります。
その際、1の場合は1、2の場合は0.5と別フィールドに記載する方法を教えて下さい。

Aベストアンサー

>本当はIDのカウントが2以下なら1を3以上なら999(数値で0、1以外なら何でも良いです)

IIf([IDのカウントした結果のフィールド名]>=3,999,1)

Q[Access]あるフォームのクラスモジュールで値を入れた変数を他のフォームでそのまま利用したい

モジュールとクラスモジュール(イベントプロシージャ)に違いがあることや、モジュールを超えて変数を利用したいときは、Publicで宣言する、という辺りを本を読んでおおまかに理解しました。
帳票管理フォームというフォームに受付CDという主キーの番号があります。そのフォーム上に帳票の詳細な事項を入力するフォームを呼び出すボタンがあります。フォームのイベントプロシージャの一番上のOption Compare Database,Option Explicitの直下行にPublic UketukeCD as Integerと宣言し、
ボタンのイベントプロシージャで、
UketukeCD = Me![受付CD].Value
などと記述しました。
新規入力データの受付CDが例えば452ならUketukeCDには452が代入されればいいんです。
帳票の詳細な事項を入力するフォーム(報告書フォームとします)の「読みこみ時」のイベントプロシージャに以下のように記述しました。
こちらのモジュールの一番上にもPublic UketukeCD as Integerと宣言し、(←これは必要なんでしょうか?)
Me![受付CD].Value = UketukeCDと書きました。
過去のデータを検索するときはレコードソースのテーブルの受付CDのデータを受付CDフィールドに持ってき、新規入力の場合は、受付CDは帳票管理フォームのものを代入するという設計で、UketukeCDの値(例:452)を報告書フォーム内の受付CDフィールド内に出力する、という感じですが、なぜかUketukeCDにはいつも0が代入されています。
変数は他のモジュールで利用できても代入された値までは移行されないのですか?
イベントプロシージャだからできないんですか?
字数の制限上、コードをかなり省略しています。
足りない部分は補足で補いますのでおっしゃって下さい。

モジュールとクラスモジュール(イベントプロシージャ)に違いがあることや、モジュールを超えて変数を利用したいときは、Publicで宣言する、という辺りを本を読んでおおまかに理解しました。
帳票管理フォームというフォームに受付CDという主キーの番号があります。そのフォーム上に帳票の詳細な事項を入力するフォームを呼び出すボタンがあります。フォームのイベントプロシージャの一番上のOption Compare Database,Option Explicitの直下行にPublic UketukeCD as Integerと宣言し、
ボタンのイベントプロシ...続きを読む

Aベストアンサー

どうも変数のスコープ(変数の有効範囲)を理解していないようですね。
例えば
------モジュールのモジュール1
Option Compare Database
Public a As Integer
Sub aaa()
a = 3
End Sub

------フォーム1のモジュール
Option Compare Database
Public a As Integer
Private Sub Form_Load()
Dim a As Integer
a = 1
MsgBox CStr(a)
End Sub

Private Sub コマンド1_Click()
a = 2
Call aaa
End Sub

Private Sub コマンド2_Click()
MsgBox CStr(a)
End Sub

-------フォーム2のモジュール
Option Compare Database

Private Sub Form_Load()
MsgBox CStr(a)
End Sub


ではこれをフォーム1を開いて、ボタン1を押して、ボタン2を押して、フォーム2を開くと
メッセージボックスは



との順で表示されます。

これはスコープが
関数内が宣言
フォーム共通の宣言
DB全体(モジュール)の宣言

の順に優先度が高いためです。一番したが一番低い
各々スコープは

関数内は
sub

End sub
が有効範囲で

フォーム共通の宣言は同一フォーム内で有効

モジュールの場合は同一DB内で有効です。

通常、Publicを宣言して別のフォームに値を渡す場合はモジュールにPublic宣言をします。

よって今回の場合はフォームAにPublic変数を定義してもフォームBに対しては有効では有りません。
このような場合はモジュールでPublic変数の定義をする必要があります。

フォーム内は宣言不要!!

どうも変数のスコープ(変数の有効範囲)を理解していないようですね。
例えば
------モジュールのモジュール1
Option Compare Database
Public a As Integer
Sub aaa()
a = 3
End Sub

------フォーム1のモジュール
Option Compare Database
Public a As Integer
Private Sub Form_Load()
Dim a As Integer
a = 1
MsgBox CStr(a)
End Sub

Private Sub コマンド1_Click()
a = 2
Call aaa
End Sub

Private Sub コマンド2_Click()
MsgBox CStr(a...続きを読む

Qクエリを基にしたフォームでテーブルにレコードを追加したい

よろしくご教授ください。
商品の在庫場所の検索システムを作成しています。
テーブルは「T商品(商品コード、商品名、在庫場所)」と「T在庫場所(在庫場所ID、在庫場所)」があり、それを基にクエリ「Q商品在庫場所(商品コード、商品名、在庫場所)」を作成しました。
 エクセルデータからなんとか先の2つのテーブルを作成したのですが、将来新しい商品が入ってきたり、在庫場所変更に備えて、フォームにて追加・編集できる方法を考えています。何とか「Q商品在庫場所」を基に「F商品在庫場所」を作ってはみたのですが、入力しようとしても何も入力できません。編集ロックがかかっている様子もありません。リレーションが問題なのでしょうか?
 「Q商品在庫」で入力したデータを、2つのテーブルのそれぞれのレコードとして蓄積することは可能なのでしょうか?
 クエリのデザインビューでは『「T在庫場所」1→∞「T商品」』となっています。
 よろしくお願いします。

Aベストアンサー

No.2,3,4です。
すみません、こちらも見落としてました(汗)
まずは体調が回復されたようで、何よりです。

> Dim rst As DAO.Recordset

・・・DAOですか。
私がDBに機能を組み込む場合、
 1)マクロ=自作
 2)VBA=自作/Copy&Paste
 3)その他(DAO・ADO)=Copy&Paste
  (Webでよさそうなサンプルを探して)
という感じで、DAOになると中身をいじれるレベルではないんです。
・・・「回答の種類」に「お詫び」を加えてほしい感じです(汗)


ただ、

> F-itemlocationを開きスクロールしようとすると、「数値型にテキスト型云々」

からすると、「列数」と「値集合ソース」、「連結列」の辺りに何か問題があるのかな、という気もします。
「値集合ソース」に指定されているテーブル・クエリ・SQL文には問題はないでしょうか?
(例えば、クエリのデザインビューで、ドラッグ&ドロップではなく手入力で「T-location」と入力した場合、「[T]-[location]」というように書き換えられるという問題が発生しますので、その辺りが怪しいようにも思えます)

No.2,3,4です。
すみません、こちらも見落としてました(汗)
まずは体調が回復されたようで、何よりです。

> Dim rst As DAO.Recordset

・・・DAOですか。
私がDBに機能を組み込む場合、
 1)マクロ=自作
 2)VBA=自作/Copy&Paste
 3)その他(DAO・ADO)=Copy&Paste
  (Webでよさそうなサンプルを探して)
という感じで、DAOになると中身をいじれるレベルではないんです。
・・・「回答の種類」に「お詫び」を加えてほしい感じです(汗)


ただ、

> F-itemlocationを開きスクロールしようと...続きを読む


人気Q&Aランキング

おすすめ情報