Access VBA質問箱 IV

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

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


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

【10665】Re:ハイパーリンクの編集→ファイルを開...
発言  YU-TANG  - 08/11/2(日) 21:32 -

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

> APIは難しそうなのでとても私には出来そうもありません。

自分もやりたくないです。(笑

> ダイアログ フォームなりファイル選択と言うのは出来ると思うのですが、
> それをテキストにいれてハイパーリンクできる(..\..\ファイル名)に
> なるのでしょうか。

ちょっと物言いが微妙になってしまいますが、基本的にはできます。
ファイル選択ダイアログを使うなら、選択したファイルのフルパスが
戻りますから、絶対参照で良ければそれをそのままハイパーリンク型
フィールドに突っ込めばよろしいと思います(テストしたわけでは
ありませんので、予想です)。
ただし [ハイパーリンクの挿入] ダイアログで設定されるパスは相対
参照パスのようですので、もしそこを互換にしたいとなると、
絶対参照を相対参照に変換する処理が必要になります。

API を使うなら「PathRelativePathTo」、ユーザー定義関数を作成する
なら「絶対パス 相対パス 変換 dim」あたりで検索すると参考情報を
得られると思います。

あと、[ハイパーリンクの挿入] ダイアログでは表示文字列や
ヒント設定などのオプションを設定できますが、そこまで
再現する必要があるとなると、けっこう大変になりますね。

> ダイヤログを出すまでいけば、けっこう手間がはぶけるので
> とりあえずはそれかなと思っています。

はい。
余裕ができたら、優先度にしたがって追い追い手をつけていけば
よろしいかと。

それでは。
・ツリー全体表示

【10664】Re:フラグ更新について(更新クエリ?)
回答  neptune  - 08/11/2(日) 17:18 -

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

>抽出条件でデータ型が一致しません
ですが、私の書いたSQLをよくご覧になって頂ければわかるんですが、
私はフラグ、注文NO、の両フィールドとも数値型を使用していますが、
MAI さんの実際のテーブルのフラグ は文字列型(テキスト型)なので
UPDATE T_受注 SET フラグ = '2'
としなければなりません。
[注文NO]フィールドにしても同じ事が言えます。

この辺りに注意して、私の書いたSQLをよ〜く見て、データ型を合わせてみて
下さい。

>--------------------------
>フィールド名 データ型
>注文NO    テキスト型
>フラグ    テキスト型
>注文数量数  数値型
>出荷数計   数値型
>--------------------------
>>UPDATE T_受注 SET フラグ = 2
>>WHERE フラグ IN
>>(SELECT T_受注.フラグ
>>FROM T_受注 INNER JOIN Q_出荷状況 ON T_受注.注文NO = Q_出荷状況.注文NO
>>WHERE T_受注.フラグ<>9 AND Q_出荷状況.出荷率 Between 1 And 99);
>>でいけるかもしれません。?
>>私が作った検証用DBではいけました。
> ※すいません、また、抽出条件でデータ型が一致しません。となってしまいました。

でも、Q_出荷状況のSQL書ける人が何故にこんな質問なんでしょう???
私なんざ、RIGHT JOIN って使ったことないような。。。?
・ツリー全体表示

【10663】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/2(日) 13:21 -

引用なし
パスワード
   ▼neptune さん:
>▼MAI さん:
neptuneさん本当にありがとうございます。
Q_出荷状況は次の様になっています。
SELECT First(T_受注.フラグ) AS フラグ, T_出荷.注文NO, First([T_出荷]![注文数量]) AS 注文数量, Max(T_出荷.分納回数) AS 分納回数, First(T_出荷.出荷数計) AS 出荷数計, First(T_出荷.未出荷数) AS 未出荷数, [T_出荷]![出荷数計]/[T_出荷]![注文数量]*100 AS 出荷率
FROM T_出荷 RIGHT JOIN T_受注 ON T_出荷.注文NO = T_受注.注文NO
GROUP BY T_出荷.注文NO, [T_出荷]![出荷数計]/[T_出荷]![注文数量]*100
ORDER BY T_出荷.注文NO;
--------------------------
フィールド名 データ型
注文NO    テキスト型
フラグ    テキスト型
注文数量数  数値型
出荷数計   数値型
--------------------------
>UPDATE T_受注 SET フラグ = 2
>WHERE フラグ IN
>(SELECT T_受注.フラグ
>FROM T_受注 INNER JOIN Q_出荷状況 ON T_受注.注文NO = Q_出荷状況.注文NO
>WHERE T_受注.フラグ<>9 AND Q_出荷状況.出荷率 Between 1 And 99);
>でいけるかもしれません。?
>私が作った検証用DBではいけました。
 ※すいません、また、抽出条件でデータ型が一致しません。となってしまいました。

>※こちらは最初のサンプルデータしか情報がないのでそちらのデータ型などは
> 想像するしかないんですよね。
宜しくお願い致します。
・ツリー全体表示

【10662】Re:フラグ更新について(更新クエリ?)
回答  neptune  - 08/11/2(日) 12:16 -

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

>  UPDATE T_受注 SET フラグ = 2
>  WHERE 注文NO IN (SELECT 注文NO FROM Q_出荷状況 WHERE 出荷率 Between 1 And 99 AND フラグ<>9);
>
>で、試してみましたが、 抽出条件でデータ型が一致しません。
>となします。何故でしょう
ですが、これは先に書いておりますが、

>Q_出荷状況を元に抽出しますから、Q_出荷状況にはフラグのデータが含まれて
>いないみたいなので、Q_出荷状況を元には出来ません。

>従って、
>Q_出荷状況 のデータにフラグの状態を含ませて(できるなら、これが簡単と思う)
の条件付なんですが。。。これは検討、確認しましたか?

検討、改造してない場合を考えて、頭をもう一ひねりしてみました。
1〜99までの出荷率のフラグを2にする。

UPDATE T_受注 SET フラグ = 2
WHERE フラグ IN
(SELECT T_受注.フラグ
FROM T_受注 INNER JOIN Q_出荷状況 ON T_受注.注文NO = Q_出荷状況.注文NO
WHERE T_受注.フラグ<>9 AND Q_出荷状況.出荷率 Between 1 And 99);
でいけるかもしれません。?
私が作った検証用DBではいけました。

※こちらは最初のサンプルデータしか情報がないのでそちらのデータ型などは
 想像するしかないんですよね。

to YU-TANGさん
> >SET T.フラグ = 3+(Q.出荷率<100)
> エラーには関係ないと思いますが、
> とりあえず、これはちょっと違うように思います。
すみません。考えた時にtrue = 0以外の数値、→1 と頭の中に浮かびまして。
私も ボケるな>自分
ってな所です。
これはこういった条件のときは良いですね。頂きます。^ ^;
・ツリー全体表示

【10661】Re:追加クエリ
お礼  tyuyo  - 08/11/2(日) 10:17 -

引用なし
パスワード
   ▼YU-TANG さん:>
>いま現在、コマンドボタンを押したときに追加クエリを実行
>するように設定していると思いますので、コマンドボタンを
>押したときに追加クエリを2つ(片方は違うテーブルとやら
>が追加先)実行するように変えればよいだけではないでしょうか。

回答ありがとうございます。
上手く出来ました。

遅レスとはいえ、
ご教授ありがとうございました。
・ツリー全体表示

【10660】Re:フラグ更新について(更新クエリ?)
発言  YU-TANG  - 08/11/2(日) 3:39 -

引用なし
パスワード
   neptune さん、こんばんは。

いま投稿しようとして初めて気づきましたが、URL だけ
ではなく、記事リンクまで禁止になったんですね…。
まあ、それはさておき。

#10656
> 出来そうな感じだったんで検証してみたんですが、
> 「更新可能なクエリであることが必要です。」
> というエラーが出ますね。

わざわざ検証していただいて、ありがとうございます。
なるほど、そういう事情があったのですね。
自分は試さないで書いたので気づきませんでしたが、
そういうことならサブクエリでよろしいかと思います。

# つか、試せ>自分

> 私が書いた「Q_出荷状況」は更新可能ではないんですが、実物は
> どうなんでしょう?

そうですね。
実際のところは分かりませんが、集計クエリの可能性が
高いでしょうから、その場合はやはり更新不可ということに
なるでしょうね。

> >SET T.フラグ = 3+(Q.出荷率<100)
> エラーには関係ないと思いますが、
> とりあえず、これはちょっと違うように思います。

あれ、そうですか?
どのみち動かないクエリの話なので詮無いことですが、
「3+(Q.出荷率<100)」というのは、「IIf(Q.出荷率<100,2,3)」
と同じ意味の演算子版になります。
関数呼び出しはコストがかかるので、速度が求められそうな
場合、私はよく関数版から演算子版に切り替えたりしますが。

まあ、分かりにくいのが難点ですね。

#10657
> ht tp://support.microsoft.com/kb/328828/ja
> を見つけたんですが、沢山原因があるので全部は見てませんが、どれかが
> 該当するのかもしれません。

たぶん該当しているんでしょうが、正直その KB 読んで分かる人間が
いるとは思えないです。自分は分かりませんでした。(爆

それでは。
・ツリー全体表示

【10659】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/2(日) 0:13 -

引用なし
パスワード
   ▼neptune さん:
こんばんは 遅くなりまして
 すいません。
ありがとうございます。
後だしで 本当にすいません。
  UPDATE T_受注 SET フラグ = 2
  WHERE 注文NO IN (SELECT 注文NO FROM Q_出荷状況 WHERE 出荷率 Between 1 And 99 AND フラグ<>9);

で、試してみましたが、 抽出条件でデータ型が一致しません。
となします。何故でしょう
すいませんが
・ツリー全体表示

【10658】Re:ハイパーリンクの編集→ファイルを開...
お礼  mari  - 08/11/1(土) 23:29 -

引用なし
パスワード
   YU-TANGさん回答ありがとうございます。
指導頂いたようにはできました。
APIは難しそうなのでとても私には出来そうもありません。
ダイアログ フォームなりファイル選択と言うのは出来ると思うのですが、
それをテキストにいれてハイパーリンクできる(..\..\ファイル名)に
なるのでしょうか。ダイヤログを出すまでいけば、けっこう手間がはぶけるので
とりあえずはそれかなと思っています。ありがとうございます。mari
・ツリー全体表示

【10657】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/1(土) 22:50 -

引用なし
パスワード
   ▼YU-TANG さん:
続けてすみません。

前の書き込みはどうもハズシかもしれません。?

ググっていたら
「Access クエリや Access フォームでデータを更新すると発生するエラーをトラブルシューティングする方法」
ht tp://support.microsoft.com/kb/328828/ja
を見つけたんですが、沢山原因があるので全部は見てませんが、どれかが
該当するのかもしれません。
・ツリー全体表示

【10656】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/1(土) 22:44 -

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

出来そうな感じだったんで検証してみたんですが、
「更新可能なクエリであることが必要です。」
というエラーが出ますね。

ググッたら
ht tp://www.accessclub.jp/bbs3/0062/superbeg23489.html
というのがありまして、読んでみたら今回の「Q_出荷状況」は
更新可能なクエリではないですからエラーになるみたいです。

私が書いた「Q_出荷状況」は更新可能ではないんですが、実物は
どうなんでしょう?

>SET T.フラグ = 3+(Q.出荷率<100)
エラーには関係ないと思いますが、
とりあえず、これはちょっと違うように思います。
・ツリー全体表示

【10655】Re:クエリ条件抽出欄の増加
回答  AAA  - 08/11/1(土) 17:07 -

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

「挿入」→「行」ですね・・・
こんな簡単な質問してすいませんでした。
ありがとうございます。
・ツリー全体表示

【10654】Re:レポートの表示(勝手に改行)について
お礼  morik  - 08/11/1(土) 16:17 -

引用なし
パスワード
   ▼トキドキ徹 さん:

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

ご指示頂いた通りにレコードソースに設定してみましたがダメでした。

この後色々と試してみましたが、××××××など、同じ文字が連続して続く時に
勝手に改行がされてしまう傾向でした。

今回は、住所情報ということで同じ文字が連続して発生しない想定ですので、
改行されてしまうのは無視してしまおうと思います。

その他、回避策がないか引き続き調査してみようと思います。

ご対応ありがとうございました。

>▼morik さん:
>
>ダメモトで
>
>> テキストボックスのレコードソース:=trim([住所情報])
>
>=trim(replace([住所情報],Chr(13) & Chr(10),""))
>
>としてみて下さい(Acc2000以降)
>
>出来なかったらゴメンなさい。
・ツリー全体表示

【10653】Re:クエリ条件抽出欄の増加
回答  YU-TANG  - 08/11/1(土) 15:41 -

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

▼AAA さん:
>クエリの条件抽出欄は9段しかなく、抽出条件がそ9段以上ある場合欄を増加させる事が出来るのでしょうか?

[挿入]-[行] では?
・ツリー全体表示

【10652】Re:追加クエリ
回答  YU-TANG  - 08/11/1(土) 15:18 -

引用なし
パスワード
   こんにちは、YU-TANG です。
遅レスなのでもう見てないとは思いますが、一応。

> 追加クエリで、新規登録または更新をした時に
> その1件のみを違うテーブルに追加保存したいのですが
> 何かいい方法はありますでしょうか?

いま現在、コマンドボタンを押したときに追加クエリを実行
するように設定していると思いますので、コマンドボタンを
押したときに追加クエリを2つ(片方は違うテーブルとやら
が追加先)実行するように変えればよいだけではないでしょうか。

それでは。
・ツリー全体表示

【10651】Re:フラグ更新について(更新クエリ?)
回答  YU-TANG  - 08/11/1(土) 15:08 -

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

斜め読みしただけだと、なんとなくふつうに Inner Join で
Update できそうですが。

UPDATE T_受注 AS T
INNER JOIN
Q_出荷状況 AS Q
ON T.注文NO = Q.注文NO
SET T.フラグ = 3+(Q.出荷率<100)
WHERE (T.フラグ<>9) AND (Q.出荷率<>0);

そんなに単純な話ではない?のかな?

それでは。
・ツリー全体表示

【10650】Re:ハイパーリンクの編集→ファイルを開...
回答  YU-TANG  - 08/11/1(土) 14:10 -

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

ダブルクリックで [ハイパーリンクの挿入] ダイアログを出すところ
までなら、比較的簡単に自動化できると思います。

テキストボックスの [ダブルクリック時] イベントに、次のような
コードを記述するだけです。

Private Sub テキストボックス_DblClick(Cancel As Integer)
On Error Resume Next
  RunCommand acCmdInsertHyperlink
End Sub

[ハイパーリンクの挿入] ダイアログを出した後のディレクトリ移動
まで自動化するのは、ちょっと難しいかと思います。
自分は API でゴリゴリやるくらいしか思いつきませんです。

それが大きな省力化につながるのでしたら、[ハイパーリンクの挿入]
ダイアログを使わずに自作ダイアログ フォームなりファイル選択
ダイアログなりを出すとよいのではないでしょうか。
そうすれば、比較的簡単にディレクトリ移動まで自動化可能だと
思います。

それでは。
・ツリー全体表示

【10649】Re:フラグ更新について(更新クエリ?)
回答  neptune  - 08/11/1(土) 10:56 -

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


> 9がありまして、
>9とは 打切り、キャンセルとは違うのですが
>これ以上、出荷をしない打切るということです。
後出しは・・・反則技ですよ。

>て言うことは、9も2、3へ更新されてしまいます。
>フラグが”9”の場合は更新しない。と設定を
Q_出荷状況を元に抽出しますから、Q_出荷状況にはフラグのデータが含まれて
いないみたいなので、Q_出荷状況を元には出来ません。

従って、
Q_出荷状況 のデータにフラグの状態を含ませて(できるなら、これが簡単と思う)
UPDATE T_受注 SET フラグ = 2
WHERE 注文NO IN (SELECT 注文NO FROM Q_出荷状況 WHERE 出荷率 Between 1 And 99 AND フラグ<>9);
(ちょっとWHERE条件の表現方法をbetweenを思い出したので使ってみました。^ ^;)
とするか、

T_受注の
・フラグが9以外
且つ、T_出荷の
・出荷率が1以上100未満
の注文NOのフラグを抽出するクエリを作成して
変更するといったことになるんですかね。
・ツリー全体表示

【10648】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/1(土) 9:44 -

引用なし
パスワード
   トキドキ徹さん neptune さんの  
おはようございます。 本当にありがとうございます。
本当に、優しくご指導ありがとうございます。
もう1点お願いですが、、、


1以上の場合は 2
100以上は3とフラグを更新を行いたいのですが

フラグが 1、2、3と説明しましたが
すいません。 9がありまして、
9とは 打切り、キャンセルとは違うのですが
これ以上、出荷をしない打切るということです。

トキドキ徹さんの最初の更新クエリ、VBA
neptune さんのを含めて、3種類、出荷データ
が更新する時に、フラグも更新します。
て言うことは、9も2、3へ更新されてしまいます。
フラグが”9”の場合は更新しない。と設定を
             ------
出来ますか?  何度もすいません。

3種類、色々試したいと思いますので、宜しくお願い致します。
又、トキドキ徹さん のVBAを試してみました。
”myDB.Execute mySQL, dbFailOnError”でエラーとなってしまいました。

実行時エラー 3035
メモリ不足です。
 本当に宜しくお願いします。 
MAI
・ツリー全体表示

【10647】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/10/31(金) 22:50 -

引用なし
パスワード
   ▼MAI さん ▼トキドキ徹 さん
こんにちは

遅いかもしれませんが、面白そうなので頭を捻ってみました。
副問い合わせを使って、
UPDATE T_受注 SET フラグ = 2
WHERE 注文NO IN
(SELECT 注文NO FROM Q_出荷状況 WHERE 出荷数合計>=1 AND 出荷数合計<100);

で、出荷数合計が1以上、100未満のT_受注のフラグが2に変更されます。

条件を100に変更してもう一つクエリを作るか、パラメータクエリを
キックしてやるとかしたら処理は遅いでしょうか?
VBAで力技の方が速いのかな???
・ツリー全体表示

【10646】Re:クエリデータをaddnewでテーブルに入...
発言  トキドキ徹  - 08/10/31(金) 15:28 -

引用なし
パスワード
   ▼ver さん:
フィールド名の取得例です。

Dim myLooP As Long

For myLooP = 0 To rs1.Fields.Count - 1
  Debug.Print rs1(myLooP).Name
Next myLooP


参考までに
・ツリー全体表示

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