• ベストアンサー

アクセスフォームのデータ入力

教えてください。 アクセス2000で銀行残高管理DBを作っています。 データ入力用フォームで次のフィールドがあるとします。 (1)支払先(2)借方科目名(3)貸方科目名(4)金額(5)摘要 1)同じフォームで複数行のレコードを入力できるようにしたいのですができますか? たとえば5行くらいです。  2)同じ科目の取引が何回も続くような場合に、実行キーを押すと前の行の同じフィールドのレコードを自動的に入力させることはできますか? 以上、ご指導お願い致します。

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

  • ベストアンサー
  • yomo3
  • ベストアンサー率32% (88/269)
回答No.3

うっひゃあ! 大事なこと書いてなかった。 #2です。 日付の場合の注意事項です。 DefaultValueプロパティは日付形式をリテラルで代入しないと、エラーまたは変な値になってしまいます。 具体的には、 Text1.DefaultValue="#"&Format(Text1,"m/d/yyyy")&"#" の様にします。

jetstream
質問者

お礼

なるほど! 日付はこうやるわけですね。 勉強になりました。

その他の回答 (2)

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.2

こんにちは! 2)についてですが、#1の方の方法と別に次の方法もあります。 まず、それぞれのテキストボックスの「更新後処理」に Text1.DefaultValue=Text1 と入れてやります。 ここで、Text1はそのテキストボックスの名前です。 そうすると、新規フィールドにのみ最終入力値が表示されます。 一回フォームを閉じると、テーブル設計時に指定した「初期値」に戻ってしまいますが、これも継続したいのならば、テーブルのフィールドのDefaultValueプロパティを変更するようにプログラムを書きます。 データベースオブジェクトのテーブル定義を開いて変更します。 具体的にはヘルプを参照ください。

jetstream
質問者

お礼

いろいろな方法がありますね! 又ご指導ください。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 1) 帳票フォームにすれば、複数行を表示出来ます。 ただし、入力はあくまで1行(1レコード)ごとになります。 別の行へ移動する時に一旦保存されます。 2) フォームの更新前イベントで、そのフィールドの値を変数に保存しておき、レコード移動時イベントでその値をデフォルト値として、フィールドに代入するようにします。 ただし、あくまで新規レコードの場合のみとします。 実際のコードは以下のような感じになります。 (借方科目名の場合、データ型はとりあえず文字列型にしました。) (フォームモジュールの宣言部に) Private KarikataKamoku As String (各イベントプロシージャに) Private Sub Form_BeforeUpdate(Cancel As Integer)   KarikataKamoku = Me!借方科目名.Value End Sub Private Sub Form_Current()   '新規レコードの場合のみ   If Me.NewRecord Then     Me!借方科目名.Value = KariKataKamoku   End If End Sub

jetstream
質問者

お礼

なるほど、よくわかります。 maruruさんご指導ありがとうございました!

関連するQ&A

  • アクセスのデータ入力について

    教えてください。 アクセスのフォームでデータ入力をする際に、同じフィールドに同じデータを何回も連続して入力する場合があります。 たとえば、「日付」であるとか「勘定科目」あるいは「摘要」などです。 いちいち入力するのは面倒なので、たとえば「Enter」を押すと、前回、同じフィールドに入力したデータを表示してくれるようなプロシージャは作れないものでしょうか?? よろしくお願いします!

  • ACCESSのテキストボックスの規定値を変更したい

    お世話になります。 伝票の登録フォームを作ったのですが コンボボックスを設定したためマウス操作とキーボード入力が入れ替わります。 少しは軽減しようと、規定値設定の活用を考えたのですが行き詰っています。 取引の目的によって借方勘定科目と貸方勘定科目の内容はある程度決まります。 目的テーブルに借方勘定科目、貸方勘定科目規定値のフィールドを設定してこれに備えましたがこの先がわかりません。 伝票の登録フォームを添付しますのでこれをもとに教えて頂けると助かります。 フォームは日付、目的を入力するメインフォーム「仕訳伝票入力」 と勘定科目金額を入力するサブフォーム「仕訳伝票入力サブ」の構成です。 添付は目的のコンボボックスをクリックしたところです。 借方の28 貸方の2をサブホームのそれぞれの項目の規定値に設定したいのですが

  • ACCESS VBA 条件付き処理

    お世話になります。 仕訳伝票の入力フォームを 日付、伝票No.、目的のテキストボックスと目的テーブルにある、借方規定値、貸方規定値のテキストボックスをメインフォームとし 借方金額、貸方金額のテキストボックス、借方科目ID、貸方科目IDのコンボボックスをサブフォームに配置しました。 サブフォームで新規レコードの借方科目IDにメインフォームの借方規定値をコピーするために次のようにコーディングしました。 尚借方科目IDはテーブル定義でフィールドサイズ:長整数型 規定値:0にしています 命令文の右端の(1)(2)(3)で説明します。 (1)または(2)が有効であればよいのですが (1)(2)はきいていないようで、(3)は有効です Private Sub 借方金額_Exit(Cancel As Integer) If 借方科目ID = 0 Then 借方科目ID = Me.Parent!借方 '…(1) End If If IsNull(借方科目ID) Then 借方科目ID = Me.Parent!借方 '…(2) End If 借方科目ID = Me.Parent!借方 '…(3) End Sub

  • ACCESS2013リストから選択してデータの入力

    ACCESS2013で下記のような名前の3つのテーブルがあります。 T会社名、T摘要名テーブルには既にデータが入力されており、 この入力された値を元にT支払にデータを入力することを考えています。 T支払で会社名をA社と入力したら、摘要名はT摘要名テーブルを参照して、A社の摘要名の中からだけリスト選択を行いたいのですが、どのような手順を踏めばよいでしょうか? T会社名(フィールド値に会社名を持つ) T摘要名(フィールド値に会社名と摘要名を持つ) T支払(フィールド値に会社名と摘要名を持つ) 選択クエリを使って、抽出条件を使えばできると聞いたことがありますが、いまいち理解できませんでした。どのテーブルで、あるいはクエリ、フォームを新たに作って、どのような操作を行うのか具体的に教えていただきたいです。よろしくお願いします。

  • フォームでの自動入力

    Access2002を使用していますが、フォームでの自動入力につき質問させてください。 勘定科目テーブルというのがあって、コード番号と科目名だけの簡単なテーブルですが、会計取引入力のフォームを作成して、「コード番号を入力したら(勘定科目テーブルを参照して)該当する科目名を別のフィールドに自動表示&入力する」、という処理を行いたいのですが可能でしょうか? Excelのlookup関数のようなものですね。 どなたか教えてください。

  • Access2000で、コンボボックスの値から自動入力させる。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=140115 の回答を参考に、自分なりに変更させてやってみたところ、変な結果になってしまいました。 今現在の状態としては、 「支払先テーブル」というものがあり、 No  支払先名1  支払先名2 というフィールドがあります。 また「フォーム1」というフォームがあり、 そちらには 支払先No  支払先名1  支払先名2  テキスト1 というフィールドがあります。 フォーム1の支払先Noはルックアップになっていて、選択すると、「支払先テーブル」のNo・支払先名1・支払先名2のすべてが出てきて、どれかを選ぶと、Noが出るようになっています。 希望としては、上記に書いた、フォーム1の支払先Noで、選択すると自動で支払先名1、支払先名2に自動で入力されるようにしたいのです。 一番最初にもかいたように、参照ページをみながらやったので、ためしに、新しいフィールドをフォームに作成しました。(テキスト1) こちらのコントロールソースに =DLookUp("支払先名1","支払先テーブル","No"=[Forms]![フォーム1]![支払先No]) と入力して、実行したところ、「支払先No」が空欄の場合だけ、一番最初の「支払先名1」が出てきて、支払先Noが入っているところは空欄になってしまいました。 一体どこが間違っているのでしょうか? よろしくお願いします。

  • ACCESSのサブフォームからメインフォームへの移動

    お世話になります。 仕訳伝票の入力画面を作成しています。 仕訳登録フォームに サブフォームを2つあります。 うまく説明できないのでコーディングを記入しておきます。 これで仕訳登録フォームから仕訳登録サブ借方フォーム 仕訳登録サブ借方フォームから仕訳登録サブ貸方フォームへはカーソルが移動しますが 仕訳登録サブ貸方フォームから仕訳登録フォームへは移動してくれません マウスを使わずイベントで移動する方法はありますか メインフォーム 仕訳登録 Private Sub 目的_LostFocus() DoCmd.GoToControl "仕訳登録サブ借方" End Sub サブフォーム1 仕訳登録サブ借方 Private Sub 借方合計_Click() Forms!仕訳登録!借 = 合計 DoCmd.GoToControl "仕訳登録サブ貸方" End Sub サブフォーム2 仕訳登録サブ貸方 Private Sub 貸方合計_Click() Forms!仕訳登録!貸 = 合計 DoCmd.GoToControl "仕訳登録" End Sub 「カレントレコードに'仕訳登録'というフィールドはありません」とメッセージにになりますので Private Sub 貸方合計_Click() Forms!仕訳登録!貸 = 合計 DoCmd.GoToControl "Forms!仕訳登録!貸" End Sub 「カレントレコードに'Forms!仕訳登録!貸'というフィールドはありません」 とエラーメッセージになります。

  • Access2000 フォームでのデータ入力について

    質問させていただきます。 Access2000で、あるフォームを作りました(帳票フォーム)。フォームの基になるレコードソースはクエリーです。このクエリーは原料伝票テーブルから在庫数が特定の数量を下回った原料を抽出しています。 フォームは以下イメージです。 原料コード 原料名  在庫数  発注数 原料コード~在庫数をクエリーから、発注数を手入力 にしました(発注数のコントロールソースは非連結です)。 で・・・発注数に値を入力すると全部の行が同じ値になってしまします。これを改善したいのですが・・・。 このやり方は根本的に間違っているのでしょうか?

  • Accessでフォーム上に 直前の データを表示させるには

    Accessでフォーム上で、データを入力するのに、一つ前のレコードの データを基参考に 次のデータを入力したいと思います。一つ前のレコードを そのフォーム上に表示させるには どうすれば良いのでしょうか? あるレコードのすべてのフィールドの値を表示させたいのです。

  • ACCESSの規定値を動的に設定するには

    お世話になります。 仕訳伝票の登録フォームを作りました。 テキスト項目にコンボボックスを5個セットしました。 実際に操作するとマウス操作とキーボード操作の作業が面倒です。 フォームは伝票No.、日付、伝票の目的 のメインフォーム「仕訳伝票入力」 勘定科目、適用、金額のサブフォーム「仕訳伝票入力明細サブ」 メインフォーム上の伝票の目的が決まればサブフォームの勘定科目(借方科目、貸方科目)ほぼ決まります。 そこで伝票の目的テーブルに借方、貸方に勘定科目IDの項目に登録しておき、 これをサブフォームの借方科目、貸方科目の規定値として動的に設定出来ないものかと… この質問は前の http://kikitai.teacup.com/qa4980091.html の補足です。こちらも宜しくお願いします。