Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


222 / 500 ページ ←次へ | 前へ→

【8819】Re:帳票フォームで重複データの非表示方法
回答  Gin_II  - 06/11/21(火) 16:53 -

引用なし
パスワード
   > 帳票フォームで前行の項目と同じ値のフィールドは表示できないように
> (レポートの重複データ非表示のような・・・)したいのですが、うまく
> できません。

フォームのコントロールには重複データ非表示のようなプロパティは
ありませんので、基本的には無理ですね。

いくつか条件を満たせば、近いことはできますけど。


【テーブル名】
ID    FLD1    FLD2
1    AAA    あああ
2    AAA    いいい
3    BBB    ううう
4    CCC    えええ
5    AAA    おおお


【クエリ名】
SELECT [テーブル名].[ID]
   , [テーブル名].[FLD1]
   , [テーブル名].[FLD2]
   , DCount("*"
      , "テーブル名"
      , "[FLD1]='" & [FLD1] & "' And ID <=" & [ID]) AS 重複カウント
FROM テーブル名;

ID    FLD1    FLD2    重複カウント
1    AAA    あああ    1
2    AAA    いいい    2
3    BBB    ううう    1
4    CCC    えええ    1
5    AAA    おおお    3

これを元にフォームを作成し、FLD1 の内容が同じものの値を見えなくすることは
条件付書式機能を使えば、可能だと思います。
・ツリー全体表示

【8818】レポートの印刷について。
質問  初心者その2  - 06/11/21(火) 15:52 -

引用なし
パスワード
   主となるレポートにサブレポートを貼り付けています。
サブレポートの横に主になるレポートのテキストを
印刷することができるのでしょうか?
基本だと、サブレポートの下にテキストが印刷されます。
初心者で、お恥ずかしいのですが、教えてください。
・ツリー全体表示

【8817】帳票フォームで重複データの非表示方法
質問  ぷー  - 06/11/21(火) 15:51 -

引用なし
パスワード
   いつも大変参考にさせていただきありがとうございます。

帳票フォームで前行の項目と同じ値のフィールドは表示できないように
(レポートの重複データ非表示のような・・・)したいのですが、うまく
できません。

よろしくお願いいたします。
・ツリー全体表示

【8816】Re:振込み用紙を印刷したい
お礼  初心者  - 06/11/21(火) 15:32 -

引用なし
パスワード
   ありがとうございました。
桁の印刷はうまくいきそうです。
大変助かりました。
・ツリー全体表示

【8815】Re:改行を削除する方法
お礼  ゆずぽん  - 06/11/21(火) 12:25 -

引用なし
パスワード
   ▼小僧 さん・飛ばない豚さん:
ありがとうございました。成功しました。
改行をどう表現したらいいかわからなかったので、
複数の方法を教えていただき、大変勉強になりました。
また、何かありましたらよろしくお願いします。
・ツリー全体表示

【8814】Re:改行を削除する方法
回答  小僧  - 06/11/21(火) 10:20 -

引用なし
パスワード
   ▼ゆずぽん さん:
おはようございます。

>改行を消す方法はあるのでしょうか?

まず改行についてですが、
VBA内では「vbCrLf」という定数を使うことが可能です。

またクエリ内で処理したい場合はCr(キャリッジリターン)とLf(ラインフィード)
をキャラクターコードで連結させます。Chr(13) & Chr(10)


> 空白の行が残ってしまいます。

ご提示のようなデータですと、

+++ CrLf ??? CrLf *** CrLF

というデータが

+++ CrLf CrLf *** CrLF

となるわけですよね。

空白行についてはCrLfが連続で出現するので、
こちらを1つにしてあげれば良さそうです。

Replace(Replace([Data],"???",""),
Chr(13) & Chr(10) & Chr(13) & Chr(10),Chr(13) & Chr(10));


ただしこれでは先頭に???があった場合は処理できません。

力技になってしまいますが、
まず初めに Left([AAA],3) が ??? であった場合はMid([AAA],6) に変換し、
その後上記の処理を行うとうまくいくと思われます。


Function exReplace(varData As Variant, strFind As String) As Variant

  If Not IsNull(varData) And Len(varData) > Len(strFind) Then
    If Left(varData, Len(strFind)) = strFind Then
      varData = Mid(varData, Len(strFind & vbCrLf) + 1)
    End If
    
    varData = Replace(varData, strFind, "")
    varData = Replace(varData, vbCrLf & vbCrLf, vbCrLf)
  End If
  
  exReplace = varData
End Function

とモジュールに記述して

UPDATE テーブル名 SET AAA = exReplace([AAA],"???");

こんな感じでしょうか。
・ツリー全体表示

【8813】Re:改行を削除する方法
回答  飛ばない豚  - 06/11/21(火) 10:15 -

引用なし
パスワード
   ▼ゆずぽん さん:
> Replace([AAA],"???","")
> ”AAAフィールドの文字列???をNullにする”

Replace(Replace([AAA],"???",""),Chr(13) & Chr(10) & Chr(13) & Chr(10),Chr(13) & Chr(10))
"改行(Chr(13) & Chr(10))2連続の場合、1つに置換。"

これでどうでしょう。(^・ω・^)
・ツリー全体表示

【8812】改行を削除する方法
質問  ゆずぽん  - 06/11/21(火) 9:00 -

引用なし
パスワード
   こんにちは。
WindowsXP Access2000を使っています。
メモ型のフィールド(フィールド内に改行あり)から
特定の文字列を削除したく、クエリで関数を書きました。

Replace([AAA],"???","")
”AAAフィールドの文字列???をNullにする”

この関数でクエリを実行すると、
AAAフィールド

”実行前”        ”実行後”
+++(改行)   →   +++(改行)
???(改行)  →   (改行)
***(改行)   →   ***(改行)

と文字列は消えるのですが改行までは消えずに
空白の行が残ってしまいます。
できれば、空白の行はなくしたいのですが(上記なら実行後2行になる)
改行を消す方法はあるのでしょうか?
よい方法があれば教えてください。
よろしくお願いします。
・ツリー全体表示

【8811】Re: 無理
お礼  ぼっこ  - 06/11/20(月) 17:00 -

引用なし
パスワード
   たん さん

明快な回答ありがとうございました。

次画面での制御で調整することとします。
・ツリー全体表示

【8810】Re:振込み用紙を印刷したい
発言  飛ばない豚  - 06/11/20(月) 14:07 -

引用なし
パスワード
   ▼初心者 さん:
力技ですが、クエリーにて

金額01: Mid$(Right$(Space(12) & CStr([金額]),12),1,1)
金額02: Mid$(Right$(Space(12) & CStr([金額]),12),2,1)
金額03: Mid$(Right$(Space(12) & CStr([金額]),12),3,1)
・・・・
金額12: Mid$(Right$(Space(12) & CStr([金額]),12),12,1)

としてみてはどうでしょう。

スペース12個(桁数分)と金額を文字列に変換したものをくっつけ、
右から12個とる(すなわち、数値の左にスペースをつけて12文字にする)。
それを1文字ずつ、分解していく。

ちょっと面倒ですが安定して動くと思います。

それでは。(^・ω・^)
・ツリー全体表示

【8809】レポートでイメージ表示が不可
お礼  tom  - 06/11/20(月) 13:12 -

引用なし
パスワード
   たん さん、有難う。

フルパスが必要ですか?
DBと画像は、同一のディレクトリーに有りますが。
また、画像は間違いなくJpgです。(中身も)


▼たん さん:
>代入させようとしている画像データのフルパスは有効なフルパスですか?
>
>フルパス内にスペース等が含まれていませんか?
>
>また、そのJpgファイルは、本当にjpgファイルですか?
>拡張子がJpgなだけで、中身が異なるという事はありませんか?
・ツリー全体表示

【8808】Re:明細の途中に新規行を追加したい
発言  たん  - 06/11/20(月) 9:52 -

引用なし
パスワード
   Access Clubさんで解決してますよね?

# ちなみに先方は、他掲示板とのマルチポストは禁止しています。
# お世話になる掲示板のルールは、把握した上で質問すべきでしょう。

また、他掲示板であれ、回答したのであれば、質問をアップした先には
「どういう方法で解決したのか」を説明した上で閉じるのも、

マナーです。
・ツリー全体表示

【8807】Re:レポートでイメージ表示が不可
回答  たん  - 06/11/20(月) 9:31 -

引用なし
パスワード
   代入させようとしている画像データのフルパスは有効なフルパスですか?

フルパス内にスペース等が含まれていませんか?

また、そのJpgファイルは、本当にjpgファイルですか?
拡張子がJpgなだけで、中身が異なるという事はありませんか?
・ツリー全体表示

【8806】Re: 無理
回答  たん  - 06/11/20(月) 9:27 -

引用なし
パスワード
   Accessの帳票形式(表形式)フォームには、

1行分のコントロールしかありません。
それをレコード(及びフィールド)と連動することで、複数行あるように
みせかけているに過ぎません。

ので、フィールドと連動できないコントロールは、1行単位で制御は
出来ません。
(テキストボックス等は、条件付書式で可能です。)

やろうとするなら、コマンドボタンにみせかけた、テキストボックス等で、
条件付書式で制御する以外に手法は無いでしょう。
・ツリー全体表示

【8805】振込み用紙を印刷したい
質問  初心者 E-MAIL  - 06/11/19(日) 21:54 -

引用なし
パスワード
   銀行や郵便局の振込み依頼書に印刷を行いたいのですが、
金額の欄の12桁に数字を印刷することができません。
最高12桁なのですが、私の技術では、右寄せにしかあらず、
印刷済みの桁枠(万、千、百などの)に数字を右寄せで
ぴったり合うように印刷することできません。
ぜひ教えてください。お願いいたします!
・ツリー全体表示

【8804】Re:Access2003からExcelへの仕分け?
お礼  hm_Yh  - 06/11/19(日) 16:47 -

引用なし
パスワード
   まさ7251さん
小僧さん
 「SEQ」を修正しましたら、動きました。
ありがとうございました。
 
・ツリー全体表示

【8803】Re:レポートでイメージ表示が不可
お礼  tom E-MAIL  - 06/11/19(日) 9:40 -

引用なし
パスワード
   アドバイス有難う。
でも、MSの解説では,jif,jpgなどのイメージが可能であるとしています。
私はjpgイメージを表示したいのです。どうもAccess自体に問題があるのでは?
と思われます。

▼aki さん:
>ファイルの形式をjpgではなくbmpに変更してみては?
・ツリー全体表示

【8802】Re:レポートでイメージ表示が不可
回答  aki  - 06/11/19(日) 1:19 -

引用なし
パスワード
   ファイルの形式をjpgではなくbmpに変更してみては?
・ツリー全体表示

【8801】明細毎のボタン使用可否設定について
質問  ぼっこ  - 06/11/17(金) 23:10 -

引用なし
パスワード
   はじめまして、Access初心者です。

検索画面で、明細をフィルタを使用して一覧表示してます。
各明細に、編集画面や削除画面のフォームを呼び出すボタンを使っています。

明細行の条件により、各ボタンを使用不可にしたいのですが、
全行が使用不可になってしまい、各行毎の設定が出来ません。

条件の”[Dtl_Emp_del_flg] = no”の条件でのハンドリングもわからなかったので
一旦、プロパティを指定して、それをもとに条件文を組み立てました。
もっとよい方法があるかと思うのですが、どなたかご教示ください。

よろしくお願いします。m(_ _)m


For Each ctl In Me.Section(acDetail).Controls
 With ctl
  Select Case .ControlType
   Case acTextBox
     .FormatConditions.Delete
     With .FormatConditions.Add(acExpression, , "[Dtl_Emp_del_flg] = no")
       .BackColor = 16777215
     End With
     If Dtl_Emp_del_flg.BackColor = 16777215 Then
       With Dtl_Emp_Name
         .Locked = yes
         .Enabled = False
       End With
       With DTL_Emp_Code
         .Locked = yes
         .Enabled = False
       End With
       With btn_dtl_updt      <= このコードが効いてない?
         .Enabled = False    <= このコードが効いてない?
       End With       <= このコードが効いてない?
       With btn_dtl_del      <= このコードが効いてない?
         .Enabled = False    <= このコードが効いてない?
       End With        <= このコードが効いてない?
     Else
       With Dtl_Emp_Name
         .Enabled = True
       End With
       With DTL_Emp_Code
         .Enabled = True
       End With
       With btn_dtl_updt    <= このコードが効いてない?
         .Enabled = True    <= このコードが効いてない?
       End With        <= このコードが効いてない?    
       With btn_dtl_del    <= このコードが効いてない?
         .Enabled = True    <= このコードが効いてない?
      End With        <= このコードが効いてない?
     End If
   Case Else
  End Select
 End With
Next ctl
・ツリー全体表示

【8800】Re:フォーム内入力データの重複チェック
発言  まさ7251  - 06/11/15(水) 22:52 -

引用なし
パスワード
   ▼赤い沼 さん:
>こんにちは。
>フォームに入力されたデータに対し、
>データの重複チェックをモジュール行いたいと思うのですが、
>クエリやテーブルを使わずに作業できるのでしょうか?
>もし、そのような方法があればご教授願います。
>
>(1)フォームを作成し、そのフォーム内にテキストフィールドを数個設ける。
>   ただし、どのフィールドも「非連結」とする。
>(2)入力されたテキストフィールドのデータに対して、重複チェックをかける。

”クエリやテーブルを使わずに”とはどういう意味でしょうか。
重複チェックとは、テーブルに登録されているデータとの重複チェックですよね?

とりあえず、DCountで該当する件数を調べるという方法でどうでしょうか。
(当然、テーブルを使用しますけど。)

とりあえず、”クエリやテーブルを使わずに”がどのような意味かが不明ですので
これ以上の返答はしようがありません。

具体的に何を意味しているのか、何をやりたいのかを具体的に書き込んでみてください。
・ツリー全体表示

222 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1085276
(SS)C-BOARD v3.8 is Free