- PR -

キーボードを入力してDO〜LOOPをぬけたい

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2006/04/14
投稿数: 55
投稿日時: 2006-05-20 15:53
お世話になります。
VisualStudio 2005 言語VisualBasic SQLServerプロジェクト
で、現在作成中です。

DO LOOP文の中で、ESCキーを押すとぬける(脱出する)
というのを作りたいのですが、(↓作成途中のコードです)


Do
If ??? Then
Exit Do
     Using cnn As New SqlConnection("context connection=true")
cnn.Open()
       (省略)
cnn.Close()
End Using
  End If
Loop


IF文にどう記述すればよいのかわかりません。
KeyCodeプロパティを使えばよいらしいのですが、
どう記述すれば良いのでしょうか?
なせ
常連さん
会議室デビュー日: 2006/01/06
投稿数: 41
お住まい・勤務地: おおさか
投稿日時: 2006-05-20 16:33
えーとif文一つだけで解決できるわけではありませんので
悪しからず。

まずESCキーのイベントを受け取る必要があります。
初期状態ですとESCキー押下してもイベントを受け取れません。
イベントを受け取るためにIsInputKey等のメソッドをオーバーライドする必要があります。


IsInputKeyオーバライド参考@IT

そしてKeyDown等のキーイベントを受け取り、ここでやっとdo-loopを抜け出す条件を作るという感じです。
↓はその際の参考になるかと。

CPU負荷を消費せずタイマー割り込みを待つ方法(C#)
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-05-20 17:29
SQLServerプロジェクトということはストアド プロシージャですよね?
なので、不可能です。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-20 17:40
SQLServerのプロジェクトは作ったことが無いけれど

これがどこで動いて、誰がキーを押すのかを考えるとできないような気がする。
未記入
ベテラン
会議室デビュー日: 2006/04/14
投稿数: 55
投稿日時: 2006-05-20 17:48
引用:

うにくまさんの書き込み (2006-05-20 17:29) より:
SQLServerプロジェクトということはストアド プロシージャですよね?
なので、不可能です。


引用:

かるあさんの書き込み (2006-05-20 17:40) より:
SQLServerのプロジェクトは作ったことが無いけれど

これがどこで動いて、誰がキーを押すのかを考えるとできないような気がする。



はい、ストアドプロシージャです。
ということは、DO〜LOOPをぬけるならば、FOR 〜 NEXT を使うか、
Windowsアプリケーションで作り直すしかないということでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-05-20 17:53
引用:

nobuさんの書き込み (2006-05-20 15:53) より:

コード:
Do
    If ??? Then
        Exit Do
        Using cnn As New SqlConnection("context connection=true")
            cnn.Open()
          (省略)
            cnn.Close()
        End Using
  End If
Loop




むぅ???Exit Do の後って、実行されるの?
未記入
ベテラン
会議室デビュー日: 2006/04/14
投稿数: 55
投稿日時: 2006-05-20 18:02
Do
If ??? Then
Exit Do
End If

Using cnn As New SqlConnection("context connection=true")
cnn.Open()
  (省略)
cnn.Close()
End Using
Loop


こう...ですかね?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-20 18:08
引用:

nobuさんの書き込み (2006-05-20 17:48) より:


はい、ストアドプロシージャです。
ということは、DO〜LOOPをぬけるならば、FOR 〜 NEXT を使うか、
Windowsアプリケーションで作り直すしかないということでしょうか?


どういう要求のシステムかわからないのでおおよそですが

Windowsのアプリが処理制御用のデーブルに終了フラグ
を立ててそれをこの更新プログラムの終了判定とすればできるかな

スキルアップ/キャリアアップ(JOB@IT)