Page 609 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼クエリ情報からテーブルにデータを出力するやり方について 隠れ肥満22 04/4/28(水) 20:48 ┣Re:クエリ情報からテーブルにデータを出力するやり方について Gin_II 04/4/28(水) 22:32 ┃ ┗Re:クエリ情報からテーブルにデータを出力するやり方について 隠れ肥満22 04/4/29(木) 7:09 ┃ ┗Re:クエリ情報からテーブルにデータを出力するやり方について Gin_II 04/4/29(木) 16:28 ┃ ┣Re:クエリ情報からテーブルにデータを出力するやり方について かみちゃん 04/4/29(木) 18:03 ┃ ┗Re:クエリ情報からテーブルにデータを出力するやり方について 隠れ肥満22 04/4/30(金) 12:25 ┗Re:クエリ情報からテーブルにデータを出力するやり方について かみちゃん 04/4/28(水) 22:36 ─────────────────────────────────────── ■題名 : クエリ情報からテーブルにデータを出力するやり方について ■名前 : 隠れ肥満22 ■日付 : 04/4/28(水) 20:48 -------------------------------------------------------------------------
すいません教えてください。いろいろ試しましたが うまくいかず、アドバイスをお願いしようと 下記に全て記述してしまいました。 単純にINデータをOUTデータに落としたいだけなのですが・・・ Q売上明細:クエリ情報 IN→キーはありません。 情報件数135件 T売上明細加工編集ファイル:テーブル情報 OUT キー指定はありません。 [現象] Access指定(!?)のMSGBOXに「オーバーフローしました。」と出力表示され、 me.txt件数 には 32,767 と 表示されます。 何卒宜しくお願い致します。 ---------------------------------------------------------------------------------- Private Sub cmd実行_Click() On Error GoTo Err_cmd実行_Click Dim db As ADODB.Connection Dim UR_IN As ADODB.Recordset Dim UR_OUT As ADODB.Recordset Dim i as Integer Set db = CurrentProject.Connection '先にOUTファイルを全て削除します。 Set UR_OUT = New ADODB.Recordset UR_OUT.Open "T売上明細加工編集ファイル",db , adOpenKeyset, adLockOptimistic 'テーブルを削除する Do Until UR_OUT.EOF = True UR_OUT.Delete UR_OUT.MoveNext Loop 'INファイルの粗利額を編集し小さいファイル(OUT)に落としたいです。 Set UR_IN = New ADODB.Recordset UR_IN.Open "Q売上明細",db ,adOpenKeyset, LockOptimistic 'テーブル作成 Do Until UR_IN.EOF = True UR_OUT.AddNew UR_OUT!売上日 = UR_IN!売上日 UR_OUT!売上金額 = UR_IN!売上金額 UR_OUT!売上粗利額 = UR_IN!売上粗利額 * 1.3 UR_OUT.Update UR_OUT.MoveNext i = i + 1 Loop me.txt件数 = i UR_OUT.Close: Set UR_OUT = Nothing UR_IN.Close: Set UR_IN = Nothing UR_DB.Close: Set UR_DB = Nothing Exit_cmd実行_Click: Exit Sub Err_cmd実行_Click: MsgBox Err.Description End Sub 見ずらくてすみません。 |
>[現象] >Access指定(!?)のMSGBOXに「オーバーフローしました。」と出力表示され、 >me.txt件数 には 32,767 と 表示されます。 でしたら、 > Dim i as Integer Dim i As Long に変更してみてください。 理由は、Integer の部分にカーソルを置いた状態で、F1 キーを押し、 ヘルプで確認してください。 |
Gin_II さん様、かみちゃん様 >>[現象] >>Access指定(!?)のMSGBOXに「オーバーフローしました。」と出力表示され、 >>me.txt件数 には 32,767 と 表示されます。 > >でしたら、 > >> Dim i as Integer > Dim i As Long > >に変更してみてください。 >理由は、Integer の部分にカーソルを置いた状態で、F1 キーを押し、 >ヘルプで確認してください。 すいません質問の意味がズレてしまいました。 私の表現が悪かったです。ごめんなさい。 「Dim i as Integer」を「Dim i As Long」にすれば 良いのではなく、入力件数が135件なので出力件数も135件にしたい わけです。32767件になることに問題があるわけなんです。 なんでだろう・・・ 何卒、今一度、検証して頂けないでしょうか? |
> Do Until UR_IN.EOF = True > UR_OUT.AddNew > UR_OUT!売上日 = UR_IN!売上日 > UR_OUT!売上金額 = UR_IN!売上金額 > UR_OUT!売上粗利額 = UR_IN!売上粗利額 * 1.3 > UR_OUT.Update > UR_OUT.MoveNext > i = i + 1 > Loop UR_OUT.MoveNext が、不要かと。 |
こんにちは。かみちゃん です。 >UR_OUT.MoveNext >が、不要かと。 そのかわり、 UR_IN.MoveNext が必要かと思います。 このままだと、同じレコードが保存されるのではないでしょうか? そもそも、「単純にINデータをOUTデータに落としたいだけ」 なら、追加クエリ作成して実行すればいいのではないかとも思いま すが・・・ クエリを作成したくなければ、SQL文をVBAから実行すればいいので はないかとも思います。 OUTファイルを全て削除する部分も同じくです。 |
▼Gin_II さん: >> Do Until UR_IN.EOF = True >> UR_OUT.AddNew >> UR_OUT!売上日 = UR_IN!売上日 >> UR_OUT!売上金額 = UR_IN!売上金額 >> UR_OUT!売上粗利額 = UR_IN!売上粗利額 * 1.3 >> UR_OUT.Update >> UR_OUT.MoveNext >> i = i + 1 >> Loop > >UR_OUT.MoveNext >が、不要かと。 なるほど! UR_IN.MoveNext が、必要でした! ありがとうございました! |
こんにちは。かみちゃん です。 >Q売上明細:クエリ情報 IN→キーはありません。 情報件数135件 >T売上明細加工編集ファイル:テーブル情報 OUT キー指定はありません。 想定される最大件数が何レコードになるのかがわかりませんが、 > Dim i As Integer では、32767レコードまでしか処理できないと思います。 これは、「整数型 (Integer) の変数は、16 ビット (2 バイト) の変数で、-32,768 〜 32,767 の範囲の値をとります」だからです。 そこで、 Dim i As Long とすれば、いいのではないでしょうか? |