質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

3回答

1569閲覧

[VB.NET]Loadした際にDataGridViewに入力があるかないかで処理を分けたい。

退会済みユーザー

退会済みユーザー

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/07/17 07:04

前提・実現したいこと

VisualBasicのLoadイベントでDataGridViewに入力があるなら編集モード
ないなら新規登録モードといったように処理を分けることは可能でしょうか?

非常にざっくりしており、わかりにくい質問で申し訳ございません。

DataGridViewはDB登録されているデータを表示しております。

発生している問題・エラーメッセージ

補足情報(FW/ツールのバージョンなど)

Visual Studio2017,SQL Server

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2020/07/17 07:13

「DataGridViewに入力があるなら」というのは、Load時にDBからデータを読み込んで、表示するものがあった場合、ということでしょうか。
退会済みユーザー

退会済みユーザー

2020/07/17 07:24

回答ありがとうございます。 そちらの認識で合っております!
YAmaGNZ

2020/07/17 07:51

どのようにして表示するデータを取得しているのでしょうか? また、その表示するデータが0件の時と1件以上の時の判別を行いたいということでしょうか?
退会済みユーザー

退会済みユーザー

2020/07/17 08:06

Do While dread.Read() Dim iIdx As Integer Dim ODNO As String, SGB As String, Syagai As String, MoveTime As String, SagyoPlace As String, StartTime As String, StopTime As String, BreakTime As String, Biko As String iIdx = dread.GetOrdinal("TGNODNUMBER") ODNO = dread(iIdx) iIdx = dread.GetOrdinal("TGNSBCD") SGB = dread(iIdx) iIdx = dread.GetOrdinal("TGNSYAGAI") Syagai = dread(iIdx) iIdx = dread.GetOrdinal("TGNITIME") MoveTime = dread(iIdx) iIdx = dread.GetOrdinal("TGNSBASYO") SagyoPlace = dread(iIdx) iIdx = dread.GetOrdinal("TGNKZIKOKU") StartTime = dread(iIdx) iIdx = dread.GetOrdinal("TGNSZIKOKU") StopTime = dread(iIdx) iIdx = dread.GetOrdinal("TGNKTIME") BreakTime = dread(iIdx) iIdx = dread.GetOrdinal("TGNBIKOU") Biko = dread(iIdx) DataGridView1.Rows.Add(ODNO, "", SGB, Syagai, MoveTime, SagyoPlace, StartTime, "", StopTime, BreakTime, Biko) Loop End Using で取得してセットしております! 0件か1件以上で判断したいです!
YAmaGNZ

2020/07/17 08:11

質問は編集できますのでそちらに記載してください。 それとは別に、そのループを通らなければ0件じゃないのですか? それを判別できるような変数を用意してif文で判断するだけですよ
退会済みユーザー

退会済みユーザー

2020/07/17 08:53

なんだ、結局、前のスレッドの私の回答は何の役ににも立ってなかったということのようですね。
guest

回答3

0

ベストアンサー

遣りたい事はこんな感じではないでしょうか。

VB.net

1'(Test_Sample_Miniature) 2'(Flag設定) 3dim strAddorEditFlag as string = "ADD" 4' 5Do While dread.Read() 6 Dim iIdx As Integer 7 Dim ODNO As String, SGB As String, Syagai As String, MoveTime As String, SagyoPlace As String, StartTime As String, StopTime As String, BreakTime As String, Biko As String 8 iIdx = dread.GetOrdinal("TGNODNUMBER") 9101112 DataGridView1.Rows.Add(ODNO, "", SGB, Syagai, MoveTime, SagyoPlace, StartTime, "", StopTime, BreakTime, Biko) 13 strAddorEditFlag = "EDIT" 14Loop 15'(追加行の表示/非表示) 16if strAddorEditFlag = "EDIT" then 17 Me.DataGridView1.AllowUserToAddRows=False 18 Me.dataGridView1.AllowUserToDeleteRows = False 19else 20 Me.DataGridView1.AllowUserToAddRows=True 21 Me.dataGridView1.AllowUserToDeleteRows = False 22end if

※AllowUserToDeleteRows=Falseで削除できなくしていますが無くてOK。
この部分は運用(入力動作)に係わってきますので、なかなか適切なアドバイスは難しくなると思いますので、参考程度になるかと思われます。

投稿2020/07/17 19:52

tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

LoadイベントにおいてDBからのデータを表示する処理までされているのであれば、

VB

1Dim dt As DataTable = CType(DataGrid1.DataSource, DataTable) 2If dt.Rows.Count = 0 Then 3 ' 新規登録モードの処理 4 : 5Else 6 ' 編集モードの処理 7 : 8End If

みたいな感じで分岐できると思います。

投稿2020/07/17 07:54

編集2020/07/17 07:55
KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/17 07:58

ありがとうございます! 例えばなんですが、新規登録モードでButton1を押すと新規登録の処理 編集モードでButton1を押すと編集処理といったように処理したいのですが、そのような方法は可能でしょうか?
KoichiSugiyama

2020/07/17 08:11

Button1のクリックイベント内で、同じようにDataGridViewのデータ数を調べて処理を分岐すれば可能ではあると思いますが、他の条件の情報が不足していますので、そのまま適用すると不具合が発生する可能性もあり一概にそれでよいとは言いにくいです。 例えば新規登録モードで何件かデータ登録した後にButton1を押した場合や、編集モードですべてのデータを削除した後Button1を推した場合などをどうしたいかによって、処理は変わってきます。そのあたり仕様(もしくはやりたいこと)をじっくり検討してみてはいかがでしょうか。
guest

0

質問者さんの過去スレッドで何度か同じことを言いましたが・・・

DataGridView を使っての DB への非接続型データアクセスで編集・更新を行う場合は、以下の記事の図2の DataSet の左側に BindingSource / BindingNavigator 経由で DataGridView を接続し操作します。

DB 設計者のための明解 ADO.NET 第 1 回
https://docs.microsoft.com/ja-jp/previous-versions/cc482903(v=msdn.10)?redirectedfrom=MSDN

質問者さんは DataGridView のセルに直接 DB のデータを読み込んで表示している、即ち図2で言う DataSet も DataAdapter も使ってないのでしょうけど、それで DB の編集・更新はできません。

100% 不可能とまでは言いませんが、ここでこういう質問をしていることから考えると、とても無理だと思うのですが。勉強のためやってみたいということでも、やる価値があるのかはなはだ疑問です。

投稿2020/07/18 01:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問