Access VBA質問箱 IV

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

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


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

【6432】Re:Format関数とOracle9i
発言  YU-TANG WEB  - 05/10/6(木) 16:30 -

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

> リンク元がメモ型フィールド、リンク先がテキストとなった場合、
> メモ型フィールドにFormat関数を(引数はひとつだけ)使用すると
> テキスト型とリンクができるというのを発見した人がわが社に
> います(^^)V

結合のためにデータ型を合わせたいということですか。
それなら CStr 関数の方が効率良さそうですが。

> イミディエイト ウィンドウ・・・使ったことがないんです。
> 使い方を調べてテストしてみたいと思います。

[Ctrl] + [G] で起動します。

> まず、エラーメッセージが違いました。

違うのは当然で、KB に載っているのは参照不可ライブラリが有る場合に
VB コンパイラが吐くエラーです。
RUMIKO さんの場合はクエリでエラーになっているわけですから、エラーを
吐いているのは Jet です。
参照不可ライブラリが有る状況下で Jet が吐くエラーが、
「クエリ式 '式' の この関数は式では使用できません。」です。

http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFunctionErrorInQuery.html#reference

エラーは違っても、原因は同一です。

# 逆に、異なる原因で同一エラーというケースもあるので、直るまで
# 確実なことは言えませんが。

> Fomat関数が動かないAccessの参照設定をみても参照不可になっている
> ものはなかったので無関係と思いました。

念のために、外せるものは一度全部外して [OK] で確定してから、再度
付け直してみた方がよいでしょう。
私は直接経験したことはありませんが、それで直ったケース(投稿)を
過去に何度か見ていますので。

> 私としてはやはりOracleのライブラリかなにかが関連しているのでは
> ないかとにらんでるのですが・・・。

私は Oracle は詳しくないので何とも言えませんが、MDB 依存なのか
環境依存なのかの切り分けは、しておいた方がよいと思います。
・ツリー全体表示

【6431】Re:Select Caseステートメントに関して
お礼  Volley  - 05/10/6(木) 16:06 -

引用なし
パスワード
   小僧 さん、こんにちは。
ご回答ありがとうございます。
上手く動作しました。
NZ関数をヘルプで確認しました。
ExcelのVBAではない関数なので気が付きませんでした。
頑張ってAccessを勉強します。
・ツリー全体表示

【6430】Re:Select Caseステートメントに関して
回答  小僧  - 05/10/6(木) 15:36 -

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

Nz関数で値を置き換えてみてはいかがでしょうか?

>Select Case TextBox1.Value

Select Case Nz(TextBox1.Value,"Null")

  Case "Null"



・ツリー全体表示

【6429】Select Caseステートメントに関して
質問  Volley  - 05/10/6(木) 15:27 -

引用なし
パスワード
   こんにちは
フォームでテキストボックスの値が「Null値、""」の場合のMsgBoxでERRを出してます。
一度、入力後、再度値をDelとしたとき値は「""」になります。
IF分で下記ならOKなのですが
If IsNull(TextBox1.Value) Or TextBox1.Value="" Then
  MsgBox "Err"
  Exit Sub
End if

Select CaseステートメントですとNull値として判断してくれませ
(TextBoxの値は間違いなくNull値です)
Select Case TextBox1.Value
    Case Null,""
      MsgBox "Err"
      Exit Sub
    Case "A"
      処理コード1
    Case "B"
      処理コード1
End Select

Select Caseステートメントを使う場合どのようにするのでしょうか。
よろしくお願いします。
・ツリー全体表示

【6428】Re:Format関数とOracle9i
回答  RUMIKO  - 05/10/6(木) 15:10 -

引用なし
パスワード
   ▼YU-TANG さん:

こんにちは。お世話になります。

>> 『クエリ式 'Format([Field_A])' の この関数は式では使用できません。』
>
>ちょっと本題とズレるかもしれませんが、この式はどのような意味(目的)
>なのでしょうか。
>第 2 引数を省略して Format 関数を使うケースはあまり見かけないので、
>後学のために教えていただけると嬉しいです。

クエリでリンクを張るときに、フィールドタイプが異なると当然のごとくリンクできませんよね。
リンク元がメモ型フィールド、リンク先がテキストとなった場合、メモ型フィールドにFormat関数を(引数はひとつだけ)使用するとテキスト型とリンクができるというのを発見した人がわが社にいます(^^)V


>> OracleでみるとField_AのタイプはVARCHAR(2000)です。
>
>別のデータ型のフィールドで Format 関数を使っても、そちらはエラーに
>ならないのでしょうか?
>また、イミディエイト ウィンドウ上で「?Format(1,"000")」とか
>流した場合は、どうなのでしょうか?

イミディエイト ウィンドウ・・・使ったことがないんです。
使い方を調べてテストしてみたいと思います。


>> 見てみましたが、参照設定(ライブラリ)に関するもののようで
>> 今回の現象では解決しないようです。
>
>参考のために、どのような検証の結果 参照設定が無関係と判断したのか、
>差し支えなければ教えていただけますか。

リンク先のページには、Access 2000と97にするものでしたが、いちおう2000のページをチェックしました。
まず、エラーメッセージが違いました。

-------------------------------------------
エラー メッセージ 1
データベースまたはプロジェクトに、ファイル <filename> を参照する切断された参照が含まれています。

* データベースまたはプロジェクトが正しいかどうか確認し、この参照を修復してください。
------------------------------------------

Fomat関数が動かないAccessの参照設定をみても参照不可になっているものはなかったので無関係と思いました。
また、このページに書かれている対処方法は、以前別件ですが異なるバージョンで同じmdbを動かしたところ、上記のようなメッセージが出た経験があります。
そのときはこの対処方法を参考にさせていただきました。

以上ですがご参考になったでしょうか。
私としてはやはりOracleのライブラリかなにかが関連しているのではないかとにらんでるのですが・・・。
・ツリー全体表示

【6427】Re:フォームを開く時
お礼  Volley  - 05/10/6(木) 13:06 -

引用なし
パスワード
   YU-TANG さん。ご回答ありがとうございます。
前よりスムーズになりました。
今後ともよろしくお願いします。
・ツリー全体表示

【6426】Re:Format関数とOracle9i
発言  YU-TANG WEB  - 05/10/6(木) 12:01 -

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

> 『クエリ式 'Format([Field_A])' の この関数は式では使用できません。』

ちょっと本題とズレるかもしれませんが、この式はどのような意味(目的)
なのでしょうか。
第 2 引数を省略して Format 関数を使うケースはあまり見かけないので、
後学のために教えていただけると嬉しいです。

> OracleでみるとField_AのタイプはVARCHAR(2000)です。

別のデータ型のフィールドで Format 関数を使っても、そちらはエラーに
ならないのでしょうか?
また、イミディエイト ウィンドウ上で「?Format(1,"000")」とか
流した場合は、どうなのでしょうか?

> 見てみましたが、参照設定(ライブラリ)に関するもののようで
> 今回の現象では解決しないようです。

参考のために、どのような検証の結果 参照設定が無関係と判断したのか、
差し支えなければ教えていただけますか。
・ツリー全体表示

【6425】Re:データベースから該当の複数データを抽...
回答  小僧  - 05/10/6(木) 10:15 -

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

ロジックを考えていたのですが、もっと楽になりそうですね。

>1: 新規 2: 修正 3: 削除

ですから、同一通し番号において 3 の後に 2 や 1 が来たりはしませんよね?

なので最新の日付の最大の処理区分で判断できそうですね。
  3  でしたら 対象外、
2 や 1 でしたら 最大のREBAN

を抽出すれば良さそうです。

SELECT P.日付, P.通し番号, P.処理区分, Max(TEST.RENBAN) AS 連番
FROM [
SELECT Max(TEST.YYMMDD) AS 日付, TEST.TOSHIBANGO AS 通し番号,
Max(TEST.SYORI_KUBUN) AS 処理区分
FROM TEST
GROUP BY TEST.TOSHIBANGO
]. AS P
INNER JOIN TEST
ON (P.処理区分 = TEST.SYORI_KUBUN) AND
(P.通し番号 = TEST.TOSHIBANGO) AND (P.日付 = TEST.YYMMDD)
GROUP BY P.日付, P.通し番号, P.処理区分
HAVING P.処理区分<>3;

上記 SQL をクエリの SQL ビューに貼り付けて結果を確認されてみて下さい。
・ツリー全体表示

【6424】Re:データベースから該当の複数データを抽...
お礼  sayaya  - 05/10/6(木) 10:06 -

引用なし
パスワード
   ▼小僧 さん:
なるほど、てっきり作成しなくてはならないかと思っていました。
私ももう少し考えてみます。
小僧さんも,なにかよいアイデアが浮かびましたら、
お助けいただければ幸いです。
ありがとうございます。
・ツリー全体表示

【6423】Re:データベースから該当の複数データを抽...
回答  小僧  - 05/10/6(木) 9:48 -

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

SQL についてはちょっと考え中なのでもう少し待ってください ^^;

>クエリをあまり作ることができないのです。
>容量をあまり食わない回避策がありますでしょうか?

クエリの実態は SQL なので、クエリを作成しなくても
SQL で呼び出すことは可能です。

具体的な例をあげてみましょう。


SELECT * FROM TEST
この SQL を「クエリA」として保存します。

クエリAを元にフォームを作成します。(表形式が解りやすいかもです)
適当な名前をつけて保存します。

作成したフォームのレコードソースは「クエリA」となっている筈です。
ここを「SELECT * FROM TEST」 と置き換えます。

クエリA を削除しても、フォームに結果は表示されると思います。


繰り返しになってしまいますが、クエリの実態は SQL なので
わざわざ作成しなくても大丈夫ですよ。
・ツリー全体表示

【6422】Re:Format関数とOracle9i
質問  RUMIKO  - 05/10/6(木) 9:24 -

引用なし
パスワード
   ▼YU-TANG さん:

おはようございます。レスをありがとうございます。

>どんなエラーか提示すると、適切なレスが付きやすいと思います。

そうですね。
実行時のエラーメッセージは以下の通りです。

『クエリ式 'Format([Field_A])' の この関数は式では使用できません。』

Field_Aはこのクエリで使用しているテーブルの項目で、タイプはメモ型です。
テーブルはOracleにあり、該当のAccessにアタッチしてあります。
OracleでみるとField_AのタイプはVARCHAR(2000)です。

Oracle9i環境のユーザでは上記のようなエラーが出てしまいます。


>とりあえず、可能性の一つとして。
>
>http://support.microsoft.com/kb/283806/ja

ありがとうございます。
見てみましたが、参照設定(ライブラリ)に関するもののようで
今回の現象では解決しないようです。

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

【6421】Re:データベースから該当の複数データを抽...
お礼  sayaya  - 05/10/6(木) 9:20 -

引用なし
パスワード
   ▼小僧 さん:
追伸、先ほどの場合は、ひとつの通し番号(製品)でしたが、
実際のテーブルには、たくさんの通し番号をもつレコードが存在しています。

ですので、通し番号をグループ化して、なおかつ、日付と連番の最大値を抽出
させることが重要なのですが、21個も違う検査内容のテーブルが存在しているため、
クエリをあまり作ることができないのです。

抽出はひとつのテーブル内の話です!ただ、同じ作業を21項目するので、
総容量がでかくなりアプリの動きがかなり鈍くなることが予想できて・・・


容量をあまり食わない回避策がありますでしょうか?
・ツリー全体表示

【6420】Re:データベースから該当の複数データを抽...
お礼  sayaya  - 05/10/6(木) 9:13 -

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

えっと、、通し番号が、ひとつの"物"と考えたとき、
連番とは、その日に検査した総数(つまり検査をカウントしている)を表しています。

ですので,
a1234 という製品を、初回検査日が2005/08/20で、2005/08/29に3回再検査したとすれば、
通し番号  日付      連番   処理区分
a1234    2005/08/20   001     1
a1234    2005/08/29   001     2
a1234    2005/08/29   002     2
a1234    2005/08/29   003     2

というデータができ、

製品の検査実績としては、
日付が一番最新で、なおかつ最後に検査された(連番が003)、処理区分が2
のものが抽出したいということです。

つまり
a1234   2005/08/29    003   2
のレコードが抽出されればよいのですが、うまくいきません。
・ツリー全体表示

【6419】Re:規定値
発言  小僧  - 05/10/6(木) 9:07 -

引用なし
パスワード
   ▼山の子 さん:
おはようございます。

ちょっとご提示されている情報が不足しているように思われます。

>規定値の値を、
>ひとつ前のレコードの値にしたいのですが・・・。

ご提示された内容はフォーム、テーブルどちらの規定値に対してでしょうか。


テーブルに最後に入れた値を
テーブルの規定値として持たせたい、という事なのかな…。
・ツリー全体表示

【6418】Re:Format関数とOracle9i
発言  YU-TANG WEB  - 05/10/6(木) 8:28 -

引用なし
パスワード
   おはようございます、YU-TANG です。

> Format関数を使用しているクエリーでエラーになり実行できません。

どんなエラーか提示すると、適切なレスが付きやすいと思います。

とりあえず、可能性の一つとして。

http://support.microsoft.com/kb/283806/ja
・ツリー全体表示

【6417】Re:フォームを開く時
回答  YU-TANG WEB  - 05/10/6(木) 8:18 -

引用なし
パスワード
   おはようございます、YU-TANG です。

PC のスペックによって、影響受けるかもしれませんが、
下記で幾分マシにはなるかと。

Private Sub Form_Open(Cancel As Integer)
  Echo False
  DoCmd.Maximize
  Echo True
End Sub
・ツリー全体表示

【6416】規定値
質問  山の子  - 05/10/5(水) 18:06 -

引用なし
パスワード
   こんにちは。

初めて投稿します。


規定値の値を、
ひとつ前のレコードの値にしたいのですが・・・。
こういうことができると
いちいちデザインで規定値をかえなくてもいいので
便利だと思うのですが・・・。

簡単にできませんか?
・ツリー全体表示

【6415】Format関数とOracle9i
質問  RUMIKO  - 05/10/5(水) 14:27 -

引用なし
パスワード
   はじめて質問させていただきます。よろしくお願いします。
社内で、Oracle8i+9iと9iのみという環境が混在しており、9iのみのユーザでmdbを実行させるとFormat関数を使用しているクエリーでエラーになり実行できません。
WinXP、Office2002という環境は同じです。
こちらの質問箱で"Format関数"で検索したところ、"書き直してみる"というのがあったのでやってみましたがダメでした。
どなたか解決策をご存知ないでしょうか。
・ツリー全体表示

【6414】フォームを開く時
質問  Volley  - 05/10/5(水) 13:45 -

引用なし
パスワード
   こんにちは
はじめまして、よろしくお願いいます。

フォーム1からフォーム2(逆もあります)を表示させるとき
コマンドボタンで処理していますが、各フォームのOpenイベントには「DoCmd.Maximize」を記載いているのですが
多分、この時に画面が最小化から最大化する動きをしてしまいます。
これを最初から最大化で開く方法を教えて下さい。お願いします。
・ツリー全体表示

【6413】Re:文字列の日付並べ替えができません
お礼  さらだ  - 05/10/5(水) 10:04 -

引用なし
パスワード
   ▼hatena さん:
>レポートの方でグループ化の設定をしてませんか。
>その場合は、レコードソースの並び順は無視されます。
>
>並び替え/グループ化の設定 で、
>
>=Right([Date],2) & Mid([Date],4,2) & Left([Date],2)
>
>と言う式を設定するか、
>レコードソースにこの演算フィールドを追加しておいて、
>それを設定するか、してください。

hatenaさん
このたびもありがとうございました。
並び替え/グループ化の設定で
>=Right([Date],2) & Mid([Date],4,2) & Left([Date],2)を設定することによって
解決いたしました。

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

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