Access VBA質問箱 IV

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

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


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

【3752】生年月日で並べ替え
質問  miya  - 04/10/21(木) 14:52 -

引用なし
パスワード
   access2002使用です。
生年月日を昇順で並べ替えを行いたいのですが
どうしても生年月日が 
空白/空白/空白
61/空白/空白
空白/08/空白
空白/空白/13
61/空白/13
61/08/空白
等と生年月日のデータがマチマチな場合があり、
年、月、日のどれか1つにでも ”空白”がある人は
最下位にくるように並べ替えを行いたいのですが
こんな複雑な事は無理でしょうか?
今現在、生年月日フィールドの書式に @;99/99/99 と
設定してあるので全くの空白の場合( / / )は99/99/99と
データがある場合は、そのままを表示とはなるのですが

61/01/19
61/06/08
61/12/11
61/空白/空白
などのように並べ替えを行いたいのです。
・ツリー全体表示

【3751】1:Nの更新クエリについて
質問  Natu  - 04/10/21(木) 13:53 -

引用なし
パスワード
    2つのテーブルAとBが存在します。
AとB には「商品コード」「商品種別」フィールドがあります。Aの「商品種別」
は現在NULLになっています。
 商品コードでジョイントしてBテーブルの「商品種別」をAテーブルの
「商品種別」に更新するのですが、AとBとの商品種別の関係は1:Nになっています。(100という商品コードに対して種別A・種別B・種別Cと数種存在する。)
この時、種別Bを優先してAテーブルの「商品種別」を設定したいのですが....
優先順位をつける方法はないでしょうか?

どなたか、教えてください!助けて下さい!お待ちしてまっす。
・ツリー全体表示

【3750】Re:既定フォルダーの変更
お礼  マモ E-MAIL  - 04/10/21(木) 11:14 -

引用なし
パスワード
   ありがとうございます。

幾つかのシステムが有り、システム毎にフォルダーを変えて運用しています。
・ツリー全体表示

【3749】Re:既定フォルダーの変更
お礼  マモ E-MAIL  - 04/10/21(木) 11:13 -

引用なし
パスワード
   ありがとうございます。早速試してみます。
・ツリー全体表示

【3748】Re:既定フォルダーの変更
回答  クロ  - 04/10/21(木) 11:04 -

引用なし
パスワード
   方法はGetOption メソッド と SetOption メソッドを使用します。
取りあえず私の場合はユーザ定義関数で起動時と終了時の関数を
作ってやってますので参考までに...

Option Compare Database
Option Explicit
Private str As String

Function DDDChangeOpen() '起動時用
'現在のデフォルトのデータベース フォルダ を取得
str = Application.GetOption("Default Database Directory")
'新しいデフォルトのデータベース フォルダ を指定
Application.SetOption "Default Database Directory", "D:\***\"
End Function

Function DDDChangeQuit() '終了時用
Application.SetOption "Default Database Directory", str
End Function

起動時には「DDDChangeOpen()」をAUTOEXECマクロに仕込んで(プロシージャの実行)
います。
終了時はそのmdbファイル終了時(Application.Quit)の前に仕込んでます。

参考URL
http://support.microsoft.com/?scid=kb;ja;216888&spid=1265&sid=312
・ツリー全体表示

【3747】Re:既定フォルダーの変更
発言  こもれび  - 04/10/21(木) 10:05 -

引用なし
パスワード
   何故そのような操作をされたいのか教えていただくわけにはいきませんか?
・ツリー全体表示

【3746】Re:あいまい条件を含んだレコード数のカウ...
お礼  こもれび  - 04/10/21(木) 10:00 -

引用なし
パスワード
   こもれびです

▼YU-TANG さん:

># なんか寝た子を起こすようで気が引けますが。

(-o-)zzz → (*o*;)

ご発言ありがとうございます。

>ここだけ読むと、[リストボックス名].ListCount でレコード数が
>取れるので、ADO を使わなくても良さそうな気がするのですが、
>何か特殊事情が有るのでしょうか?

[リストボックス名].ListCount
改めて使ってみると使えるんですね(|||;)
いや、ListCountそのものは知っておりました。
しかし、リストボックスの初期状態(データが入っていない状態)でListCountを使うと
数字が1になってしまうので、てっきり空の状態では使えないとばかり考えていました。

以前に以下のコードを実行して数字が「1」になってしまい、散々悩まされたもので
トラウマ状態でした。( コードは抜粋です )

Private Sub Form_Open(Cancel As Integer)

  Msgbox [リストボックス名].ListCount

End Sub

リストボックスの「Null状態」と「空の状態」の違いなのでしょうね。
( 判りづらいなぁ… (--;)    )

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

【3745】既定フォルダーの変更
質問  マモ E-MAIL  - 04/10/21(木) 9:22 -

引用なし
パスワード
   ACCESS2000です。

 VBA又はマクルなどで

ツール-オプション-全般の項目欄に有ります、既定のデータベースフォルダーを
ACCESS起動時に変更し終了前に初期値に戻したいのですが?
出来ますでしょうか?
・ツリー全体表示

【3744】Re:クエリーでの並べ替え
お礼  miya  - 04/10/20(水) 20:07 -

引用なし
パスワード
   ▼こもれび さん:
>こもれびです
>
>もとのデータの一部と、結果として「どのような表示にしたいのか」
>を教えていただけますか?
>一度に38項目をソートする目的がどうしてもわかりませんので…
>(このままですと なんとも回答しようがないです)
何度も回答を頂きありがとうございました。
とりあえず、並べ替えの基準を減らして
今回は使用する事となりました。
質問しといて本当に申し訳ありませんでした。
・ツリー全体表示

【3743】Re:あいまい条件を含んだレコード数のカウ...
質問  YU-TANG WEB  - 04/10/20(水) 16:04 -

引用なし
パスワード
   こんにちは、YU-TANG です。

# なんか寝た子を起こすようで気が引けますが。

> 蛇足になってしまいますが、レコード数を数えさせている理由は
> 一度リストボックスにレコードを書き込むとレコード数に関わらず
> IsNull([リストボックス名])がtrueになってしまい、レコード数
> が0の時のみのメッセージ表示のつもりが毎度毎度表示されてしまう
> ことの回避です。

ここだけ読むと、[リストボックス名].ListCount でレコード数が
取れるので、ADO を使わなくても良さそうな気がするのですが、
何か特殊事情が有るのでしょうか?
・ツリー全体表示

【3742】Re:あいまい条件を含んだレコード数のカウ...
お礼  こもれび  - 04/10/20(水) 15:11 -

引用なし
パスワード
   こもれびです

▼クロ さん:
>>% での SQL がなぜ ADO 接続で正しい RecordCount を返さないのか
>
>私も同じくADOは殆ど使いません...
>ただ、今回の場合はADO内での「% での SQL」でレコードカウントはできているが
>そのSQLをそのままリストボックスの値集合ソースに入れるとリストボックスに現
>れないということではないでしょうか?
>
>レコードカウントは「%」を使い、RowSourceの代入時には「*」を使うしかない
>(Gin-IIさん曰く)と私も思います。

いろいろご検討・ご教示ありがとうございます
SQL変数を増やすことも考えましたが、次の方法で表示することとしました。

複数のあいまい条件の結果を返すSQLを一つ作製します。

○ リストボックスへの表示
  1.SQLからRowSource文字列(;区切り)の変数を作る
  2.[リストボックス名].RowSourceType = "Value List"
  3.[リストボックス名].RowSource = RowSource文字列変数

○ レコードカウントの表示
    rs.Open SQL,cnn …
    rs.RecordCount

と、しました。
蛇足になってしまいますが、レコード数を数えさせている理由は
一度リストボックスにレコードを書き込むとレコード数に関わらず
IsNull([リストボックス名])がtrueになってしまい、レコード数
が0の時のみのメッセージ表示のつもりが毎度毎度表示されてしまう
ことの回避です。

ご回答してくださいました皆様、お手数おかけしました ありがとうございました。
・ツリー全体表示

【3741】Re:あいまい条件を含んだレコード数のカウ...
発言  YU-TANG WEB  - 04/10/20(水) 14:54 -

引用なし
パスワード
   こんにちは、YU-TANG です。

> ただ、今回の場合はADO内での「% での SQL」でレコードカウントは
> できているが、そのSQLをそのままリストボックスの値集合ソースに
> 入れるとリストボックスに現れないということではないでしょうか?

あ、読み落としていたようです。失礼。
最初の質問時に「% での SQL」でレコードカウントが出なかったのは、
単に「*」が混在していたから、ということですね。
では、まったく仕様通りに正常動作していただけ、ということで。

ゴミレス御免。
・ツリー全体表示

【3740】Re:あいまい条件を含んだレコード数のカウ...
発言  クロ  - 04/10/20(水) 13:33 -

引用なし
パスワード
   >% での SQL がなぜ ADO 接続で正しい RecordCount を返さないのか

私も同じくADOは殆ど使いません...
ただ、今回の場合はADO内での「% での SQL」でレコードカウントはできているが
そのSQLをそのままリストボックスの値集合ソースに入れるとリストボックスに現
れないということではないでしょうか?

レコードカウントは「%」を使い、RowSourceの代入時には「*」を使うしかない
(Gin-IIさん曰く)と私も思います。
SQL変数を1つ増やして第1SQLはWHERE句前までとして
SQL = "SELECT * FROM テーブル1"

カウント前に
SQL2 = SQL & " WHERE [フィールド名] Like 'KOMOREBI%';"
RowSourceの代入時前は
SQL2 = SQL & " WHERE [フィールド名] Like 'KOMOREBI*';"
にしてみるとか...
・ツリー全体表示

【3739】Re:ACCESS97から2003へ移行する場合
お礼  eimy  - 04/10/20(水) 13:27 -

引用なし
パスワード
   ▼Gin_II さん:
お返事ありがとうございました。

>> そこで、移行したらどんなことがエラーになった、
>> 何がダメだったなどの情報をお持ちの方がいらっしゃいましたら、
>> 教えていただけないでしょうか?
>
>最終的には、やってみないと分からない。です。
>実際、千差万別のシステムで、変換してエラーになるパターンもすごいものが
>あると思いますので。
>
そうですよね・・・
やはり実践してみないと分からないですよね。

>> 「全角文字のプロシージャ名などを使用していると、エラーにならなくても
>> 正しい結果が得られない可能性がある」と言う情報を見つけたのですが、
>> これって本当なんでしょうか?
>
>はじめて聞きました。
>エラーになることもあり、ならないこともあるってのは知っていますが。
>
本当にそうなのかどうか、試したわけではないのですが、
色々な情報をかき集めたときに見つけました。

>> いたる所に漢字を使っているので、この情報が本当だとかなり大幅な修正が
>> 必要になってしまいます。。。
>頑張って修正してください。
>式ビルダとかを使った後、全角文字のプロシージャ名をクエリとかから使うと
>確実にエラーになりますので。

はい。覚悟を決めて修正します。。。
色々とありがとうございました。
・ツリー全体表示

【3738】Re:あいまい条件を含んだレコード数のカウ...
発言  YU-TANG WEB  - 04/10/20(水) 12:55 -

引用なし
パスワード
   こんにちは、YU-TANG です。

何となく思ったことをつらつら書いてみますが。

Access のネイティブオブジェクトの内部処理は、Access 2003 に
至るまで一貫して DAO/Jet-SQL で統一されています。したがって
リストボックスの RowSource などは Jet-SQL マナー(ワイルド
カードは * )になると私は理解しています。

Access 2002 以降は [ツール]-[オプション] に ANSI SQL モードと
SQL92 モード(ワイルドカードに % を使うのはこちら)の切り替え
箇所があると聞いていますが、私は Access 2000/DAO メインのユーザー
なので、その影響範囲がどこまで及ぶのかは知りません

MDB ファイルのデータベースエンジンはあくまで Jet ですから、
ADO 接続は仮にそれが自 MDB に対するものであったとしても、事実上
外部接続と理解しています。
例えるなら隣の部署の人に内線ではなく外線で電話をかけるような
ものでしょうか。
したがって、MDB 内の閉じた処理では(たとえ M$ がどんなに PR
しようと)ADO を使う意味はほとんど無いと考えています。

# Jet-SQL 4.0 の一部の新機能は ADOX からしか使えないものが
# 有るので、そのときは止むを得ず使うこともありますが。

% での SQL がなぜ ADO 接続で正しい RecordCount を返さないのか
については、私自身ほとんど ADO を使わないので分かりません。
何となく CursorLocation がアヤシく感じますが、根拠無しです。
・ツリー全体表示

【3737】Re:レポートの印刷を1枚に納めたい(縮小...
回答  こもれび  - 04/10/20(水) 11:51 -

引用なし
パスワード
   こもれびです

>余白を10ずつに設定したら、
>2枚に改ページされてしまいました。
>少し縮小してもOKなので
>余白の設定を変えず、1枚に納めるにはどうしたらよろしいでしょうか?

まずはレポートのプロパティシートの「書式」の「幅」の数字を
確認しましょう。

印刷する用紙がA4の縦でしたら、左右の余白を10(mm)にした場合は
レポートの「幅」は19cmに収まっていなければなりません。
つまり、レポートの幅+左余白+右余白=<用紙の横幅 です
(単位はあわせて考えてください)

それで収まらなければ、配置されたテキストボックスのフォントサイズを
見直すとともにテキストボックスの幅を全体が収まる大きさにし、さらに
それと同様に配置された各種ラベルのフォントサイズや幅などの大きさを
再検討することとなります
・ツリー全体表示

【3736】レポートの印刷を1枚に納めたい(縮小)
質問  佐々木  - 04/10/20(水) 11:31 -

引用なし
パスワード
   ACCESS初心者です。
レポートのデザインビューで作成した書類を印刷したいのですが、
余白を10ずつに設定したら、
2枚に改ページされてしまいました。
少し縮小してもOKなので
余白の設定を変えず、1枚に納めるにはどうしたらよろしいでしょうか?
ご存知の方、教えて下さい。
・ツリー全体表示

【3735】Re:Re : ADOの% あいまい検索
お礼  こもれび  - 04/10/20(水) 10:32 -

引用なし
パスワード
   こもれびです

▼Chou さん:

>ADOはVisual Basic6から追加された機能で、この時点で
>複数文字のあいまい検索には"%"が指定されております。
>従い、AccessでSQLを使用するケースでは2通りのSQL文を
>用意する必要が有る様です。

回答ありがとうございます。
どうやらそれで間違いないようです。
1つのSQLで済ますにはちょっとした工夫が必要のようです。
そのあたりをこれからやってみるところです。

蛇足ですが…
スレッドのほうに書いてくださるとよかったです。 <m(__)m>
・ツリー全体表示

【3734】Re:あいまい条件を含んだレコード数のカウ...
発言  こもれび  - 04/10/20(水) 10:27 -

引用なし
パスワード
   クロさん、こんにちは お世話になります

>これについてはどういう事なのでしょうか?SQLで抽出したものが
>リストボックスの値集合ソースに反映されないということでしょうか?
>その辺の事は書かれていないようなのですが....

そうなんです、反映されていません。
Gin_IIさんの回答によりますと、どうやら使い分けが必要
( ということは、それもADOの制限なのだろうか )
ということのようです。

>※午前中は所用で離席してますので午後にのレスになります

お手数おかけして申し訳ありません <m(__)m>
こちらでもヒントが得られましたので、いろいろやってみます。

投稿をお借りし、お話は変わりますが…
「忘年会」の話題が石鹸箱のほうで出ております。
クロさんのご予定(といってもまだ日程は決まっていません)は?
一度石鹸箱においでください。
・ツリー全体表示

【3733】Re : ADOの% あいまい検索
発言  Chou  - 04/10/20(水) 9:20 -

引用なし
パスワード
   間違ってたらゴメンなさい。

ADOはVisual Basic6から追加された機能で、この時点で
複数文字のあいまい検索には"%"が指定されております。
従い、AccessでSQLを使用するケースでは2通りのSQL文を
用意する必要が有る様です。
・ツリー全体表示

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