• ベストアンサー

ACCESS初心者です。

以前も質問させていただきました。 今回も宜しくお願いいたします。 まず、商品の売価変更の簡単なシステムを作ろうとしてます。そこでわからない点があるので教えてください。 1.フォームで商品コードを入力したら商品マスタから商品名を表示するようにしたのですが、商品マスタにない商品コードを入力したらエラーで止まってしまったのです。そうなったときのために「この商品コードは商品マスタに存在しません。」ようなメッセージを出したいのですが、どのタイミングで出したらよいかわかりません。 2.バーコードリーダーを使って商品コードを読むようにしたいのですが、実際読む込むと全角数字で読み込まれてしまいます。そこでそれを半角数字に直したいのですが、どのタイミングでどの関数を使用したらよいかわかりません。 3.レポートに以下のように6つの商品ごとに総合計を出すということはできるのでしょうか? 例) A商品 100円 B商品 100円 C商品 100円 D商品 100円 E商品 100円 F商品 100円 総合計 600円 G商品 200円 H商品 100円 I商品 100円 J商品 100円 K商品 100円 L商品 200円 総合計 800円 馬鹿な質問で失礼します。本当は専門家にお願いしたいのですが、会社側に伝えたところ、お金を出せないため、初心者の私がつくることになりましたが、まわりにわかる人がいなくて本やネットで調べてもわからなかったので教えてください。宜しくお願いいたします。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

ウーン! 1、どのタイミングで=>エラートラップを仕組みます。または、事前にチェックするです。 Private Sub プロシージャ名 On Error Goto Err_プロシージャ名   ・・・・・ Exit_プロシージャ名:   Exit Sub Err_プロシージャ名:   MsgBox ・・・・・・   Resume Exit_プロシージャ名 End Sub 次の DBCount関数は、DCount関数の3倍速です。 Public Function DBCount(ByVal strField As String, _             ByVal strTable As String, _             Optional ByVal strWhere As String = "") As Variant On Error GoTo Err_DBCount    Dim N    Dim strQuerySQL As String    Dim rst     As ADODB.Recordset    Set rst = New ADODB.Recordset    strQuerySQL = "SELECT COUNT(" & strField & ") FROM " & strTable    If Len(strWhere) > 0 Then      strQuerySQL = strQuerySQL & " WHERE " & strWhere    End If    With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        N = Nz(.Fields(0), 0)      End If    End With Exit_DBCount: On Error Resume Next    rst.Close    Set rst = Nothing    DBCount = N    Exit Function Err_DBCount:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBCount)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBCount End Function 2、半角を全角に=>StrConv関数を利用。 バーコードは自作していないのですか? ならば、この質問は成立しないかと? もしかしたら、私の利用しているリーダと仕様が違って全半角の設定があるのでしょうか? ? StrConv("ABC", vbNarrow) ABC ところで、商品コードをバーコードで読ます場合は、次のような手法がお勧めです。 Private Sub 商品コード_GotFocus()   If Len(商品コード & "") = 0 Then     DoCod.OpenForm ”商品コードの読み込み”   End If End Sub <商品コードの読み込み>のコード Private Sub 商品コード_AfterUpdate()   Forms("フォーム名").Controls("商品コード")=strConv(商品コード, vbNarrow)   Unload Me End Sub これですと、バーコードの処理をユーザに促すこと、手入力の双方を併用できます。 3、レポート合計。 テキストボックスを配置し、=Sum("XXXX") *全て、検証なしの書きなぐりです。(ミスはありかも!)

amami7
質問者

お礼

返事が遅くなりましたが、大変たすかりました。現在、いそがしいので作業が中断してますが、ひまを見つけて再開してみます。ありがとうございました。

その他の回答 (1)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> 1.フォームで商品コードを入力したら商品マスタから商品名を表示するように > したのですが、商品マスタにない商品コードを入力したらエラーで止まって > しまったのです。そうなったときのために「この商品コードは商品マスタに > 存在しません。」ようなメッセージを出したいのですが、どのタイミングで > 出したらよいかわかりません。 商品コードを入力するコントロールの更新前イベントで、 If DCount("*", "[商品マスタ]", "[商品コード]=" & Me!商品コード) = 0 Then MsgBox "この商品コードは商品増谷存在しません。" Cancel = True End If のようにしてみてください。 > 実際読む込むと全角数字で読み込まれてしまいます。 バーコードリーダーの設定で、全角/半角の設定ができるのでは? 取扱説明書などを確認してください。 > 3.レポートに以下のように6つの商品ごとに総合計を出すということは > できるのでしょうか? いろいろなやり方はあると思います。 6レコードだけが印刷できるようにレポートのデザインを調整して、 ページ合計を出すとか。 [ACC2002] レポートでページ別に数値型の列を集計する方法 http://support.microsoft.com/kb/296249/JA/

amami7
質問者

お礼

返事が遅くなりました。エラーの出し方等大変参考になりました。作業が中断している状況ですが、なんとか時間を見つけて完成させます。ありがとうございます。

関連するQ&A