ジメジメする梅雨のお悩み、一挙解決! >>

いつもお世話になっております。

フォームから入力してるデータが、テーブルには保存されているのですがフォームのレコードとして保存されなくなってしまいました。主キーは関数で最大値+1に設定しているのですが、NO・13までは普通に格納されています。レコードを新規で作成するとNO・14になりますが保存してフォームを閉じるとレコード数は消えて総レコード数は13と表示されていますが、再度新規で作成するとNO・15のようになります。

最初に入れていたデータをできれば削除せずに上手くフォームにも表示されるようにしたいです。
フォームだけではなく、クエリ、レポート同様に反映されなくなってしまいました。
どんどん悪化してしまいます、どなたか改善策をご教授ください。

A 回答 (1件)

想像ですが、そのフォームは新規入力するために作られているからではないですか?


作りかえるか、別にフォームを作って、フォームの元になるクエリを全レコードを参照するようにして、開いた時に新レコードに行くようにすればいいと思いますよ。
    • good
    • 0
この回答へのお礼

さっそくお返事ありがとうございます。
直すよりも作り直した方がややこしくなさそうですね。
作り直してなぜそうなったか調べてみます。
ありがとうございました。

お礼日時:2017/07/15 17:49

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

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

Qリレーション等のご教示お願いします。自主制作中です。

パート先の受注発注を制作してます。
テーブルは全部できています。ひとつづつのフォームも作れます。
そこからレポートも作れるんですが、2つ合わさった物をつくるとどうもうまくいかずいきずまってしまいました。


質問1 発注No,を 2017- から始まるようにしたいです。
    定型入力のところになにかいれたらいいですか?


質問2 オーダーNo,を1000から始まるオートNoにしたいです。

質問3 本当は、1発注No,に2~3の注文があるので
    発注No,・受注日・取引先・担当フォームの下に注文の明細をオーダーNo,で表式に表示して    入力したかったのですが、サブフォームにして開くとサブフォームのところだけが表示されず    うまくいかなかったり、表示されても発注No、ごとにページが進まずフォームとサブフォー    ムの連携がバラバラだったりとうまくいかなかったので、T受注とT受注明細をくっつけまし     た。
    上段にT受注 下段にT受注明細をうまく表示する方法ありますか?発注Noごとにページをか    えたいです。あとなぜかまだ何も入力してないときからF受注明細をひらくとパラメーターが    出ます。

質問4 入力したフォームをレポートに発注No,でまとめで出したいです。
    いまはNoを入れても全部のデーターが出てきます。

受注No,1つに対し2~3の注文またその1つずつの注文の納品が2~3回に分かれて行きます。
注文明細から工程明細のフォームも作りたいです。

業者にまかせればと、言われかねませんが小さな会社なもので自力で頑張ってます。よろしくお願いします。

パート先の受注発注を制作してます。
テーブルは全部できています。ひとつづつのフォームも作れます。
そこからレポートも作れるんですが、2つ合わさった物をつくるとどうもうまくいかずいきずまってしまいました。


質問1 発注No,を 2017- から始まるようにしたいです。
    定型入力のところになにかいれたらいいですか?


質問2 オーダーNo,を1000から始まるオートNoにしたいです。

質問3 本当は、1発注No,に2~3の注文があるので
    発注No,・受注日・取引先・担当フォー...続きを読む

Aベストアンサー

[発注No,]や[オーダーNo,]の","のついたフィールド名は避けた方がいいです。
予期せぬエラーの原因になります。

質問1
規定値に
=Year(Date()) & "-"
と入れると2017-と入力される

質問2
https://support.microsoft.com/ja-jp/help/404085

質問3
状況がよくわかりませんのでサブフォームの作成方法を案内します。
https://support.office.com/ja-jp/article/%E3%82%B5%E3%83%96%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E5%90%AB%E3%82%80%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-264731d6-ca69-4204-94d8-c266fe084102

Qaccess 翌日に繰り越す方法

お小遣い帳を作成したいと思っているのですが入金‐出金=残高みたいな感じで作ったとします。
上記で余った残高を翌日の入金のところに表示させるにはどのような操作が必要になるでしょうか?
どのような計算式を使えばよろしいでしょうか?

Aベストアンサー

まず、今現在の所持金を
残高に書く

入ってきた金が入金に

使った金が出金に

所持金の全額が
残金に成る


残高を入金には書かない
書いちゃうと
二重入金に成るから
手持ちの金と合わないよ

QACCESS2016 在庫数に応じた枚数のラベルを印刷したい

初心者ゆえよろしくお願いします。

【前提】
・商品が入っている箱に貼るラベルを必要枚数分印刷したい。
・1箱=50個入
・(例)在庫数が200個の時は、4枚印刷(200÷50=4)
・(例)在庫数が180個の時は、3枚印刷(180÷50=3.6 小数点以下は不必要)

テーブルとフィールドは以下の通りです。

テーブル:T_在庫数
フィールド:「商品名」「在庫数」

商品名 在庫数
 A   200
 B   180

どのようなクエリを作り、レポートで必要枚数分のラベルを印刷できるのか
ご伝授の程よろしくお願いいたします。

Aベストアンサー

こちらを参考に、VBA をいっさい使わない方法で。
https://web.archive.org/web/20141018090940/http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptHowToPrintRabelSpecificNumber.html

まず、最初の
「宛名ラベルを指定枚数 印刷する方法」をざっとご覧になって
連番テーブルを作ってください。
ここでは、固定枚数を印刷する方法ですが、
その応用になります。

次に、中ほどの
「宛名ラベルを個別に枚数を指定して印刷する方法」を
さらっと見てください。
これは [印刷枚数] というフィールドがあることを前提としていますが
応用で、枚数を計算で求めたものを使用します。

リンク先とフィールドの記述等、ちょっと替わります。
クエリの
[フィールド]
枚数: [在庫数]\50
[表示]
オフ
[抽出条件]
>=[連番]

図を参考にしてください。
なお 連番テーブルは「T_連番」という名称になっています。

一応、念のために。
https://msdn.microsoft.com/ja-jp/library/office/gg264594.aspx

こちらを参考に、VBA をいっさい使わない方法で。
https://web.archive.org/web/20141018090940/http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptHowToPrintRabelSpecificNumber.html

まず、最初の
「宛名ラベルを指定枚数 印刷する方法」をざっとご覧になって
連番テーブルを作ってください。
ここでは、固定枚数を印刷する方法ですが、
その応用になります。

次に、中ほどの
「宛名ラベルを個別に枚数を指定して印刷する方法」を
さらっと見てください。
これは [印刷枚数] というフィールドがあること...続きを読む

QAccessを使用して引継ぎ

Access初心者です。
よろしくお願いいたします。

Accessを使用して引継ぎをしたいと考えておりますがどのように作成したらよいか分からず悩んでおります。
アドバイスをよろしくお願いいたします。

まずメニュー画面があり登録画面と確認画面を作ります。
登録画面の内容は
日付、表題、内容の三項です。

次に悩んでいる確認画面です。
イメージは添付の画像のような形を考えております。

まず左側に登録してある日付を一覧で表示し、見たい内容の日付を選択すると右側に内容の一覧が表形式で表示されるようにしたいです。

以上のようなことを行うにはどのようにすればよいでしょうか?
※左側はテキストボックスを使用して…など

ざっくりとした質問ですみませんがよろしくお願いいたします。

Aベストアンサー

メインとなるフォームの中にサブフォームを2つ(日付一覧と内容一覧)作ってみてはどうでしょう。
ただ、登録日付が順次増える等を考えると、イメージ画像のような日付ボタンでは難しいと思いますので、
若干イメージとは異なりますが日付一覧もリストで表示するようにしてはいかがでしょうか?

具体的には、登録テーブルを作成します。内容は日付(日付型)、表題(短いテキスト型)、内容(長いテキスト型)の3項目と仮定します。
「登録テーブル」を基にクエリを2つ作ります。
Q_クエリ1:テーブルの日付のみを表示させ、日付をグループ化しておきます(同一日付で、複数の内容がある場合もあるので)
Q_クエリ2:テーブルの3つの内容を表示させるようにします

次にサブフォーム(イメージ画像の左右2つのフォーム)を作ります。
F_サブ1:帳票形式のフォームを作り、テキストボックス(Tx_日付とします)を1つ配置し、その横にボタンを1つ配置します(選択ボタンとします)。
     ボタンを配置するとウイザードが動きますがキャンセルしてボタンだけにしておいてください
     レコードソースにQ_クエリ1を指定し、Tx_日付のコントロールソースは「日付」にします
F_サブ2:帳票形式のフォームを作り、テキストボックスを2つ配置します(Tx_表題、Tx_内容とします)
     レコードソースにQ_クエリ2を指定し、Tx_表題、Tx_内容のコントロールソースをそれぞれ「表題」、「内容」にします

メインとなるフォーム(F_フォームとします)を作成し、デザインツールからサブフォームを選んで、左右に2つ配置します。
ウイザードでは左側にはF_サブ1、右はF_サブ2を選択します。次の名前の指定では例えば左をサブフォーム1、右をサブフォーム2とします。

Q_クエリ2をデザインビューで開き、「日付」の下の抽出条件に [Forms]![F_フォーム]![サブフォーム1]![Tx_日付] と記述します。

F_サブ1に配置した「選択ボタン」のクリック時イベントでマクロビルダーを開き、以下のようにマクロを設定します
 ・オブジェクトの選択
    オブジェクトの種類:フォーム
    オブジェクト名:F_フォーム
 ・コントロールの移動
    コントロール名:サブフォーム2
 ・再クエリ
    コントロール名:空白のまま

これでメイン(F_フォーム)を開くと、左に日付が並んで表示されますので、
必要な日付の横にある選択ボタンをクリックすれば、右にその日付の表題と内容がリスト表示されます。

日付の横に配置したボタンの代わりに、フォームヘッダを表示させて、そこにボタンを1つ配置し、
そのボタンのマクロを上記と同様にすれば、1つのボタンで同じ動作をさせることが出来ます。
ただし、この場合は、一度日付を選択(クリック)して、フォームヘッダのボタンを押す必要があります。

メインとなるフォームの中にサブフォームを2つ(日付一覧と内容一覧)作ってみてはどうでしょう。
ただ、登録日付が順次増える等を考えると、イメージ画像のような日付ボタンでは難しいと思いますので、
若干イメージとは異なりますが日付一覧もリストで表示するようにしてはいかがでしょうか?

具体的には、登録テーブルを作成します。内容は日付(日付型)、表題(短いテキスト型)、内容(長いテキスト型)の3項目と仮定します。
「登録テーブル」を基にクエリを2つ作ります。
Q_クエリ1:テーブルの日付の...続きを読む

QACCESS2016でテーブル編集時、セル内で、一部の文字列だけをコピー&ペースト選択できない。

ウインドウズ10を使用しています。
ACCESS2016でテーブル編集時、セル内で、一部の文字列だけをコピー&ペーストするという事が多いのですが、一部の文字列だけを選択しようとしても、セル全体が選択されてしまいます。

例えば、
○○○○株式会社 東京都千代田区神田◇◇町◇◇―◇◇―◇◇
というデータの次の行に
△△△△株式会社 東京都千代田区神田✕✕町✕✕―✕✕―✕✕
というデータを作る際、
「株式会社」や「東京都千代田区神田」の部分をコピー&ペーストする、ということをしようと思っても「東京都千代田区神田◇◇町◇◇―◇◇―◇◇」全てが選択されて黒く表示されてしまい、仕方なくそれをコピー&ペーストしても、余分の「◇◇町◇◇―◇◇―◇◇」を一度に選択できないため、一文字ずつBack space等で消していかなくてはなりません。

以前は、このようなことはなく、セル内の一部の文字列だけを選択できたのですが、ある時期から突然このような状態になりました。
可能性としては
①どこかのキーボードを知らずにさわった。
②ウインドウズ・アップデートの影響?
③ウイルスに感染?
といったところです。

なお、保存してあるACCESSのデータを他のパソコン(ウインドウズ10、ウインドウズ8.1、ウインドウズ7等)で開くと問題なく操作できますので、1台のパソコンのみの問題ということになります。

ウインドウズ10を使用しています。
ACCESS2016でテーブル編集時、セル内で、一部の文字列だけをコピー&ペーストするという事が多いのですが、一部の文字列だけを選択しようとしても、セル全体が選択されてしまいます。

例えば、
○○○○株式会社 東京都千代田区神田◇◇町◇◇―◇◇―◇◇
というデータの次の行に
△△△△株式会社 東京都千代田区神田✕✕町✕✕―✕✕―✕✕
というデータを作る際、
「株式会社」や「東京都千代田区神田」の部分をコピー&ペーストする、ということをしようと思っても「東京都千代田区神田◇◇町◇...続きを読む

Aベストアンサー

多分、これでしょう。

フォーム上のテキストを数文字選択しようとすると行全体が選択されてしまう
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_access-mso_win10/%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e4%b8%8a/8331c88b-ce62-44e7-8c76-8088b7233e62

QACCESS Dateadd関数による日付フィルターが使えない

ACCESSにて
選択クエリーでDateadd関数を使用して日付の何か月後を取得出来ましたが、
その取得出来た日付(何か月後)に抽出条件を設定して、
特定の日付や範囲で絞り込むことが出来ません。

「抽出条件でデータ型が一致しません。」とメッセージがでます。


どのうようにすればデータ型を一致させることが出来ますか?

よろしくお願いします。

Aベストアンサー

期間_月がNullの場合、DateAdd関数で「#エラー」が返されているのが原因なのかな?
私も詳しい理由の説明はできないのですが、とりあえず以下の方法で「データ型が一致しません」は無くなりました。

クエリの
終了日:DateAdd("m",[期間_月],[売上日])
これを
終了日:IIf([期間_月] Is Null,Null,DateAdd("m",[期間_月],[売上日])) にしてみてください。

これで「#2017/04/13#」でも抽出できました。
また、終了日を日付で抽出するのであれば、上記の式ですと
「抽出条件:Is Not Null で絞込み」は必要ないかもしれません。

正確な理由説明ができずに申し訳ありません。

Qaccess クエリ 合計の出し方

T在庫(テーブル名)

ID 日付 入庫 出庫 在庫 
1  1/1 2 1 1
2 1/2 3 2 1
3 1/2 4 3 1

クエリの在庫フィールドに在庫=入庫-出庫の式を入れ在庫が出るようにはできたのですが
在庫合計の所も計算するためにはどうしたらよいでしょうか

ID   日付 入庫 出庫 在庫
1  1/1 2 1 1
2 1/2 3 2 2
3 1/2 4 3 3
みたいな感じにしたいのですが詳しく教えていただけませんか?
access初心者なので簡単に教えていただけると助かります。
よろしくお願いします。

Aベストアンサー

DSumについて調べてください。
紹介したサイトの解説にも
[テーブル名]から[条件式]を満たすレコードの[フィールド名]のデータ数を合計する。
とあるようにテーブル内にあるフィールドの合計を求める関数です。

DSum(”在庫",T在庫",ID<="&[ID])
は式として成り立っていません。書くなら
DSum("在庫","T在庫","ID<=" & [ID])
ただしT在庫というテーブルに在庫というフィールドはありませんので合計は出ません。

最初の回答に書いたように
IDがnのときの在庫はIDがn以下の入庫の合計から出庫の合計を引いた値
を式で表すなら
DSum("入庫","T在庫","ID<=" & [ID]) - DSum("出庫","T在庫","ID<=" & [ID])

Qエクセル(切り捨て)

質問失礼いたします。

エクセルの2016を使っております。
切り捨てを使った計算をしたいのですが、うまくいきません。
B9には14 、G9には5.5 という数字が入っております。
M9に14000÷6.4=2187.5 ←これを切り捨てたい
2187×5.5=12028.5 ←これを切り捨てたい
"12028"という数字を出したいんです。

INTを使ってやったのですが上手くいかず、、、

一つのセルに表示されるのはむりでしょうか?

Aベストアンサー

=INT(INT(B9*1000/6.4)*G9)
切り捨ては正の場合に限る

Q年月日の分離

年月日の分離
Excelで、2016/1/20 を年月日に分けて表示したく、
2016、1、20と表示させることできました。
しかし、データそのものは3つとも、2016/1/20のままです。
データを3つに分ける方法ありませんか。
値複写では、2016/1/20のままです。
left、mid、right関数は思いつきました。
しかし、これでは1桁、2桁ある月日の「場合分け」がありそうで面倒です。
確定申告の医療費の集計で、全件不可の通知があり、この問題と解釈しました。
なお、環境はWin10、Excel2013です。

Aベストアンサー

year,month,day,それぞれに関数をつけてググれば
いっぱい出ます。

QVBAか関数でできるのでしょうか?

いつもこちらで皆さんに助けていただいてます。昨日質問しましたが画像が張り付けられていなかったので再度質問です。

”仕入表”タブに入力されたデータが横並びのデータです。
例えば、商品コード/品名/価格/色/入荷数 の並び順で、入力されています。一つの品番に対して色数は1から10個あり、色/入荷数/色/入荷数という風に構成されてます。

そこでこちらでお世話になり、仕入表に入力したデータを縦並びに色別で”在庫表”タブに表を作れるようなVBAを教えていただきました。

画像の仕入表は上の表で、下の表が在庫表に転記されたときの例です。
因みにその時のVBAはこちらです。


Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Application.Calculation = xlCalculationManual
Set wS = Worksheets("仕入表")
With Worksheets("在庫表")
'//E列で「在庫表」Sheetの最終行取得★
lastRow = .Cells(Rows.Count, "E").End(xlUp).Row
'//「在庫表」SheetにデータがあればD列2行目~I列最終行データを一旦消去
If lastRow > 1 Then
.Range(.Cells(2, "D"), .Cells(lastRow, "I")).ClearContents
End If
cnt = 1
For i = 3 To wS.Cells(Rows.Count, "A").End(xlUp).Row '//「仕入表」Sheetの3行目~A列最終行まで
For j = 5 To wS.Cells(i, Columns.Count).End(xlToLeft).Column Step 2 '//E列~i行最終列まで2行毎★
If wS.Cells(i, j) <> 0 Then '//画像で「0」が表示されているので「0」以外を追加★
cnt = cnt + 1
'//最初のデータ行のみ「仕入表」Sheetの日付をD列に表示★
If j = 5 Then
.Cells(cnt, "D") = wS.Cells(i, "A")
End If
.Cells(cnt, "E") = wS.Cells(i, "B") '//B列に「コード」を表示
.Cells(cnt, "F") = wS.Cells(i, "C") '//F列に「商品名」を表示
.Cells(cnt, "G") = wS.Cells(i, "D") '//G列に「下代」を表示
.Cells(cnt, "H") = wS.Cells(i, j) '//H列に「色」を表示
.Cells(cnt, "I") = wS.Cells(i, j + 1) '//I列に「数」を表示
End If
Next j
Next i
'//最後にD列の表示形式(日付)を「在庫表」SheetのA3セルの書式に設定★
.Range("D1", Cells(Rows.Count, 4).End(xlUp)).NumberFormatLocal = wS.Range("A3").NumberFormatLocal
End With
Application.Calculation = xlCalculationAutomatic
End Sub '//この行まで


そこで、また新たにもしできるなら教えていただきたいことが出てきました。
仕入表タブのC列に出荷した商品が出たら「出荷済」と入力していますが(画像ではA列から埋まってますが実際はA~Cは空白にしてます)、”出荷済”にしたときに在庫表タブの同じ品番の商品すべて(日付~すべての色の個数まで)を黄色の色付けにすることはできますか?
もしできるとすごく楽になるのですが・・・
それではよろしくお願いします。

いつもこちらで皆さんに助けていただいてます。昨日質問しましたが画像が張り付けられていなかったので再度質問です。

”仕入表”タブに入力されたデータが横並びのデータです。
例えば、商品コード/品名/価格/色/入荷数 の並び順で、入力されています。一つの品番に対して色数は1から10個あり、色/入荷数/色/入荷数という風に構成されてます。

そこでこちらでお世話になり、仕入表に入力したデータを縦並びに色別で”在庫表”タブに表を作れるようなVBAを教えていただきました。

画像の仕入表は上の表で...続きを読む

Aベストアンサー

No6です。
以下の箇所を修正しました。前回のマクロをこれで入れ替えてください。
1)エラー13で型が一致しません。・・・この対策
色の箇所が0以外なら処理しているのを、空白以外なら処理するようにしました。
2)今更ですが黄色の色付けを日付の列だけにすることは可能でしょうか。
日付の列だけ黄色にしました。
-------------------------------------------------------
Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Dim wns As Worksheet
Application.Calculation = xlCalculationManual
Set wS = Worksheets("仕入表")
Set wns = Worksheets("納品仕訳")
Worksheets("在庫表").Activate '追加
With Worksheets("在庫表")
'//E列で「在庫表」Sheetの最終行取得★
lastRow = .Cells(Rows.Count, "E").End(xlUp).Row
'//「在庫表」SheetにデータがあればD列2行目~I列最終行データを一旦消去
If lastRow > 1 Then
.Range(.Cells(2, "D"), .Cells(lastRow, "I")).ClearContents
.Range(.Cells(2, "D"), .Cells(lastRow, "I")).Interior.Pattern = xlNone
End If
cnt = 1
For i = 3 To wS.Cells(Rows.Count, "A").End(xlUp).Row '//「仕入表」Sheetの3行目~A列最終行まで
For j = 5 To wS.Cells(i, Columns.Count).End(xlToLeft).Column Step 2 '//E列~i行最終列まで2行毎★
If wS.Cells(i, j) <> "" Then '//画像で「0」が表示されているので「0」以外を追加★ '修正
cnt = cnt + 1
'//最初のデータ行のみ「仕入表」Sheetの日付をD列に表示★
If j = 5 Then
.Cells(cnt, "D") = wS.Cells(i, "A")
End If
.Cells(cnt, "E") = wS.Cells(i, "B") '//B列に「コード」を表示
.Cells(cnt, "F") = wS.Cells(i, "C") '//F列に「商品名」を表示
.Cells(cnt, "G") = wS.Cells(i, "D") '//G列に「下代」を表示
.Cells(cnt, "H") = wS.Cells(i, j) '//H列に「色」を表示
.Cells(cnt, "I") = wS.Cells(i, j + 1) '//I列に「数」を表示
If wns.Cells(i + 2, "C").Value = "出荷済" Then
.Range("D" & cnt).Interior.Color = 65535 '修正
End If
End If
Next j
Next i
'//最後にD列の表示形式(日付)を「在庫表」SheetのA3セルの書式に設定★
.Range("D1", Cells(Rows.Count, 4).End(xlUp)).NumberFormatLocal = wS.Range("A3").NumberFormatLocal
End With
Application.Calculation = xlCalculationAutomatic
End Sub '//この行まで
-------------------------------------

No6です。
以下の箇所を修正しました。前回のマクロをこれで入れ替えてください。
1)エラー13で型が一致しません。・・・この対策
色の箇所が0以外なら処理しているのを、空白以外なら処理するようにしました。
2)今更ですが黄色の色付けを日付の列だけにすることは可能でしょうか。
日付の列だけ黄色にしました。
-------------------------------------------------------
Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Dim wns As Works...続きを読む


人気Q&Aランキング

おすすめ情報