Access VBA質問箱 IV

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

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


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

【11130】クエリでビボットテーブル出来ないですか...
質問  hiro  - 09/5/15(金) 11:28 -

引用なし
パスワード
   テーブルでは、ビボットテーブルウィザードでフィールド出てきますが、クエリだと出て来ません・・・。クエリだと出来ないのでしょうか?
・ツリー全体表示

【11129】Re:検索方法とユニオンクエリのエラーに...
回答  YU-TANG  - 09/5/14(木) 22:14 -

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

▼K さん:
>【クエリ式'[遅延利率] FORM [T_出力2];の構文エラー:演算子がありません。】
            ↑↑
>何故このようなエラーが出るのかわかりません。

FROM では?
・ツリー全体表示

【11128】Re:検索方法とユニオンクエリのエラーに...
回答  MJM  - 09/5/12(火) 11:12 -

引用なし
パスワード
   今一度、ユニオンクエリをヘルプで調べてみては如何でしょうか?

以下、ヘルプより抜粋

UNION 操作でクエリが要求するフィールドの数は、
すべてのクエリで同じである必要があります。
・ツリー全体表示

【11127】検索方法とユニオンクエリのエラーについ...
質問  K  - 09/5/11(月) 11:06 -

引用なし
パスワード
   初心者中の初心者の質問で申し訳ないのですが、
ご協力いただけると幸いです。
アクセス2003ver

(概要)
CSVファイルorエクセルファイル入力→
[T_入力保存]でデータ蓄積→
[T_入力保存BK]で追加クエリにて、重複レコード削除→
[T_入力保存BK]をテーブルコピー、列を削除して[T_出力1][T_出力2]を作成→
コードで[T_入力保存BK]から[T_出力1][T_出力2]逐一レコードが追加(コピー)されるように設定→
口座番号で検索して、付随データを抽出→
ヘッダーとフッターの付いたCSVファイル出力

現在、入力して[T_入力保存BK]が出力できるようになっております。
口座番号で検索してデータ抽出し、出力する方法と、
下記のエラーについてお教え下さい。

******************************************************************************
SELECT [識別名H],[口座番号],[氏名] AS F1 FROM [T_出力1];
UNION ALL SELECT [識別名D],[貸付日],[貸付金額],[入金日],[入金金額],[日数],[延滞],[残高],[通常利率],[遅延利率] FORM [T_出力2];
******************************************************************************
*[T_出力1]ヘッダーテーブル*T_出力2]フッターテーブル

【クエリ式'[遅延利率] FORM [T_出力2];の構文エラー:演算子がありません。】
上記のようなエラーが出ます。
何故このようなエラーが出るのかわかりません。

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

【11126】コンボボックスの連動
質問  nhara  - 09/5/3(日) 2:08 -

引用なし
パスワード
   コンボボックスの連動ですが、入力するフィールドは1つにしてあり、コンボAが先ず始めにクリックでPULLDOWNされ、選択されると2個目のコンボBは表示され、選択後にフィールドに入力される、言わばサブコンボなど出来るのでしょうか? 

コンボAには、約25個のOPTIONと、コンボBにはそれぞれAの選択肢に
+、−、か何も無しの3つの選択肢を設けています。

例えば、

赤、赤紫、赤っぽい紫、紫 ETC とコンボAで選択すると、コンボBでは
+、−、か 何も無しの選択肢があって、最終的にフィールドには、
赤+とか 赤っぽい紫− などが入力されます。

フォームの中で行いたいのです。
・ツリー全体表示

【11125】IIf分でエラーがでてしまう
質問  マツ  - 09/5/1(金) 11:19 -

引用なし
パスワード
   現在、クエリA、クエリBがあり両方ともクロス集計しています。
クエリA:設備名、データAカウントの合計、1月・・・・12月
(Nz関数を使って、データの無い箇所は0を入れてます)
クエリB:ライン名、データBの合計、1月・・・・12月

この2つのクエリを使って、新たにクエリCを作ってます。その中で、
1月:[クエリB]![1月]/[クエリA]![1月]とすれば数値が出てくる
のですが。
1月:IIf([クエリA]![1月]=0,0,[クエリB]![1月]/[クエリA]![1月])
とするとエラーが出てしまいます。

何が悪いのかわからない状態です、何が悪いのかご教授願います。
・ツリー全体表示

【11124】Re:フォームで入力したものだけで抽出す...
お礼  mai  - 09/4/30(木) 23:58 -

引用なし
パスワード
   ▼小僧 さん:
基本方針のほう見逃しており申し訳ございません。
今後気をつけたいと思います。

また、回答いただきありがとうございました。
教えていただいた内容で試みてみたいと思います。

まずは失礼のお詫びまで。
・ツリー全体表示

【11123】Re:一括更新時の連番の振り方
お礼  マリア  - 09/4/30(木) 19:55 -

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

こんばんは。

適切なアドバイスありがとうございます。

変数はずっと保持するものと思っていましたし、オートナンバーは
最適化をすると元に戻ってしまうというのも、初めて知りました。
ありがとうございます。

やはり、最大数をテーブルに保存しそこから連番を振るのが一番
良い方法ですね。

最大数だけを保存するにはどのようにしたらよいですか?
さらにその数を呼び出し連番を振る方法はありますでしょうか?
質問ばかりですみません。

この掲示板で頼る以外にありません。(><)
宜しくお願いしますm(__)m
・ツリー全体表示

【11122】度々ありがとうございます
お礼  hiro  - 09/4/30(木) 13:49 -

引用なし
パスワード
   ▼小僧 さん:
お疲れさまです。

フォーム作った方がいいですよね。
丁寧なご説明ありがとうございます。
作ってみます!!
・ツリー全体表示

【11121】Re:フォームで入力したものだけで抽出す...
回答  小僧  - 09/4/29(水) 1:24 -

引用なし
パスワード
   ▼mai さん:
こんばんは。

> DATE : 2009年04月27日(月) 15時40分
> NAME : takamatsu

どこかの掲示板からコピーしてきたんでしょうか?

もしその様でしたら画面上部の

> 本サイトの基本方針をまとめました。こちら をご一読ください。

の「こちら」のリンク先にある
「マルチポストについて」に目を通して下さいね。


> 空白の項目は無視して、入力した項目だけで抽出できるようにしたいのです。

色々な方法があると思いますが、
当方が良く使うのは Like演算子 を使う方法ですね。

フィールド:ソフトウェア名
抽出条件:Like Nz([Forms]![フォーム名]![ソフトウェア名検索],"*")

の様にして、

・Null の場合は *
・Null 以外の場合は フォームのテキストボックスの値

という様な検索条件を作成する事ができます。
・ツリー全体表示

【11120】Re:一括更新時の連番の振り方
回答  小僧  - 09/4/29(水) 0:47 -

引用なし
パスワード
   ▼マリア さん:
こんばんは。

>> データを一括更新する際
> これがどの様なやり方で行っているかによって

この辺がポイントになってきますね。

AccessVBAにおいての変数は、

・Accessを開いている最中ずっと値を保持する変数
・あるフォームを開いている最中は値を保持する変数
・1つの命令を実行している間のみ値を保持する変数

などを指定できます。

MSサポートオンラインより
Visual Basic for Applications の変数の適用範囲
h tp://support.microsoft.com/kb/141693/ja
(こちらの掲示板は直リンクが禁止ですので、補完して下さい)


データの削除から、データの投入/変更までの間に
いったんAccessを閉じるような操作が入る場合には
変数に値を保持する様な事はできません。


また、プログラム上において
変数を長く保持する様な書き方というのは
余り推奨されておりません。


MSサポートオンラインより
[VBA] Public 宣言された変数の有効期間
h tp://support.microsoft.com/kb/408871/ja


削除 → データの一括投入 → 注文番号の一括変更

の流れが1つのアクションで行われるのであれば
変数を使う方法で問題はないと思います。

特定のフォームを開いている最中に、例えば 

・削除ボタン
・データインポートボタン
・注文番号の一括処理ボタン

などとなっている場合は
フォームレベルで変数を宣言して値を保持する事もできますが、
フォーム上に不可視のテキストボックスを配置して
そこに値を入れておいた方がより無難かもしれません。


データの削除と新データの投入までに
Accessを閉じる可能性がある場合は
面倒でもどこかに記憶させる必要が出てきます。

外部ファイル等でも良いのですが、
Accessというツールを使っている場合には
テーブルに保存するのが一般的ではないかと思われます。


それぞれの場合によってコードも異なってくるので
もう少し詳細をご提示して頂けますでしょうか。


> クエリー上でまとめて付加させたいと思い

注文のデータには Unique(絶対に重複しない)な値がありますでしょうか?

部品コード 数量 発注先コード
A001      1     H001
A001      2     H003
B001      2     H006

のようなデータでしたら特に問題はないのですが、


部品コード 数量 発注先コード
B001      1     H001
B001      1     H001
B001      1     H001

(合計金額がxxxx円を超える場合は
 複数注文書を切らなければいけない…等)

の様なデータがありうる場合には
クエリ一括で注文番号を付加させるのは難しいかと思われます。
(VBAを使って番号を付加する事は可能です。)


また、複数項目の組み合わせで一意になる場合
(部品コード、発注先コードの組み合わせで重複しない、等)

一意になる組み合わせの項目が多いと
処理が遅くなる場合がありますね。


> 色々な書籍を購入してもその辺は掲載せれておりませんでした。

データベースという観点から見た場合。
不要なデータであっても完全に削除する事は
あまりお勧めできない行為であるかもしれません。

いらないデータであっても「削除フラグ」などという項目を作り、
True/False を切り替えることによって
ユーザにはデータを見せないような作りにする事が多々あります。

今回の様な操作はあまり一般的でないため
書籍などにもヒントになるようなものがないのかもしれませんね。
・ツリー全体表示

【11119】Re:プリンタ選択方法
回答  エルブ  - 09/4/28(火) 23:20 -

引用なし
パスワード
   ▼yosihama/k さん:

>印刷開始行の前に「プリンタ選択機能を設ける」ことは可能でしょうか?

印刷ボタンを作成し、クリック時に

'データベースウィンドウで印刷対象のレポートを選択
Docmd.SelectObject acReport,"R_レポート名",true

'「印刷」ダイアログボックスを表示
Docmd.RunCommand acCmdPrint

上記を記述すれば出力先のプリンターを選択できます。
・ツリー全体表示

【11118】Re:一括更新時の連番の振り方
質問  マリア  - 09/4/28(火) 22:59 -

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

こんにちは。

アドバイスありがとうございます。

生産管理を自社用に作成しています。
受注をまとめてEDI方式受信し、それを部品展開して共通部品を在庫と照らし合わせて自動で外部に注文書を手配します。
その際、自社の注文番号を自動付加させるための連番なのです。
フォーム上で付加させることはDmaxで出来るのですが、クエリー上でまとめて付加
させたいと思いご質問をさせていただきました。
以前、使用していたデータベースソウフトdbZaurusでは変数に数値をおいて最終番号を変数に戻すという方式を使っておりました。
しかし、アクセスは初めて使用しモジュールの使い方がわかりません。
よろしければ、是非その辺のコードの書き方をご教示願えれば助かります。
色々な書籍を購入してもその辺は掲載せれておりませんでした。

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

【11117】フォームで入力したものだけで抽出する方...
質問  mai  - 09/4/28(火) 19:14 -

引用なし
パスワード
   DATE : 2009年04月27日(月) 15時40分
NAME : takamatsu
EMAIL:
U R L:
はじめまして、よろしくお願いいたします。

例えば以下のような内容のDBがあるとします。
[ソフトウェア名]
[ライセンスNo]
[購入日]
[使用者]

これらをフォームから抽出する場合
基本は、以下のようになると思いますが、
forms![フォーム名]![コントロール名]
例)forms![フォーム名]![ソフトウェア名検索]

ひとつでも空白の項目があると、Nullとして検索されてしまうのか抽出することができません。

空白の項目は無視して、入力した項目だけで抽出できるようにしたいのです。

そのため以下も試みてみました
<右端の空いているフィールドへ入力>
IIf(IsNull(forms![フォーム名]![ソフトウェア名検索]),True,[ソフトウェア名]=forms![フォーム名]![ソフトウェア名検索])
<抽出条件>
True

しかし、クエリを実行すると
Tureというパラメーター入力ボックスが出てきてしまい、うまく抽出できません。


フォームで入力した項目だけで、抽出する方法を教えてください。
よろしくお願いいたします。


バージョンは2003になります。
・ツリー全体表示

【11116】Re:年度設定について(再)
お礼  ポンプ  - 09/4/28(火) 17:05 -

引用なし
パスワード
   やっと解決できました。
ありがとうございます!!!
・ツリー全体表示

【11115】Re:あれれ??
回答  小僧  - 09/4/28(火) 16:35 -

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

>グループNoのデーター型は、数値型で良いのでしょうか?

特に記載されていなかったので、
数値型を想定しておりました。

T担当者、TグループNo 共に
同じ型であれば問題なないと思われます。


> 数値型のフィールドに文字列が入力されてると出ました。

>> [書式]タブ
>> 列数:2
>> 列幅:1cm;2cm(コンボボックスの幅によって適宜変更)

まずは列幅を 0 にしないで
コンボボックスを選んだ際に グループNO と グループ名 が
表示する様にしてみましょう。

連結列 という値がデフォルトだと 1 になっているため、
左側が グループNO になっていれば問題ない筈なのですが…。


> 項目が出なく、ナンバーしか出ないのですが・・・

「テーブル」では数値で管理して、
「フォーム」で見せる際に
xx グループ、yy グループ とグループ名で見せてあげるのが
一般的かと思われます。

> 私以外使用する者がいないと思うので

とありますが、
テーブルでルックアップを使うよりは
きちんとしたフォームを作った方が良さそうですね。
・ツリー全体表示

【11114】Re:一括更新時の連番の振り方
発言  小僧  - 09/4/28(火) 16:13 -

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

>また1から振りなおされてしまいます。

データベースの最適化/修復を行わなければ
続きの番号が振られるかと思いますが、
適度に最適化を行ったほうが良いのも事実です。


元々オートナンバーは重複しない値を作成する為の機能であって
連番を振るためのものではありません。

連番をふるという事であれば
最大値に +1 をしながら取り込む様なコードの作成が必要ですね。


また、データを一括削除する前に
最大値を記憶しなければいけないのですが、

> データを一括更新する際

これがどの様なやり方で行っているかによって

・テーブルに覚えさせておく
・モジュール内の変数に格納しておく

等、やり方が変わってくると思われます。
・ツリー全体表示

【11113】Re:年度設定について(再)
発言  超初心者  - 09/4/28(火) 13:19 -

引用なし
パスワード
   ▼ポンプ さん:

>初心者なのでよくわかりません。(2008 - 1)?
私は『超初心者』なので。。。。。^^;


式(コード)の中で 2008 をあらわしているのはどこでしょう?

DFirst("処理年度" , "年度設定")
の部分ではないでしょうか?

では、2008 - 1 (= 2007) とするには?

DFirst("処理年度" , "年度設定") - 1
で良いのでは?
・ツリー全体表示

【11112】Re:年度設定について(再)
お礼  ポンプ  - 09/4/28(火) 11:33 -

引用なし
パスワード
   ▼超初心者 さん:
ありがとうございます。
初心者なのでよくわかりません。(2008 - 1)?
 "01/01" --> "10/01"
 "12/31" --> "09/30" にすると・・・
 2008年10月1日 から 2008年9月30日になってしまうのです・・・?

>▼ポンプ さん:
>2008 - 1 = 2007
>
>"01/01" --> "10/01"
>"12/31" --> "09/30"
>
>で良いのでは?
・ツリー全体表示

【11111】Re:年度設定について(再)
回答  超初心者  - 09/4/28(火) 11:18 -

引用なし
パスワード
   ▼ポンプ さん:
2008 - 1 = 2007

"01/01" --> "10/01"
"12/31" --> "09/30"

で良いのでは?
・ツリー全体表示

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