• ベストアンサー

リアルタイム処理について

SQLSERVER2000+VB6を用いて、在庫処理をしようと考えています。 在庫はリアルタイムに変動するものなので、 在庫をリアルタイムにモニターできるようにしたいと考えました。 しかし、当方データベースの知識が浅いもので実現方法がわかりません。 データベースが誰かによって更新された場合、それを知る方法はないのでしょうか? また、あるテーブルについて現在誰も更新していない(ロックされていない)ということを、こちらがロックする前に調べる方法はないでしょうか? 稚拙な問題かもしれませんが、ぜひアドバイス下さい。 よろしくおねがいします。

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

  • ベストアンサー
  • enopi
  • ベストアンサー率66% (4/6)
回答No.2

>データベースが誰かによって更新された場合、それを知る方法はないのでしょうか? あります。DBのトリガー(SQLServerにあったかは、ちょっと忘れました)で、やってもいいですし、VB側で処理をかませてもいいと思います。 やり方は色々ありますが、APLの基本的な処理方針になりますので、ビシッと決めておいたほうがいいと思います。 >あるテーブルについて現在誰も更新していない(ロックされていない)ということ を、こちらがロックする前に調べる方法はないでしょうか? これもあります。ディクショナリー(Oracle用語です、SQLServerでなんと言ったかは忘れました、ごめんなさい)を調べてもいいですし、逆に処理が終わるまでVBから明示的にロックしてもいいと思います。 在庫処理はおっしゃるとおりリアルタイムでの処理が要求される部分が多いので、中途半端な知識で作ってしまうと、在庫がボロボロになってシステムが崩壊したりしますので、きちんと知識のある方にヘルプをお願いしたほうが良いと思いますよ

takaoPR
質問者

お礼

丁寧なご回答、ありがとうございます。 なるほど、調べてみます。 在庫が変動した場合の在庫リストの更新方法ですが、トリガーが実行された場合、その実行をVB側で即座に感知することは可能なのでしょうか?それともVB側で何秒かおきに在庫リストを更新するべきなんでしょうか? 申し訳ありませんが、周りに専門家がいないもので困っています。 出来れば、アドバイスをお願いいたします。

その他の回答 (1)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

現在の状況がわかりませんので、一般的な回答だけ。 >データベースが誰かによって更新された場合、それを知る方法はないのでしょうか? 更新処理をかけるプログラム(VB?)のところにそういう処理を組み込めばいいでしょう。 >あるテーブルについて現在誰も更新していない(ロックされていない)ということ >を、こちらがロックする前に調べる方法はないでしょうか? その方法はあります。でも実際には大変なので、まず使ってみて、うまくいけば使い、けられたら あきらめて、あとで又やる。という方法が多いです。

関連するQ&A

  • SQLServerでのテーブルロック

    ・WindowsXP Pro SP3 ・VB2008 ・SQLServer2000 SP4 上記環境にて開発を行っております。 質問は、データベース内のマスタを、非接続型のグリッド上に読込、 内容を編集後、更新を行う処理を作成しています。 グリッド上に読み込んだ際(Select文)、テーブルをロックし、 他のユーザが変更出来ないようにしたいのですが、方法が分かりま せん。 教えて頂けないでしょうか?

  • MDBの排他制御

    こんにちわ。 いまACCESS2000をデータベースにして,VBでクラサバ構成を実現しようと しています。 そこで2つのプロセスから同時にMDBのあるテーブルを更新しようとすると,ロック状態になってしまいます。 MDBでこのような状態を回避するのはどうすればよいでしょうか? 教えてください。 よろしくお願いします。

  • リアルタイムチャット

    リアルタイムチャットをPHPで作りたいと思っているのですが、実現可能でしょうか? JAVAアプレットを使用したものなら実現可能なのですが PHPで作りたいんです。 もちろんブラウザを一定時間ごとに更新というのはなしでお願いします。 何かいい方法あれば教えてください。

    • ベストアンサー
    • PHP
  • SQLServerのデータベース間でデータコピー

    こんにちは。SQLServer2000(SP3a)、VB6.0(SP5)でデータベースの勉強をしています。用語に詳しくないので、うまく説明できないと思いますが、相談にのってください。 SQLServerに、「データベースA」と「データベースB」があり、VBのコマンドボタンをクリックすると、データベースAのテーブル1のデータをそのままデータベースBのテーブル1に移動させたいと思っています。 私の知識では、データベースAのテーブル1のデータをSelectですべて読み込み、変数などに入れておき、データベースBのテーブル1にInsertするという効率の悪い方法しか思い浮かばず、レコード数が多いので、時間がかかり困っています。 他に良い方法があればアドバイスをお願いします。 よろしくお願いします。

  • INSERTにおいてロック処理は必要か

    データベースでのロック処理に関する初歩的な質問です。 とあるテーブルのとある行をSELECTして、しかる演算処理の後に同じテーブルにUPDATEするときには、ロック処理が必要であることは理解できるのですが、 単純に独自のデータをテーブルにINSERTする場合、ロック処理は必要なのでしょうか? このテーブルには頻繁にユーザーがアクセスしてSELECTもUPDATEも走っている状態です。

    • ベストアンサー
    • MySQL
  • DataGridの中身をDataSetにテーブルとして保存する方法 (初心者)

    VB.NET2003でDataSetにテーブルを作成して、データベース(SQLServer2000)にあるテーブルを引っ張ってきて、そのDataSetのテーブルをDataGridに渡して、表示までは出来たのですが、DataGridの中身を変更した後、違うDataSetに保存する方法が分かりません。どなたか教えてください。

  • なぜ、「GPSリアルタイム追跡機器」が安くないのか

    保育園児の息子にGPSをつけたいのですが、1万円以下のリアルタイム追跡できる機器が 見当たりません。GPSロガーは数千円で売っていますよね?なぜリアルタイム追跡機器が その程度の価格で売っていないのでしょうか? スマホのアプリで実現できそうでしたが、リアルタイムとはいかず数分のラグがあり、 毎日10分程度(更新間隔10秒が理想)の使用においてはほぼ意味を成しません。 スマホはロックしているので、そのせいで更新が数分に一回になってしまうのかも? (ちなみに、LINE HEREと待ち合わせの達人を使用) またサービスとしてGPSリアルタイム追跡がありますが、そのサービスに毎月お金を 払うのもひとり親家庭パート暮らしには辛い出費です。 どうにか少ない出費でGPSリアルタイム追跡できる方法ありませんか? 毎日5分~10分程度なので更新頻繁、電気使いまくりでも構いません。

  • リセールページの更新をリアルタイムで知る

    とある歌手のライブチケットを取得するために、 リセールページが更新されたら、リアルタイムで知りたいです。 GoogleエクステンションのPage Monitorを使ってみましたが、 ページ更新されても、アラートが出ないです。 リセールページが更新されたら、リアルタイムで教えてくれる。 ソフトやエクステンションなど、どのような方法がありますでしょうか? よろしくお願いいたします。

  • DataGridViewで変更した値を反映させたい。

    VB2005、SqlServer2005環境です。 デザイナ上で、DataTableをドラッグしてやると、自動的に バインドされたDataGridViewが出てくれるので、その方法で DataGridViewを1つ設置しました。 このDataGridViewの表の値を変えた時、それを実際のDBのテーブルにも 反映させたいなと思ってます。 これを実現するための方法を教えていただけないでしょうか? バインドされているので、保存できればそのまま更新されるような イメージなのですが…その方法がわかりません。 宜しくお願いします。

  • SQLServerの行ロック

    VB6及びSQLServer2000で開発を行っているのですが 1つのテーブルに対して一度に複数の行ロックを 行う事が出来ずに困っています。 通常と違う方法が必要なのか、何か注意点があるのでしょうか? よろしくお願いします