データ移動方法と情報更新手続きの実装について

このQ&Aのポイント
  • VB6.0で開発しているシステムにおいて、データの移動方法と情報更新手続きの実装について詳細を教えてください。
  • A-1というテーブルで品番や枝番、数量を管理しています。特定の枝番の品番を他の枝番に移動する方法についても教えてください。
  • 移動元の品番、枝番、数量と移動先の品番、枝番、数量を入力できるシステムを実装したいのですが、具体的な手順について教えてください。
回答を見る
  • ベストアンサー

データの移動

VB6.0 SQLで開発しています。 A-1というテーブルに 品番 あああ 枝番 A001 数量 10個 品番 あああ 枝番  B001 数量  10個 枝番A001の品番あああを5個、枝番B001へ 移動したいのですが 動後 A-1のテーブルは 品番 あああ 枝番 A001 数量 5個 品番 あああ 枝番  B001 数量  15個 になりたいのです。 From1に移動元の品番、枝番、数量と(移動元の数量はA-1から引っ張ってきます。) 移動先の品番、枝番、数量が入力できるものを置いて 登録ボタンを押すと移動できるようにしたいのですが いまいちよく判りません。 A001から引いてB001へ足す動作を一度にっていう部分がわかりません。よろしくお願いします。     

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>VB6.0 SQLで開発しています SQLとはSQLServerのこと? 通常でやるとしたら以下の2文をそれぞれ発行。 (1) UPDATE [A-1] SET 数量 = 数量 - 5 WHERE 品番 = 'あああ' AND 枝番 ='A001' (2) UPDATE [A-1] SET 数量 = 数量 + 5 WHERE 品番 = 'あああ' AND 枝番 ='B001' しかしSQLServerなら、(1)と(2)の文の間にセミコロン「;」を入れてあげると、ストアドを利用しないでも一度に処理をしてくれますよ。

kinoko731
質問者

お礼

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

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

あと一点、SQL Server などではストアードプロシジャを利用することにより、一回のコマンド発行で実行できます。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

一度にというのが・・・ 通常、こういうのは1トランザクションと考え、 トランザクション開始 引くSQL 足すSQL トランザクション終了 というようにやるのが一般的でしょう。 1SQLで全て行うのは、書き方によっては出来るでしょうがコードの保守性などいろいろな点であまり良くないと思います。

kinoko731
質問者

お礼

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

関連するQ&A

  • Access 2つのテーブルで数量の比較をしたい

    Access2007を使用しています。 2つのテーブルに品番と数量がそれぞれ登録されています。 【テーブルA】 品番  / 数量 あ001/ 4 い001/ 5 あ001/ 1 【テーブルB】 品番  / 数量 う000/ 10 あ001/ 1 い001/ 4 い001/ 1 この2つのテーブルから、品番ごとの数量を比較して、異なるデータの品番と差異を取り出したいのです。 【結果】 あ001/ 4(←A-B=4) う000/ 10 A,Bのテーブルで品番ごとに集計した結果から、数量が不一致のものを取り出す方法がわかりません。 どうぞよろしくお願いいたします。

  • エクセルのピボットテーブルで

    ピボットテーブルの表示方法についてです。 表の品名と数量からピボットテーブルを作成します。 行に品名、データ部に数量を表示させるのですが、数量が0(ゼロ)の場合には、その行自体を表示させない様にしたいのです。 元の表の方は変更等出来ないので、ピボットテーブルの方で何とか出来ないかと思います。 【元の表】 品番  数量 A001  5,000 A002    0 B001  4,500 B002    0 上記の2列からピボットテーブルを作成すます。 【ピボットテーブル】 品番  数量 A001  5,000 B001  4,500 総計  9,500 上記の様に、元の表で数量が0なら、その品番と数量の行が表示されない様にです。

  • Access2つのテーブルの差額を出すピボット

    Access2007を使用しています。 以下のような2つのテーブルがあります。 <テーブルA> 区分 品番 金額  数量 A  001 10000  10 A  S12 5000   5 A  002 8000   8 A  001 6000   6 <テーブルB> 区分 品番 金額  数量 B  001 2000  2  B  S12 3000  3 このデータを元に、以下のような結果をピボットで表示したいと思っています。       区分       A  |  B   |合計 品番  数量 金額|数量 金額 |数量 金額 差額(A-B) 001 16 16000| 2 2000 | 18 18000 14000 002 8 8000 |      | 8  8000  8000 S12 5 5000 | 3 3000 | 8  8000  2000 テーブルAとBをユニオンクエリでまとめ、ピボットを作って みたのですが、差額の部分が出せず・・・ どうぞよろしくお願いします。

  • SQLサーバー2000でのSQL文の質問です。

    開発環境はSQLサーバー2000です。 下記のような親子関係のテーブルがあった場合に、【結果】のような結果を得れるようなSQL文を教えていただきたいです。 【親】 -------------------------------- |品番 |品名 -------------------------------- |1 |ラーメン -------------------------------- |2 |カレー -------------------------------- |3 |うどん -------------------------------- 【子供】 -------------------------------- |品番 |枝番 |食べた日 -------------------------------- |1 |1 |1/1 -------------------------------- |1 |2 |1/2 -------------------------------- |3 |1 |1/3 -------------------------------- |3 |2 |1/4 -------------------------------- |3 |3 |1/5 -------------------------------- |3 |4 |1/6 -------------------------------- 【結果】 親子テーブルを連結したSQLを実行すると -------------------------------- |品番 |品名 |食べた回数 -------------------------------- |1 |ラーメン|2 -------------------------------- |2 |カレー |0 -------------------------------- |3 |うどん |4 -------------------------------- のような結果が帰ってくるSQLが作成可能でしたらご教授いただけますようよろしくお願い致します。

  • 重複するキーから一番古い年月日のデータのみ取得したい

    下記の事を実現するSQL文がどうしても分からず困り果てています。。。。 ご回答の程お願い致します。 テストテーブルにはコード、枝番、年月日の3種類のデータがあります。 テストテーブルはコードと枝番を主キーとします。 1つのコードに対して、重複しない枝番が複数登録可能となっています。 取得するデータはコード、枝番、年月日の3種類のデータを取得し、同じコードの中で年月日が一番若いデータのみ取得したいです。 同じような質問で http://okwave.jp/qa4089797.html と言うURLの回答を参考に SELECT コード , 枝番 , 年月日 FROM テストテーブル where (コード , 年月日) in (SELECT コード , MIN(年月日) FROM テストテーブル GROUP BY コード ); というSQL文を考えたのですが、 コードは同じで枝番は違うが年月日が同じデータがあると 望んでいない結果にならず、困り果てています・・・・ ■テストテーブルのデータ コード │ 枝番 │ 年月日 ----------------------------- 1 │ 1 │ 2009-01-01 1 │ 2 │ 2009-01-03 2 │ 1 │ 2009-02-15 2 │ 2 │ 2009-02-10 2 │ 3 │ 2009-02-20 3 │ 1 │ 2009-03-15 3 │ 2 │ 2009-03-10 3 │ 3 │ 2009-03-05 3 │ 4 │ 2009-03-01 ↓↓↓ ■望んでいる取得結果 コード │ 枝番 │ 年月日 ----------------------------- 1 │ 1 │ 2009-01-01 2 │ 2 │ 2009-02-10 3 │ 4 │ 2009-03-01

  • AccessのSQLについて

    Access2000のSQLについての質問です。 コード 数量 ------------ A 3 A 2 A 1 B 2 B 3 の上記のテーブルからコードの部分を 単に重複なく抽出するにはどのようにdistinctを 使用すればいいのでしょうか? 希望結果(例) コード 数量 ------------ A (1-3のどれでもよい) B (2-3のどれでもよい) select distinct コード、数量 from Table にすると コード 数量 ------------ A 3 A 2 A 1 B 2 B 3 こうなってしまい、希望どおりにいきません。

  • 重複データの数量を合計し、重複データを削除する方法

    下記のようなエクセルデータがあるとします。 品番は重複しており、数量は異なっています。 A.品番 B.数量  1--------1 1--------3 1--------2 1--------1 これを下記のようにしたいです。 A.品番 B.数量 1--------7 このように重複データの数量を合計して、かつデータを1つにまとめる 方法を教えて下さい。よろしくお願いします。

  • アクセスで消し込みがしたい

    アクセス初心者です。 二つのテーブルがあります。 テーブル1 品番 得意先 数量 チェック 111  A    1 111  A    1 111  A    2 111  B    1 222  A    1 テーブル2 品番 得意先 数量 チェック 111  A    1 111  A    1 111  A    1 111  A    1 111  A    1 222  A    1 この二つのテーブルを比較して品番、得意先、数量の同じものに チェックボックスをTrueにしたいのです。つまり テーブル1 品番 得意先 数量 チェック 111  A    1  レ 111  A    1  レ 111  A    2 111  B    1 222  A    1  レ テーブル2 品番 得意先 数量 チェック 111  A    1  レ 111  A    1  レ 111  A    1 111  A    1 111  A    1 222  A    1  レ の状態にしたいのです。更新クエリーを使って見ましたが テーブル1は希望通りですがテーブル2は全てにチェックが ついてしまいました。当たり前ですね。(^_^;) VBAは使ったことがないです。よろしくお願いします。

  • 集計

    基礎的な質問ですみません。 VB6.0 SQLで開発しています。 テーブルm_A             テーブルm_B 品番  棚番  個数     品番  品名  仕入単価 001  A-1   10      001  あいう     5 002  B-1   20      002  かきく     6 001  C-2   15      001  あいう     5 002  B-2   13      002  かきく     6 003  C-5   20      003  さしす    7 これを下記の状態で出力は出来たのですが Dim strSQL As String Dim adoRs As New ADODB.RecordSet '----- SQL文作成 ----- strSel = "SELECT" strSel = strSel & ",A.品番" strSel = strSel & ",B.品名" strSel = strSel & ",A.棚番" strSel = strSel & ",A.個数" strSel = strSel & ",B.仕入単価 " strFro = " FROM m_A AS A" strFro = strFro & " LEFT JOIN m_B AS B ON A.品番=B.品番" strOrd = " ORDER BY" strOrd = strOrd + " A.品番" strSQL = strSel + " " + strFro + " " + strWhe + " " + strOrd 品番  棚番  個数  品名  仕入単価 001  A-1   10   あいう     5 002  B-1   20   かきく     6 001  C-2   15   あいう     5 002  B-2   13   かきく     6 003  C-5   20   さしす    7 下のように品番ごとに集計をしたいのですがどうすればいいのでしょうか? お願いします。 品番  個数  品名  仕入単価 001  25   あいう     5 002  33   かきく     6 003  20   さしす    7

  • 抽出条件で

    sqlビギナーです。 TABLE1には列A,Bがあり下記のようなレコードが入っています。 TABLE1 ---------------------- A | B ---------------------- MTB-L1-1 | 10 MTB-L1-2 | 15 MTB-L1a-1 | 20 MTB-L2-1 | 30 HENSU='MTB-L'の情報があり このHENSUを使って、MTB-L1-1,MTB-L1-2 のみ注出したいのですが どのようなSQLにすればいいでしょうか。 "SELECT * FROM TABLE1 WHERE (((Left(A,6))='" & HENSU & "')); だとL1aも選んでしまいます。 環境 Windows XP MS Sql Server 開発 VB6