Access VBA質問箱 IV

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

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


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

【10297】Re:サブフォーム内の検索
お礼  enigma  - 08/3/7(金) 10:19 -

引用なし
パスワード
   小僧さん、ご指導いただいたみなさん、ありがとうございました。
小僧さんの指示通りで、上手くいきました。

本当にありがとうございました。
・ツリー全体表示

【10296】Re:テキストボックスを新レコードに複写...
お礼  クロ  - 08/3/6(木) 18:22 -

引用なし
パスワード
    小僧 様

 クロです。いろいろ教えてくださり、どうもありがとうございます。
 ご提案の方法、その他を試してみたいと思います。
 どうもありがとうございました。
・ツリー全体表示

【10295】Re:和暦チェック
回答  VBWASURETA  - 08/3/5(水) 14:54 -

引用なし
パスワード
   ▼ぎんばしゃ さん:
こんにちは。

簡単な条件でするのでしたら、構造体と配列で制限値を入れると
出来ると思います。
例えば以下のような感じで配列とデータを用意して
後は条件を作ることで出来ると思います。

例:

Type userYear
  intYear As Integer
  ChakDate As Date
End Type

Dim testyear() As userYear

Sub test()
  Dim textdate As Date
  
  '制限年データセット
  setYaerdata
  
  '*** ここに条件式 ***

End Sub

'制限データセット関数
Function setYaerdata()
  ReDim testyear(3) As userYear
  
  '配列はtestyear(暦値,制限値)の二次元配列で管理
  '素数2番目が 0 は制限年
  testyear(0).intYear = 15      '15年まで
  '素数2番目が 1 は制限年月日
  testyear(0).ChakDate = #1/1/1980#  '1980/01/01まで
  
  testyear(1).intYear = 8       '8年まで
  testyear(1).ChakDate = #7/1/1990#  '1990/07/01まで
  
  testyear(2).intYear = 12      '12年まで
  testyear(2).ChakDate = #1/7/1998#  '1998/01/07まで
  
  '現在
  testyear(3).intYear = Year(Date) - Year(testyear(2).ChakDate)
  testyear(3).ChakDate = Date     '現在年月日
End Function
・ツリー全体表示

【10294】Re:和暦チェック
発言  ぎんばしゃ  - 08/3/5(水) 8:46 -

引用なし
パスワード
   ▼VBWASURETA さん

>入力年制限:
>1.明治 1〜45年(7/29まで)
>2.大正 1〜15年(12/24まで)
>3.昭和 1〜64年(1/7まで)
>4.平成 1〜現在

そうです。

説明がたりませんでした。
各和暦ごとで入力制限をかけたいと
おもっていました。
・ツリー全体表示

【10293】Re:和暦チェック
質問  VBWASURETA  - 08/3/4(火) 16:56 -

引用なし
パスワード
   ▼ぎんばしゃ さん、neptune さん:

こんにちは。
制限というのは、例えばこいう感じですか?

入力年制限:
1.明治 1〜45年(7/29まで)
2.大正 1〜15年(12/24まで)
3.昭和 1〜64年(1/7まで)
4.平成 1〜現在


入力例:
 2160101 結果:×
 2151224 結果:○
・ツリー全体表示

【10292】Re:和暦チェック
発言  neptune  - 08/3/4(火) 14:08 -

引用なし
パスワード
   ▼ぎんばしゃ さん:
こんにちは

提案になりますが、
>フォームのテキストボックスに和暦の値を入力する
のではなくComboBoxを使用したらどうですか?

>箇所を作成し、和暦を入力後、形式(日付)が異なる場合は
>データが消えるようにしたいのですが
消えるとはどういう意味でしょうか?どこから、どのデータを消すのか?

>うまくいきません。
現在どの様な処理をして、どのような結果を得ているかを書かなければ
回答する皆さんも無駄な想像をしなければなりません。
現状を書く事をお勧めします。

>
>入力形式は7文字で
>・和暦(1文字)
> 1:明治
> 2:大正
> 3:昭和
> 4:平成 
>・年(2文字)
>・月(2文字)
>・日(2文字)
>
>平成11年2月9日の場合は4110209になります。
・ツリー全体表示

【10291】和暦チェック
質問  ぎんばしゃ  - 08/3/4(火) 13:28 -

引用なし
パスワード
   フォームのテキストボックスに和暦の値を入力する
箇所を作成し、和暦を入力後、形式(日付)が異なる場合は
データが消えるようにしたいのですが
うまくいきません。

入力形式は7文字で
・和暦(1文字)
 1:明治
 2:大正
 3:昭和
 4:平成 
・年(2文字)
・月(2文字)
・日(2文字)

平成11年2月9日の場合は4110209になります。
・ツリー全体表示

【10290】Re:サブフォーム内の検索
発言  小僧  - 08/3/4(火) 12:48 -

引用なし
パスワード
   ▼enigma さん、みなさま:
こんにちは。

Web上の掲示板の場合、なかなかニュアンスが伝わらなくて難しいですよね。

> サブフォームを検索しようとしています。
> Set rs = Me.Recordset.Clone

お言葉通り、本当にサブフォームを検索するのでしたら


 Set rs = Me![埋め込み0].Form.RecordsetClone
   rs FindFirst "フィールド名 Like'*(文字列)*'"


[埋め込み0] と書きましたが、
ソースオブジェクトでなく名前である点に注意して下さい。

まったく見当違いでしたらすみません。
・ツリー全体表示

【10289】Re:テキストボックスを新レコードに複写...
回答  小僧  - 08/3/4(火) 12:38 -

引用なし
パスワード
   ▼クロ さん:
こんにちは。

>アクセスもプログラムも素人ですが

プログラムをする上で大事なものの一つに、
どういった処理を行えば自分がやりたい結果を導き出せるかを
設計する(ロジックと言ったりします)事があります。


クロさんのロジックはなかなか面白いのですが、一つ残念な事があります。

BeforeUpdate も AfterUpdate も起きない場合
⇒ レコード選択をしたけれど、値を変えなかった場合

こちらについては 変数:kakari に値が入らないため
思ったとおりの動作にならないかと思われます。

もうちょっと考え方を整理して

新規ボタンを押した際に、今までカーソルのあったレコードの
「係」という値を新規レコードの「係」に代入する

という様な流れでは駄目でしょうか。

Private Sub cmd新規レコード追加_Click()
Dim kakari As String
  kakari = Me![係]
  DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
  Me![係] = kakari
End Sub


ただし、こちらですと

>  ・mdbファイルをオープンすると、最初のレコードが表示される。
>  ・ここで新規レコードを追加のボタンをクリックすると、新しい1001番目の
>   レコードに移る。1001番目のレコードのテキストボックスは、すべて何も
>   入力されていない。

という条件が守れなくなってしまいます。

「最初のレコードが表示されている」と状態と、
「ユーザが最初のレコードを選択した」と状態を
判別するのは非常にむずかしいですね。
・ツリー全体表示

【10288】Re:Accessレポート「0値」の表示について
回答  小僧  - 08/3/4(火) 12:19 -

引用なし
パスワード
   ▼カダワン さん:
こんにちは。

>請求書のレポートで印刷するときに「\0」
>を表示させたくない場合(空白欄にする)
>にはどのようにすればよろしいのでしょうか?

VBAでの回答ではないのですが、

A)王道
 金額のテキストボックスの書式を「\\#,##0;;""」に設定。

B)邪道
 金額のテキストボックスを選択して、右クリックから条件式書式を選択。
 「フィールドの値」「次の値に等しい」「0」 の条件で
 文字色を背景色と同じ色に設定。

どちらでも 0 の場合のみ、空白になるかと思われます。
・ツリー全体表示

【10287】Re:サブフォーム内の検索
発言  neptune  - 08/3/4(火) 11:25 -

引用なし
パスワード
   ▼enigma さん:
こんにちは

横から失礼します。

>rs FindFirst"Me!コントロール名 Like'*(文字列)*'"を実行しても同じ結果が返ってきます。
>も、どうしていいか分かりません

と、言う事なので、それでは、本来のVB(A)の文法に従ってみたらどうですか?

dim fldname as string
'↓これはAccessの仕様上このままでは駄目だったかもしれませんが、
'(Me!コントロール名のプロパティが取得できない可能性あったかも。
'長い間Accessで書いてないので忘れました。)
’こんな感じと言う事で。
fldname=me.コントロール名.text
rs findfirst fldname & " Like'*(文字列)*'"

こんな感じで。本来の姿ですから、コントロールのTextプロパティか、
Valueプロパティを取得できると大丈夫なはずです。
 Text、とValueの両方で試してみて下さい。どちらかはこのまま行けたという
かすかな記憶があるような無いような^ ^;;;
・ツリー全体表示

【10286】Re:サブフォーム内の検索
発言  enigma  - 08/3/4(火) 11:06 -

引用なし
パスワード
   VBWASURETA さん回答いただきありがとうございます。

ご指摘いただきましたように指定しましたが、同じ結果でした。
色々試してみましたが、どうやら"!"が入るとダメッぼいです。
ためしに、メインフォーム内(コマンドボタンもメインフォーム内)を検索するときに
rs FindFirst"Me!コントロール名 Like'*(文字列)*'"を実行しても同じ結果が返ってきます。
も、どうしていいか分かりません
・ツリー全体表示

【10285】Re:既存エクセルへの出力
お礼  TARO  - 08/3/4(火) 9:30 -

引用なし
パスワード
   TAROさん、VBWASURETAさん、ありがとうございます。
解決致しました。

エクセルのセル設定を文字型から標準にしましたら、
問題なく表示されました。

ありがとうございました。
・ツリー全体表示

【10284】テキストボックスを新レコードに複写した...
質問  クロ  - 08/3/3(月) 23:04 -

引用なし
パスワード
   皆様、はじめまして。クロと申します。
3日ほど前に、仕事で突然アクセス97を使うことになった初心者です。
皆様のお知恵を拝借できればと思い、投稿させてもらいます。

1.使っているデータベースの概略
  ・mdbファイルをオープンすると、最初のレコードが表示される。
  ・レコードは、数個のテキストボックスからできている。
  ・数個のテキストボックスは、プルダウンメニューで文字列が入力できる
   ようになっている。
  ・レコード1から1000には、すでに文字列が入力されている。
  ・ここで新規レコードを追加のボタンをクリックすると、新しい1001番目の
   レコードに移る。1001番目のレコードのテキストボックスは、すべて何も
   入力されていない。
   通常は、プルダウンメニューを使用して、テキストボックスを入力して
   ゆく。

2.やりたいこと
  ・新規レコードを追加のボタンを押したときに、新規の1001番目のレコー
   ドに、今まで表示させていたレコードのテキストボックスの文字列を複写
   したい。

   例えば、今表示させているのが、レコードの100で、新規レコードを追加
   したら、レコード100のテキストボックスの文字列が、あたらしい1001番
   目のレコードにコピーされて表示してほしい。また、今までレコードが
   2000まで入力されていてレコード2000が表示されている場合は、新規レコ
   ードボタンを押すと、レコード2000のテキストボックスの文字列が、レコ
   ード2001に複写されて、表示されてほしい。

3.とりあえずやったこと。
  アクセスもプログラムも素人ですが、市販本を見て、今までのVBAのモジュー
  ルに追加をしました。
  やったことは、複数のイベントプロシージャで使えるkakariという変数を定
  義して、これに係というテキストボックスの内容をいれて、新規レコードの
  ボタンが押されたときに、新規レコードの係のテキストボックスに複写する
  、としたつもりです。
  新規レコードのボタンが押される前と後でUpdateを使用して、テキストボッ
  クスの内容を複写したつもりです.......(^^;)
  
Option Compare Database
Option Explicit
Dim kakari As String  ←追加

 途中略


Private Sub 係_BeforeUpdate(Cancel As Integer) ←追加

  kakari = Me!係 ←追加
 
End Sub ←追加


Private Sub 係_AfterUpdate() ←追加
 Me![係].DefaultValue = kakari ←追加

End Sub ←追加

  ★これを、追加しても全く新しいレコードには、テキストボックスの内容
   が複写されません。
   きっと、とても基本的なことでつまずいていると思います。
   おわかりの方、どうぞご教授ください。

  ★また、この程度のことならVBAをつかわずにコンボボックスの設定ででき
   るよ!というご提案でもうれしいです。

           長文、失礼しました。それでは失礼します。   クロ
・ツリー全体表示

【10283】Re:同じテーブル名の結合方法
お礼  vba初心者  - 08/3/3(月) 22:42 -

引用なし
パスワード
   ▼VBWASURETA さん:こんにちは。

>どちらかのmdbファイルを元にリンクテーブルにすれば良いかと。
やはりどちらかをメインにするしかないのですか・・・


>//homepage2.nifty.com/inform/vbdb/dao_linkmdb.htm
上記を参考に少し考えて見ます。


>但しこの方法はネットワーク間で共有にしたりするとレスポンスが
>異常に遅くなったり、元となるMDBファイルのパスが変わると
そうなんです。今リンクでも毎回初期が非常に遅いです。
(最近は毎回システムがウイルスチェックしているので余計です)

>パスを変更しなければならないデメリットがあります。

変数で対処できるのではないかと考えていますが
良い知恵があまり浮かんでいません

うまくいけば報告します
ありがとうございました
・ツリー全体表示

【10282】Re:既存エクセルへの出力
発言  TARO  - 08/3/3(月) 19:42 -

引用なし
パスワード
   VBWASURETAさん、返信ありがとうございます。

>A〜Fって16進で言う10〜15の数値で日付も数値ですが、
>そいうの関係あるかも知れません。
すみません、よく解りません。
データが短い、例えば、

報告内容

08/02/01 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

なら、1セルに綺麗に表示されるんですけどね〜。

>セルに入れる前に「'」で入れても変わらないですか?
「'」を入れてもダメでした。

何が問題なんだろう。。。
・ツリー全体表示

【10281】Accessレポート「0値」の表示について
質問  カダワン  - 08/3/3(月) 17:36 -

引用なし
パスワード
   Access2000で質問をお願いします。
請求書のレポートで印刷するときに「\0」
を表示させたくない場合(空白欄にする)
にはどのようにすればよろしいのでしょうか?
レポート上でのオブジェクトは「通貨」
に設定しています。
よろしくお願いいたします。
・ツリー全体表示

【10280】Re:同じテーブル名の結合方法
発言  VBWASURETA  - 08/3/3(月) 13:00 -

引用なし
パスワード
   ▼vba初心者 さん、YU-TANGさん

こんにちは。
どちらかのmdbファイルを元にリンクテーブルにすれば良いかと。

//homepage2.nifty.com/inform/vbdb/dao_linkmdb.htm

但しこの方法はネットワーク間で共有にしたりするとレスポンスが
異常に遅くなったり、元となるMDBファイルのパスが変わると
パスを変更しなければならないデメリットがあります。
・ツリー全体表示

【10279】Re:既存エクセルへの出力
発言  VBWASURETA  - 08/3/3(月) 12:08 -

引用なし
パスワード
   ▼TARO さん:

こんにちは。
ちょっと自分のところも確認しましたが、小僧さんと同じく文字列だと
普通に表示されてます。「Excel2000」

A〜Fって16進で言う10〜15の数値で日付も数値ですが、
そいうの関係あるかも知れません。

セルに入れる前に「'」で入れても変わらないですか?
・ツリー全体表示

【10278】Re:既存エクセルへの出力
発言  TARO  - 08/3/3(月) 10:48 -

引用なし
パスワード
   小僧さん返信ありがとうございます。

>「折り返して全体を表示する」で宜しいでしょうか。
その通りです。

>##### となるのは数値型のものですよね。
>文字列ですと大丈夫な模様です。
いいえ、文字型です。
データベースの中身の以下のような感じです。(データ型:テキスト型)
報告内容

08/02/01 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
08/02/05 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
08/02/06 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

このデータを
.Range("A8").Value = Txt_報告内容

とすると、#####と表示されます。
データがもう少し短いと綺麗に表示されます。

>>デザインされたシート
>という事ですが、改行される事によってデザインが崩れる事は
>大丈夫なのでしょうか。
1セルにデータを入れるので、問題ないかと思っております。
印刷で表示しきれない部分、ユーザーに枠を広げてもらう考えです。

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

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