Access VBA質問箱 IV

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

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


653 / 2272 ツリー ←次へ | 前へ→

【10636】フラグ更新について(更新クエリ?) MAI 08/10/29(水) 22:32 質問[未読]
【10640】Re:フラグ更新について(更新クエリ?) トキドキ徹 08/10/30(木) 18:50 回答[未読]
【10643】Re:フラグ更新について(更新クエリ?) MAI 08/10/30(木) 23:50 質問[未読]
【10645】Re:フラグ更新について(更新クエリ?) トキドキ徹 08/10/31(金) 14:40 回答[未読]
【10673】Re:フラグ更新について(更新クエリ?) MAI 08/11/5(水) 21:04 質問[未読]
【10674】Re:フラグ更新について(更新クエリ?) トキドキ徹 08/11/6(木) 9:42 発言[未読]
【10680】Re:フラグ更新について(更新クエリ?) MAI 08/11/6(木) 22:33 質問[未読]
【10683】Re:フラグ更新について(更新クエリ?) トキドキ徹 08/11/7(金) 15:26 発言[未読]
【10701】Re:フラグ更新について(更新クエリ?) MAI 08/11/7(金) 21:07 質問[未読]
【10702】Re:フラグ更新について(更新クエリ?) neptune 08/11/8(土) 12:58 発言[未読]
【10718】Re:フラグ更新について(更新クエリ?) MAI 08/11/10(月) 20:31 質問[未読]
【10719】Re:フラグ更新について(更新クエリ?) neptune 08/11/10(月) 21:48 発言[未読]
【10721】Re:フラグ更新について(更新クエリ?) MAI 08/11/10(月) 22:11 質問[未読]
【10723】Re:フラグ更新について(更新クエリ?) neptune 08/11/11(火) 9:53 発言[未読]
【10726】Re:フラグ更新について(更新クエリ?) MAI 08/11/11(火) 21:25 質問[未読]
【10727】Re:フラグ更新について(更新クエリ?) neptune 08/11/11(火) 22:11 回答[未読]
【10728】Re:フラグ更新について(更新クエリ?) MAI 08/11/11(火) 22:39 質問[未読]
【10729】Re:フラグ更新について(更新クエリ?) neptune 08/11/11(火) 22:51 発言[未読]
【10730】Re:フラグ更新について(更新クエリ?) MAI 08/11/11(火) 23:08 質問[未読]
【10731】Re:フラグ更新について(更新クエリ?) neptune 08/11/11(火) 23:36 発言[未読]
【10647】Re:フラグ更新について(更新クエリ?) neptune 08/10/31(金) 22:50 発言[未読]
【10648】Re:フラグ更新について(更新クエリ?) MAI 08/11/1(土) 9:44 質問[未読]
【10649】Re:フラグ更新について(更新クエリ?) neptune 08/11/1(土) 10:56 回答[未読]
【10659】Re:フラグ更新について(更新クエリ?) MAI 08/11/2(日) 0:13 質問[未読]
【10662】Re:フラグ更新について(更新クエリ?) neptune 08/11/2(日) 12:16 回答[未読]
【10663】Re:フラグ更新について(更新クエリ?) MAI 08/11/2(日) 13:21 質問[未読]
【10664】Re:フラグ更新について(更新クエリ?) neptune 08/11/2(日) 17:18 回答[未読]
【10666】Re:フラグ更新について(更新クエリ?) MAI 08/11/3(月) 15:54 質問[未読]
【10667】Re:フラグ更新について(更新クエリ?) neptune 08/11/3(月) 18:53 発言[未読]
【10668】Re:フラグ更新について(更新クエリ?) MAI 08/11/3(月) 21:33 質問[未読]
【10669】Re:フラグ更新について(更新クエリ?) neptune 08/11/3(月) 21:59 発言[未読]
【10670】Re:フラグ更新について(更新クエリ?) MAI 08/11/3(月) 23:44 発言[未読]
【10651】Re:フラグ更新について(更新クエリ?) YU-TANG 08/11/1(土) 15:08 回答[未読]
【10656】Re:フラグ更新について(更新クエリ?) neptune 08/11/1(土) 22:44 発言[未読]
【10657】Re:フラグ更新について(更新クエリ?) neptune 08/11/1(土) 22:50 発言[未読]
【10660】Re:フラグ更新について(更新クエリ?) YU-TANG 08/11/2(日) 3:39 発言[未読]

【10636】フラグ更新について(更新クエリ?)
質問  MAI  - 08/10/29(水) 22:32 -

引用なし
パスワード
   初心者です。宜しくお願い致します。

2つのテーブルを使用し、フラグを更新を行いたいのですが宜しくお願い致します。

実現したい事。
受注データ
T_受注があります。

注文NO  品目CD  受注数量 納期    フラグ
0001   101      100 2008/11/1   1
0002   103      50 2008/11/4   1
0003   106      200 2008/11/8   1
0004   108      150 2008/11/29   1

出荷データ
T_出荷があります。

注文NO  品目CD  出荷数 出荷日
0001   101    10   2008/10/29
0001   101    10   2008/10/30
0001   101    40   2008/11/1
0002   103    50   2008/10/28
0003   106    50   2008/10/29
  

T_出荷を元に
Q_出荷状況

注文NO  受注数量 出荷数合計  出荷率
0001     100      60    60
0002      50      50   100
0003     200      50    25

としています。
Q_出荷状況を元に、T_受注のフラグを更新を行いたいのですが

Q_出荷状況の出荷率が
 1以上の場合は 2
 100以上は   3 とフラグを更新を行いたいのですが
更新クエリでできるのでしょうか?
又、他に良い方法をアドバイスして下さい。

【10640】Re:フラグ更新について(更新クエリ?)
回答  トキドキ徹  - 08/10/30(木) 18:50 -

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

少し強引ですが、更新クエリを作ってみました

'==============================
UPDATE T_受注
SET T_受注.フラグ =
Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>=100,3,DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>1,2,True,1);
'==============================

上記SQLをクエリの新規作成のSQLビューにて貼り付ければOKです。
(ご存知かとは思いますが念のため)

注文NOは文字列型と想定しています。
Switch関数は出荷率の分類が細かい場合も想定して使用しました。
分かりにくければIIF関数にて代用しても良いでしょう。

更新の式が煩雑に感じるのであればVBA等で更新するように
した方が良いかもしれません。


参考までに

【10643】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/10/30(木) 23:50 -

引用なし
パスワード
   ▼トキドキ徹 さん: お礼&質問
本当にご丁寧にありがとうございます。
助かりました。
結果は旨く、更新できました。
ただ、更新テーブルのT_受注が3,000件で更新すると、3分かかりました。


>更新の式が煩雑に感じるのであればVBA等で更新するように
>した方が良いかもしれません。

VBAであれば、時間の短縮出来ますか?
VBAはどの様になるのでしょうか?
私も是非、挑戦してみたいのでアドバイスをお願いします。
MAI

【10645】Re:フラグ更新について(更新クエリ?)
回答  トキドキ徹  - 08/10/31(金) 14:40 -

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

Dlookup関数は少し時間がかかってしまうのが難点ですね。
(ヘルプでもなるべくクエリを使うように勧めているようですし)
いろいろ考えずに力技(?)で押せるところは好きですけど^^;;


Acc2000であればADOが既定だったかと思いますが、
私はDAOに慣れているのでDAOにさせてもらいます。

VBAコードの一例です。
'=======================================
Private Sub sub_Sample()
'要参照設定 Microsoft DAO X.X Object Library
  Dim myDB As DAO.Database
  Dim myRS As DAO.Recordset
  Dim myFilSTR(2 To 3) As String  '** 出荷率ごとの更新値を引数に **
  Dim myLooP As Long
  Dim mySQL As String
  
  Set myDB = CurrentDb
  Set myRS = myDB.OpenRecordset("Q_出荷状況", dbOpenSnapshot)
  
  '出荷率ごとの注文NOを取得
  Do Until myRS.EOF
    If myRS!出荷率 > 1 And myRS!出荷率 < 100 Then
      myFilSTR(2) = myFilSTR(2) & ", '" & myRS!注文NO & "'"
    ElseIf myRS!出荷率 >= 100 Then
      myFilSTR(3) = myFilSTR(3) & ", '" & myRS!注文NO & "'"
    End If
    myRS.MoveNext
  Loop
  
  'T_受注更新
  For myLooP = LBound(myFilSTR) To UBound(myFilSTR)
    If myFilSTR(myLooP) <> "" Then
      myFilSTR(myLooP) = "IN (" & Mid$(myFilSTR(myLooP), 3) & ")"
      mySQL = "UPDATE T_受注 SET フラグ = " & myLooP & _
          " WHERE 注文NO " & myFilSTR(myLooP)
      myDB.Execute mySQL, dbFailOnError
    End If
  Next myLooP
  
  Set myRS = Nothing
  Set myDB = Nothing
End Sub
'=======================================
動かすには「Microsoft DAO X.X Object Library」への参照設定が必要です。

大量データで試してないので分かりませんが、
少しは早くなるかと思います。

コードの細かい解説はご勘弁を^^;;
Accのヘルプや書籍等を参照して下さい。


参考までに

【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で力技の方が速いのかな???

【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

【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のフラグを抽出するクエリを作成して
変更するといったことになるんですかね。

【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);

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

それでは。

【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)
エラーには関係ないと思いますが、
とりあえず、これはちょっと違うように思います。

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

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

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

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

【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);

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

【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 読んで分かる人間が
いるとは思えないです。自分は分かりませんでした。(爆

それでは。

【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 と頭の中に浮かびまして。
私も ボケるな>自分
ってな所です。
これはこういった条件のときは良いですね。頂きます。^ ^;

【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ではいけました。
 ※すいません、また、抽出条件でデータ型が一致しません。となってしまいました。

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

【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 って使ったことないような。。。?

【10666】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/3(月) 15:54 -

引用なし
パスワード
   ▼neptune さん:
こんにちは
本当にありがとうございます。
フラグを数値型に変更後、実行してみました。
7,000件前後で、10秒位で、変更が終了しました。
※でも全て(フラグ9以外)、フラグ2へ変更されてしまいました。
(出荷100以上も2となってしまいました。
再度、確認(質問)ですが
1.出荷率 Between 1 And 99とは、出荷率が99.99、、でも問題無く、フラグは2になるのでしょうか?

2.又、出荷率が100以上の場合はフラグ3は別に、クエリを作るのが良いのでしょうか?
※出荷率が100以上の場合はフラグ3に変更でフラグ9の場合は更新するに。
再度宜しくお願い致します。
作ってみましたがダメでした

お願いします。

【10667】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/3(月) 18:53 -

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

>7,000件前後で、10秒位で、変更が終了しました。
>※でも全て(フラグ9以外)、フラグ2へ変更されてしまいました。
>(出荷100以上も2となってしまいました。
えっ100以上も2になりましたか???

>WHERE T_受注.フラグ<>9 AND Q_出荷状況.出荷率 Between 1 And 99);
としているんですが、何故なんでしょう。?
>再度、確認(質問)ですが
>1.出荷率 Between 1 And 99とは、出荷率が99.99、、でも問題無く、フラグは2になるのでしょうか?
いいえ、本当はならないと思います。
参考:Transact-SQLのMSDNですが、ここは同じだったと思います。
ht tp://msdn.microsoft.com/ja-jp/library/ms187922.aspx

提案ですが、もし、出荷率が、小数点以下を必要としていないなら、Q_出荷状況
の出荷率の算出方法ですが、受注数は長整数型になっているはずですから、
算出部分も
CLng([T_出荷]![出荷数計]/[T_出荷]![注文数量]*100) AS 出荷率
として、データ型をあわせてみてはどうですか?

もう一手としては、私なら、検索条件をbetweenから、不等号に切り替えるとかも
やってみます。

>
>2.又、出荷率が100以上の場合はフラグ3は別に、クエリを作るのが良いのでしょうか?
私の、スキルではその方法しか思い付きません。YU-TANGさんが途中で
サンプル書いてくれましたが、mdbかJetSQLの仕様らしく、普通の
UPDATE INNER JOINでは出来ないようです。

私なら変更する値、検索条件部分をパラメータにして、パラメータクエリを
作成し、VBAでそのパラメータクエリをキックするという方法をとると思います。

>※出荷率が100以上の場合はフラグ3に変更でフラグ9の場合は更新するに。
ちょっと、これは後半部分の意味わかりませんので、
コメントのしようがないです。

【10668】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/3(月) 21:33 -

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

>>7,000件前後で、10秒位で、変更が終了しました。
>>※でも全て(フラグ9以外)、フラグ2へ変更されてしまいました。
>>(出荷100以上も2となってしまいました。
>えっ100以上も2になりましたか???
なっちゃうんですよ

>>>※出荷率が100以上の場合はフラグ3に変更でフラグ9の場合は更新するに。
>ちょっと、これは後半部分の意味わかりませんので、
>コメントのしようがないです。
わかり難くてすいません。
出荷率が100以上の場合はフラグ3に変更します。フラグ 9の場合で出荷率100以上の場合は9から3へ変更します。
(出荷率 100以下の場合は更新しない、 9から2へは更新しない)
 と言う意味です。

neptune さんなら
出荷率 100以下の場合は更新部分はどの様に作成しますか?
具体的にお教え下さい。(アドバイスをお願い致します)

【10669】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/3(月) 21:59 -

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

>>えっ100以上も2になりましたか???
>なっちゃうんですよ
で、データ型をあわせる話はどうなりましたか?

データ型があっているのに、なるのなら、実際のtable,query等もチェック、
検証をしなければ私にはわかりません。かといってそれで判るかどうかも
わかりません。

>出荷率が100以上の場合はフラグ3に変更します。フラグ 9の場合で出荷率100以上の場合は9から3へ変更します。
>(出荷率 100以下の場合は更新しない、 9から2へは更新しない)
> と言う意味です。
判りました。

>neptune さんなら
>出荷率 100以下の場合は更新部分はどの様に作成しますか?
>具体的にお教え下さい。(アドバイスをお願い致します)
MAI さんはどうやりますか?
私の現状の理解ではフラグを2に変更するSQLを少し改造するだけですが。
抽出条件を100以上にするだけでは?

具体的な案を書くのはできますが、自分でやらなければ後で困るのは自分ですよ。
先ず、MAI さんがどのようにして、出来たか、又は躓いているかを示すべきでは?


キツイ事書きますが、私は相談には乗ったりサンプルを書いたりはしますが、
質問者さんからの具体的なという「お願い」には、最初から書くという事
はしていません。
・・・ちなみにExcelの板では私の興味をそそるものは別として、
原則そのような事はお断りしてます。(受け入れると際限がないんです。)

【10670】Re:フラグ更新について(更新クエリ?)
発言  MAI  - 08/11/3(月) 23:44 -

引用なし
パスワード
   ▼neptune さん:
すいません!!
 そうですね
 初心者で、本当にすいません
取り急ぎ、お詫びを
>・・・ちなみにExcelの板では私の興味をそそるものは別として、
とは

【10673】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/5(水) 21:04 -

引用なし
パスワード
   ▼トキドキ徹 さん:
宜しくお願い致します。
VBA(Access)初心者ですが、
トキドキ徹 さんのアドバイス頂きました
VBAを何とか、使用したいのですが
宜しくお願い致します。

”myDB.Execute mySQL, dbFailOnError”でエラーとなってしまいました。

実行時エラー 3035
メモリ不足です。
 本当に宜しくお願いします。 
又、後だしで申し訳ありませんが、フラグ”9”の場合は更新
しないとしたいのですが。
宜しく、お願い致します。


私はAcc2003を使用しています。
>VBAコードの一例です。
>'=======================================
>Private Sub sub_Sample()
>'要参照設定 Microsoft DAO X.X Object Library
>  Dim myDB As DAO.Database
>  Dim myRS As DAO.Recordset
>  Dim myFilSTR(2 To 3) As String  '** 出荷率ごとの更新値を引数に **
>  Dim myLooP As Long
>  Dim mySQL As String
>  
>  Set myDB = CurrentDb
>  Set myRS = myDB.OpenRecordset("Q_出荷状況", dbOpenSnapshot)
>  
>  '出荷率ごとの注文NOを取得
>  Do Until myRS.EOF
>    If myRS!出荷率 > 1 And myRS!出荷率 < 100 Then
>      myFilSTR(2) = myFilSTR(2) & ", '" & myRS!注文NO & "'"
>    ElseIf myRS!出荷率 >= 100 Then
>      myFilSTR(3) = myFilSTR(3) & ", '" & myRS!注文NO & "'"
>    End If
>    myRS.MoveNext
>  Loop
>  
>  'T_受注更新
>  For myLooP = LBound(myFilSTR) To UBound(myFilSTR)
>    If myFilSTR(myLooP) <> "" Then
>      myFilSTR(myLooP) = "IN (" & Mid$(myFilSTR(myLooP), 3) & ")"
>      mySQL = "UPDATE T_受注 SET フラグ = " & myLooP & _
>          " WHERE 注文NO " & myFilSTR(myLooP)
>      myDB.Execute mySQL, dbFailOnError
>    End If
>  Next myLooP
>  
>  Set myRS = Nothing
>  Set myDB = Nothing
>End Sub
>'=======================================

【10674】Re:フラグ更新について(更新クエリ?)
発言  トキドキ徹  - 08/11/6(木) 9:42 -

引用なし
パスワード
   ▼MAI さん:
遅レスすみません("ときどき"しかこないので^^;;)

メモリ不足については、ゴメンなさい。分かりません m(_~_)m

>    myRS.MoveNext
>  Loop
>
  Set myRS = Nothing

>   'T_受注更新
>   For myLooP = LBound(myFilSTR) To UBound(myFilSTR)

としてみて解消されなければ、このコードの使用はあきらめて下さい。


> 又、後だしで申し訳ありませんが、フラグ”9”の場合は更新
> しないとしたいのですが。
こちらについては、少し考えてみましょう。

更新の条件をWhere 〜 で設定しています。
現在のこの部分の意味が理解できれば、
> フラグ”9”の場合は更新しない
も分かるかと思います。

注文NOが(〜)のとき、フラグを2(または3)に更新しなさい、
というクエリを実行しています。

【10662】のneptuneさんのSQLも同様かと思います。
既にお気付きかもしれませんが、
> WHERE フラグ IN
> (SELECT T_受注.フラグ

WHERE 注文NO IN
(SELECT T_受注.注文NO
と変更すると正しく更新されるかと思います。
(99.99・・は別として)

【10680】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/6(木) 22:33 -

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

こんばんは
ありがとうございます。
トキドキ徹 さんのアドバイス通りで解消いたしましたが
ただ、テストデータの10件ではOKです。
データ数を7,500件で行なうと
実行時エラー ’3035’
メモリ不足です。

デバック(D)をクリックすると
myDB.Execute mySQL, dbFailOnError 部はイエローになっています。
何故でしょうか?
お教え下さい。
お願い致します。

>    myRS.MoveNext
>  Loop
>
>  Set myRS = Nothing
>
>   'T_受注更新
>   For myLooP = LBound(myFilSTR) To UBound(myFilSTR)
MAI

【10683】Re:フラグ更新について(更新クエリ?)
発言  トキドキ徹  - 08/11/7(金) 15:26 -

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

先に回答したとおり、分かりません。
ゴメンなさい。

【10701】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/7(金) 21:07 -

引用なし
パスワード
   ▼トキドキ徹 さん:
>
>先に回答したとおり、分かりません。
>ゴメンなさい。
トキドキ徹 さん、^^;こんばんは「ゴメンなさい。」なんて
いやいや、とんでもない

トキドキ徹 さんに、一番最初にアドバイスを頂きました。
クエリを使いたい、と思います。
>UPDATE T_受注
>SET T_受注.フラグ =
>Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>>=100,3,DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>>1,2,True,1);
以前、2分少々かかると発言しましたが、ノートPCでの結果でした。
デスクトップ会社で標準的なPCで行うと、30秒で終了。
十分です。

そこで、再度お願いです。
フラグが ”9”の場合は更新せずに変更を行いたいのですが、旨く出来ませんでした。
 宜しくお願いします。

【10702】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/8(土) 12:58 -

引用なし
パスワード
   ▼MAI さん:
こんにちは
ちょこっとお邪魔します。

直接の回答でもないし、動作確認もしてませんが、
>フラグが ”9”の場合は更新せずに変更を行いたいのですが、旨く出来ませんでした。
Accessのクエリデザイン画面で、SQL画面にしてトキドキ徹 さんの書いたクエリ
を貼り付け、再びデザイン画面に戻します。
そこで、抽出条件に「フラグが ”9”ではない」と言う条件を書き込めば
出来上がると思いますよ。→もう一度SQL画面で確認する。
やってみる価値はあるかと思います。

それと、
>フラグが ”9”の場合は更新せずに変更を行いたいのですが、旨く出来ませんでした。
ですが、何をどうやって、どのような結果が出て、うまく行かなかったって
のを書かないと人には伝わりません。情報はキチンと伝えた方が良いアドバイス
を受けられます。

#関係ないですが、私の興味をそそるってのは、ん?出来るのかな?と
か、自分が忘れているな、と思うような事ですかね。

【10718】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/10(月) 20:31 -

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

こんばんは
笑わないで下さい。初心者の悩みです。
WHERE (((T_受注.フラグ)<>9));と
UPDATE T_受注
SET T_受注.フラグ =
Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>=100,3,DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'")>1,2,True,1);
の組合せが出来ません。
宜しくお願いします。

【10719】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/10(月) 21:48 -

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

私の書いた操作で以下のようなSQLが出てきました。
これで良いんですかね?検証はしてません。

UPDATE T_受注
SET T_受注.フラグ =
Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO]& "'">=100,3,DLookUp("出荷率","Q_出荷状況",
"注文NO='" & [注文NO] & "'")>1,2,True,1)
WHERE (((T_受注.フラグ)<>9));

>笑わないで下さい。初心者の悩みです。
頑張れ。

【10721】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/10(月) 22:11 -

引用なし
パスワード
   ▼neptune さん:
>▼MAI
>こんばんは
エラーです。

クエリ式'Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO]& "'">=100,3,DLookUp("出荷率","Q_出荷状況",
"注文NO='" & [注文NO] & "'")>1,2,True,1)
WHERE (((T_受注.フラグ)<>9));の構文エラー:演算子がありません。
とでました。

>私の書いた操作で以下のようなSQLが出てきました。
>これで良いんですかね?検証はしてません。

【10723】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/11(火) 9:53 -

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

パッと見だけですが、
>クエリ式'Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO]&
                                  ↑
クエリ式'Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] &
は大丈夫ですか?

【10726】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/11(火) 21:25 -

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

>パッと見だけですが、
>>クエリ式'Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO]&
>                                  ↑
>クエリ式'Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] &
>は大丈夫ですか?

意味がわかりませんが?
注文NOですか?
注文NOは問題ありませんし
結果はだめです。
大丈夫??
なのですかこれで本当に??

【10727】Re:フラグ更新について(更新クエリ?)
回答  neptune  - 08/11/11(火) 22:11 -

引用なし
パスワード
   ▼MAI さん:
すみません。矢印がずれてましたね。

& [注文NO]&

& [注文NO] &
]の後のスペースです。
これが無くてもエラーは出ます。

【10728】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/11(火) 22:39 -

引用なし
パスワード
   ▼neptune さん:
>▼MAI さん:
>すみません。矢印がずれてましたね。
>
>& [注文NO]&
>
>& [注文NO] &
>]の後のスペースです。
>これが無くてもエラーは出ます。
----------------------------------
>私の書いた操作で以下のようなSQLが出てきました。
>これで良いんですかね?検証はしてません。

>UPDATE T_受注
>SET T_受注.フラグ =
>Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO]& "'">=100,3,DLookUp("出荷率","Q_出荷状況",
>"注文NO='" & [注文NO] & "'")>1,2,True,1)
>WHERE (((T_受注.フラグ)<>9));
と最初になっていますがね??
どちら??
どこが違うの? 本当は??

【10729】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/11(火) 22:51 -

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

>と最初になっていますがね??
>どちら??
>どこが違うの? 本当は??
最初のが貼り付けミスですね。
いずれにしても、
[注文NO]&
ではエラーになります。

貼り付けミスは私のミスですが、検証、動作確認はMAI さんの責任で
行って下さい。この程度のミスは掲示板のやり取りではミスの内に入りません。
そんな事は検証してから質問するものです。
私はMAI さんのバグ取り屋ではありません。
この程度のミスで責められても困ります。

邪魔をしているようなので、この書き込みを持って失礼します。

【10730】Re:フラグ更新について(更新クエリ?)
質問  MAI  - 08/11/11(火) 23:08 -

引用なし
パスワード
   ▼neptune さん:
>この程度のミスで責められても困ります。
攻めてはいません 申し訳ありません
>邪魔をしているようなので、この書き込みを持って失礼します。

言い忘れましたが

UPDATE T_受注
>SET T_受注.フラグ =
>Switch(DLookUp("出荷率","Q_出荷状況","注文NO='" & [注文NO] & "'">=100,3,DLookUp("出荷率","Q_出荷状況",
>"注文NO='" & [注文NO] & "'")>1,2,True,1)
>WHERE (((T_受注.フラグ)<>9));
で検証はしましたヨ でもエラーですね??
お願いしますよ

【10731】Re:フラグ更新について(更新クエリ?)
発言  neptune  - 08/11/11(火) 23:36 -

引用なし
パスワード
   ▼MAI さん:
それでは続けますか。?
もう進め様はないんですが。。。

私のtest用DBでは文法エラーは出ません。
前にも書いたように私はMAI さんの環境がわかりませんし、判っても
それで、解決できるかどうかはわかりません。

私の環境では、このSQLを実行は出来ません。
データ型が違うとか、ロック違反、入力規則違反が出ます。
本当の環境がわからないし、それを想像してまで原因を探るまでの根性は
ありません。

正直私なら、どうしても判らなければ、力技でこなそうかと思ってしまいます。
ADO or DAOでレコードセットを取得し、構造体にでも格納しておき、
判断しながら、レコードセットを使って変更か、SQL投げるとか。
ってな具合です。
デスクトップのmdb内での処理みたいですからどんな方法でも、
問題のない処理時間で、間違いのない結果が得られればOKです

・・・・ここまで書く気はないですから悪しからず。私は私でやってる事
ありますんで。

653 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078199
(SS)C-BOARD v3.8 is Free