C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87254 の関連記事表示

<< 0 >>
■87254  DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/01(Tue) 19:43:58)
>

    分類:[VB.NET/VB2005 以降] 

    【挨拶】
    初めまして、Big7_8と申します。4/8よりVB.NETのcodingを開始しました新参者です。
    宜しくお願い致します。

    OS : win7 Professional 32bit
    言語 : Visual Basic ツール 2.7.0-beta3-62715-05

    【背景】
    これまではF-BASICを利用しており、win7上で正常に動作しておりました。しかし、4月上旬に
    解決不能の不具合(散々検討しましたが、プログラム上のバグではありません)を発見しまし
    た。ですが、同言語は既にサポートは終了している上に、win7以降は未対応。已む無く、
    開発言語を変更することに致しました。
    幸い、マイクロソフトさんがVB.NETを無償で提供されているので、4/8にダウンロードさせて
    頂いたのがスタートです。何分、オブジェクト指向のcodingは初めてなので、金城俊哉さんの
    「VisualBasic2017 パーフェクトマスター」を読みました。読んだつもりですが、実は全然
    解っておりません。解らないなりに、ネットの諸先輩方のコードを拝借して、ここまで来ま
    したが、以下の問題点に引っかかり1週間以上停滞しています。

    【やりたいこと】
    取り敢えず、サンプルデータの保存先及び本体の参照先は皆様の環境に合わせて変更してください。
    コードを見ればわかりますが、株価のデータベースです。
    DataGridViewを表示したら、編集モードに移行したい。
    今はまだ、codingしていませんがSub RnxCheck()の部分はマウスクリックによるイベントに
    変更する予定です。

    【問題点】
    私の拙い理解では
    Me.Show()で、DataGridViewを表示
    dgv.BeginEdit(True)で、編集モードに移行
    となるはずですが、編集モードに移行しているならば、その時点でプログラムの進行がストップし、
    MessageBox.Show("a1")は、即表示されないはず。もしかして、間違っていました?
    しかし、MessageBox.Show("a1")は、即実行されてしまいます。

    https://www.weblio.jp/content/DataGridView.BeginEdit+%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89

    を参照すると、「セルの型が IDataGridViewEditingCell インターフェイスを実装していない場合にも、
    false が返されます。」とあります。それで、
    Public Interface IDataGridViewEditingCell
    End Interface
    Implements IDataGridViewEditingCell
    を追加しましたが、状況は変わりません。
    私がインターフェイスの概念を理解していないのが原因と思われますが、どうすればいいのか
    超初心者の私には解決の糸口が見つかりません。
    諸先輩方、宜しくご指導の程、お願い致します。



    【サンプルデータ生成コード】

    Public Structure Jstock
    Public dteDate As Date
    Public N20O As Single
    Public N20H As Single
    Public N20L As Single
    Public N20C As Single
    End Structure


    Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim js As Jstock
    FileOpen(1, "e:\data\test4.dat", OpenMode.Random, , , Len(js))

    js.dteDate = #4/1/2014#
    js.N20O = 21657.87
    js.N20H = 21719.43
    js.N20L = 21591.39
    js.N20C = 21660.28
    FilePut(1, js, 1)
    js.dteDate = #4/2/2015#
    js.N20O = 21801.41
    js.N20H = 21917.35
    js.N20L = 21746.69
    js.N20C = 21778.74
    FilePut(1, js, 2)
    js.dteDate = #4/3/2016#
    js.N20O = 21801.41
    js.N20H = 21917.35
    js.N20L = 21746.69
    js.N20C = 21778.74
    FilePut(1, js, 3)
    js.dteDate = #4/4/2017#
    js.N20O = 21801.41
    js.N20H = 21917.35
    js.N20L = 21746.69
    js.N20C = 21778.74
    FilePut(1, js, 4)
    js.dteDate = #4/5/2018#
    js.N20O = 21801.41
    js.N20H = 21917.35
    js.N20L = 21746.69
    js.N20C = 21778.74
    FilePut(1, js, 5)

    FileGet(1, js, 1)
    Trace.WriteLine(js.dteDate)
    Trace.WriteLine(js.N20O)
    Trace.WriteLine(js.N20H)
    Trace.WriteLine(js.N20L)
    Trace.WriteLine(js.N20C)
    FileGet(1, js, 2)
    Trace.WriteLine(js.dteDate)
    Trace.WriteLine(js.N20O)
    Trace.WriteLine(js.N20H)
    Trace.WriteLine(js.N20L)
    Trace.WriteLine(js.N20C)

    FileClose(1)
    End Sub
    End Class



    【本体コード】

    Imports System
    Imports System.Drawing
    Imports System.Windows.Forms
    Imports System.IO


    Public Interface IDataGridViewEditingCell

    End Interface


    Public Structure Jstock
    Public dteDate As Date
    Public N20O As Single
    Public N20H As Single
    Public N20L As Single
    Public N20C As Single
    End Structure


    Public Class Config
    Public Shared dteDate As Date
    Public Shared N20O As Single
    Public Shared N20H As Single
    Public Shared N20L As Single
    Public Shared N20C As Single

    Public Shared RN1 As Integer
    Public Shared RNX As Integer
    Public Shared COUNT As Integer
    End Class


    Public Class Form1
    Inherits System.Windows.Forms.Form

    Implements IDataGridViewEditingCell

    Shared dgv As DataGridView

    Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim js As Jstock
    FileOpen(1, "e:\data\test4.dat", OpenMode.Random, , , Len(js))
    Config.RN1 = LOF(1) / Len(js)

    Config.RNX = Config.RN1


    Do While Config.RNX > 0
    DataGet()
    If Config.COUNT = 0 Then InitializeDGV()
    dgv.Rows.Clear()
    FillDGV()

    Me.Show()
    dgv.Select()
    dgv.CurrentCell = dgv(0, 4)
    dgv.BeginEdit(True)
    MessageBox.Show("a1")
    RnxCheck()
    Loop

    If Config.RNX = 0 Then
    FileClose(1)
    Application.Exit()
    End If

    End Sub

    Public Sub New()
    dgv = New DataGridView()
    dgv.Dock = DockStyle.Fill
    dgv.AllowUserToAddRows = False
    dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    Me.Controls.Add(dgv)
    End Sub


    Public Sub RnxCheck()
    Dim GetString As String = dgv.CurrentCell.Value

    Select Case GetString
    Case ""

    Case "<<"
    Config.RNX = Config.RNX - 100
    If Config.RNX < 1 Then Config.RNX = 1
    Case "<"
    Config.RNX = Config.RNX - 1
    If Config.RNX < 1 Then Config.RNX = 1
    Case "END"
    Config.RNX = 0
    Case ">"
    Config.RNX = Config.RNX + 1
    If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
    Case ">>"
    Config.RNX = Config.RNX + 100
    If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
    Case Else
    Config.RNX = Config.RN1 '仮
    End Select

    End Sub



    Sub InitializeDGV()
    Dim column1 As New DataGridViewTextBoxColumn
    column1.HeaderText = " 銘柄 "
    dgv.Columns.Add(column1)

    Dim column2 As New DataGridViewTextBoxColumn
    column2.HeaderText = "OPEN"
    dgv.Columns.Add(column2)

    Dim column3 As New DataGridViewTextBoxColumn
    column3.HeaderText = "HIGH"
    dgv.Columns.Add(column3)

    Dim column4 As New DataGridViewTextBoxColumn
    column4.HeaderText = "LOW"
    dgv.Columns.Add(column4)

    Dim column5 As New DataGridViewTextBoxColumn
    column5.HeaderText = "CLOSE"
    dgv.Columns.Add(column5)

    Config.COUNT = 1

    End Sub

    Sub FillDGV()
    dgv.Rows.Add("日付等", Config.dteDate, Config.RNX)
    dgv.Rows.Add()
    dgv.Rows.Add("日経平均", Config.N20O, Config.N20H, Config.N20L, Config.N20C)
    dgv.Rows.Add()
    dgv.Rows.Add("<<", "<", "END", ">", ">>")
    End Sub

    Sub DataGet()
    Dim js As Jstock

    FileGet(1, js, Config.RNX)
    Config.dteDate = js.dteDate
    Config.N20O = js.N20O
    Config.N20H = js.N20H
    Config.N20L = js.N20L
    Config.N20C = js.N20C
    End Sub

    End Class
親記事 /過去ログ150より / 関連記事表示
削除チェック/

■87255  Re[1]: DataGridViewの編集モード移行
□投稿者/ WebSurfer -(2018/05/01(Tue) 20:20:18)
    No87254 (big7_8 さん) に返信

    アップされているコードを読む気力がないのでハズレだったらスミマセンが・・・

    もし、SQL Server, Access, MySQL などのデータベースの一覧表示、編集、更新をする Windows Forms
    アプリを作成しているなら、一度 Visual Studio のウィザードを使って定番の構成のアプリを作ってみ
    てはいかがでしょう?

    質問者さんの使っているデーターベースでウィザードが使えるかどうか分かりませんが、使えなければ
    LocalDB とか SQL Server Express を使ってとりあえず作ってみて、ウィザードが自動生成するコード
    を見れば今後の開発の参考になると思います。

    DB が SQL Server の場合ですが、以下のチュートリアル、

    チュートリアル : データベースへのデータの保存 (単一テーブル)
    https://msdn.microsoft.com/ja-jp/library/0f92s97z(v=vs.120).aspx

    10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
    https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

    ・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet + TableAdapter
    を作って、それを利用してアプリを作ると、以下のページの図のような構造のアプリが、ほとんど自分で
    コードを書くこと無しに作れます。

    Windows フォーム アプリケーションでのデータへの接続
    https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx

    操作に慣れると 10 分もかからず作れるはずです。今回のような問題に悩むことはなくなり、開発工数は
    激減するはずです。保守工数も減るはずです。お試しください。
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87257  Re[2]: DataGridViewの編集モード移行
□投稿者/ Hongliang -(2018/05/01(Tue) 21:28:33)
    // コードは読んでいません。

    > DataGridViewを表示したら、編集モードに移行したい。

    > dgv.BeginEdit(True)で、編集モードに移行
    > となるはずですが、編集モードに移行しているならば、その時点でプログラムの進行がストップし、
    > MessageBox.Show("a1")は、即表示されないはず。もしかして、間違っていました?

    DataGridViewにおいて、編集モードとは、「そのセルが入力可能な状態であること」を指します。
    テキストを入力するセルであれば、キャレットが表示されていて、DELキーを押せばキャレットの後ろの文字が削除できる、というような状態ですね。
    プログラムコードの流れとは特に関係ありません。
    例えばF2キーを入力することでも編集モードに入ることができます。

    big7_8さんは“どういう機能を”“どういう理由で”「編集モード」というのに求められていますか?
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87269  Re[3]: DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/02(Wed) 15:40:40)
>
    No87257 (Hongliang さん) に返信


    Hongliang さん

    はじめまして、big7_8です。
    即返ありがとうございます。

    > // コードは読んでいません。

    コードが読み難くて申し訳ありませんでした。
    WebSurfer さんへの返信で再度、字下げ、コメントをつけて提示させて頂きました
    ので、ご覧ください。

    > DataGridViewにおいて、編集モードとは、「そのセルが入力可能な状態であること」を指します。
    > テキストを入力するセルであれば、キャレットが表示されていて、DELキーを押せばキャレットの後ろの文字が削除できる、というような状態ですね。
    > プログラムコードの流れとは特に関係ありません。

    そうだったのですか。てっきり編集モードになると同時にプログラムの進行がストップし、
    キー入力待機になると思い込んでおりました。


    > big7_8さんは“どういう機能を”“どういう理由で”「編集モード」というのに求められていますか?


    実はネットから日々データを取得しますが、ネットで取得できないデータもあり、それらの入力を編集モードで
    したいのです。この入力は当日だけでなく前日及び前々日に及びます。
    勿論、入力後、データを保存し、その後、前日のデータを DataGridViewに表示させたいのです。

    それで、行定義のところで、
    dgv.Rows.Add("<<", "<", "END", ">", ">>")
    レコードナンバーの変更のコントロールを用意しています。

    言葉足らずで申し訳ありませんでしたが、
    要は編集モードになると同時にキー入力待機状態にしたいのです。

    何かよい方法はありますか?


記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87268  Re[2]: DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/02(Wed) 15:08:23)
>
    No87255 (WebSurfer さん) に返信

    WebSurfer さん

    はじめまして、big7_8です。
    即返ありがとうございます。

    私もSQLの利用は考慮いたしました。ですが、オブジェクト指向のプログラム自体が初めてで
    とてもそこまでは頭がついていきそうにありません。

    それで、SQLについては将来の課題ということで・・・

    せっかくのアドバイスすみません。


    > アップされているコードを読む気力がないのでハズレだったらスミマセンが・・・

    コードが読み難くて申し訳ありませんでした。VB.NETからコピーした
    エディッター上では字下げされていたので、これでいいと思っておりましたが、
    UPしたら、 字下げが消去されていました。しかし、時間がなかったので
    そのままUPしてしまいました。後、コメントがないのも読み難い理由の一つかな
    と思います。それで、再度、字下げ、コメントをつけて提示させて頂きます。


    【サンプルデータ生成コード】
    '構造体の宣言
    Public Structure Jstock
       Public dteDate As Date
       Public N20O As Single
       Public N20H As Single
       Public N20L As Single
       Public N20C As Single
    End Structure


    Public Class Form1
       Inherits System.Windows.Forms.Form

       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         Dim js As Jstock
         FileOpen(1, "e:\data\test4.dat", OpenMode.Random, , , Len(js))

         'データ入力
         js.dteDate = #4/1/2014#
         js.N20O = 21657.87
         js.N20H = 21719.43
         js.N20L = 21591.39
         js.N20C = 21660.28
         FilePut(1, js, 1)
         js.dteDate = #4/2/2015#
         js.N20O = 21801.41
         js.N20H = 21917.35
         js.N20L = 21746.69
         js.N20C = 21778.74
         FilePut(1, js, 2)
         js.dteDate = #4/3/2016#
         js.N20O = 21801.41
         js.N20H = 21917.35
         js.N20L = 21746.69
         js.N20C = 21778.74
         FilePut(1, js, 3)
        js.dteDate = #4/4/2017#
        js.N20O = 21801.41
         js.N20H = 21917.35
        js.N20L = 21746.69
         js.N20C = 21778.74
         FilePut(1, js, 4)
         js.dteDate = #4/5/2018#
        js.N20O = 21801.41
         js.N20H = 21917.35
         js.N20L = 21746.69
        js.N20C = 21778.74
         FilePut(1, js, 5)

         'データ閲覧
         FileGet(1, js, 1)
        Trace.WriteLine(js.dteDate)
         Trace.WriteLine(js.N20O)
         Trace.WriteLine(js.N20H)
        Trace.WriteLine(js.N20L)
         Trace.WriteLine(js.N20C)
         FileGet(1, js, 2)
        Trace.WriteLine(js.dteDate)
         Trace.WriteLine(js.N20O)
         Trace.WriteLine(js.N20H)
        Trace.WriteLine(js.N20L)
         Trace.WriteLine(js.N20C)

         FileClose(1)
       End Sub
    End Class


    【本体コード】

    Imports System
    Imports System.Drawing
    Imports System.Windows.Forms
    Imports System.IO


    Public Interface IDataGridViewEditingCell

    End Interface

    '構造体の宣言
    Public Structure Jstock
       Public dteDate As Date
       Public N20O As Single
       Public N20H As Single
       Public N20L As Single
       Public N20C As Single
    End Structure

    'グローバル変数の宣言
    Public Class Config
       Public Shared dteDate As Date
       Public Shared N20O As Single
       Public Shared N20H As Single
       Public Shared N20L As Single
       Public Shared N20C As Single

       Public Shared RN1 As Integer
       Public Shared RNX As Integer
       Public Shared COUNT As Integer
    End Class


    Public Class Form1
       Inherits System.Windows.Forms.Form

       Implements IDataGridViewEditingCell

       Shared dgv As DataGridView

       Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

         Dim js As Jstock
         FileOpen(1, "e:\data\test4.dat", OpenMode.Random, , , Len(js))
         '最大レコード数
         Config.RN1 = LOF(1) / Len(js)
         '初期表示を最大レコードに設定
         Config.RNX = Config.RN1


         'RnxCheck()でENDを選択したとき、LoopをExit
         Do While Config.RNX > 0
           DataGet()
           '初回のみ列を定義
           If Config.COUNT = 0 Then InitializeDGV()
           '行の初期化
           dgv.Rows.Clear()
           '行を定義及びセルのデータ引き渡し
           FillDGV()

           'DataGridViewの表示
           Me.Show()
           dgv.Select()
           dgv.CurrentCell = dgv(0, 4)
           dgv.BeginEdit(True)
           MessageBox.Show("a1")
           '参照レコードナンバーの変更
           RnxCheck()
         Loop

         '終了(RnxCheck()でENDを選択)
         If Config.RNX = 0 Then
           FileClose(1)
           Application.Exit()
         End If

       End Sub

       'コンストラクタ-
       Public Sub New()
         dgv = New DataGridView()
         dgv.Dock = DockStyle.Fill
         dgv.AllowUserToAddRows = False
         dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
         Me.Controls.Add(dgv)
       End Sub


       '参照レコードナンバーの変更
       Public Sub RnxCheck()
         Dim GetString As String = dgv.CurrentCell.Value

         Select Case GetString
           Case ""

           Case "<<"
             Config.RNX = Config.RNX - 100
             If Config.RNX < 1 Then Config.RNX = 1
           Case "<"
             Config.RNX = Config.RNX - 1
             If Config.RNX < 1 Then Config.RNX = 1
           Case "END"
             Config.RNX = 0
           Case ">"
             Config.RNX = Config.RNX + 1
             If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
           Case ">>"
             Config.RNX = Config.RNX + 100
             If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
           Case Else
             Config.RNX = Config.RN1 '仮
         End Select

       End Sub


       '列を定義
       Sub InitializeDGV()
         Dim column1 As New DataGridViewTextBoxColumn
         column1.HeaderText = " 銘柄 "
         dgv.Columns.Add(column1)

         Dim column2 As New DataGridViewTextBoxColumn
         column2.HeaderText = "OPEN"
         dgv.Columns.Add(column2)

         Dim column3 As New DataGridViewTextBoxColumn
         column3.HeaderText = "HIGH"
         dgv.Columns.Add(column3)

         Dim column4 As New DataGridViewTextBoxColumn
         column4.HeaderText = "LOW"
         dgv.Columns.Add(column4)

         Dim column5 As New DataGridViewTextBoxColumn
         column5.HeaderText = "CLOSE"
         dgv.Columns.Add(column5)

         Config.COUNT = 1

       End Sub

       '行を定義
       Sub FillDGV()
         dgv.Rows.Add("日付等", Config.dteDate, Config.RNX)
         dgv.Rows.Add()
         dgv.Rows.Add("日経平均", Config.N20O, Config.N20H, Config.N20L, Config.N20C)
         dgv.Rows.Add()
         dgv.Rows.Add("<<", "<", "END", ">", ">>")
       End Sub


       Sub DataGet()
         Dim js As Jstock

         FileGet(1, js, Config.RNX)
         Config.dteDate = js.dteDate
         Config.N20O = js.N20O
         Config.N20H = js.N20H
         Config.N20L = js.N20L
         Config.N20C = js.N20C
       End Sub

    End Class
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87272  Re[3]: DataGridViewの編集モード移行
□投稿者/ WebSurfer -(2018/05/02(Wed) 18:40:57)
    No87268 (big7_8 さん) に返信

    最初の質問に、

    > 株価のデータベースです。

    とあったので、SQL Server, Access, MySQL などのデータベースからデータを取得すると思って
    いたのですが、データソースには質問者さんの独自構造のファイルを使って、しかもファイルア
    クセスには VB 独自のメソッドを使うということのようですね。

    で、そうして取得したデータを DataGridView に表示し、ユーザーが編集した結果を元のデータ
    ソース(独自構造のファイル)に反映させるということでしょうか?

    > 私もSQLの利用は考慮いたしました。ですが、オブジェクト指向のプログラム自体が初めてで
    > とてもそこまでは頭がついていきそうにありません。
    >
    > それで、SQLについては将来の課題ということで・・・

    そこのところは思い違いかと。オブジェクト指向の知識がないと SQL Server などのリレーショナ
    ルデータベースは扱えないということは全くないです。

    そこを「将来の課題」ではなくて今の課題として解決してはいかがですか? 間違いなくその方が、
    今やっていることと比べて、乗り越えなければならない壁は低い(多分はるかに低い)と思います。

    何故なら、SQL Server 等のデータベースにデータを入力できてしまえば、あとは Visual Studio
    のウィザードを使ってほとんど自力でコードを書くことなしに(簡単なものなら一行もコードは書
    かずに)アプリが作れるからです。

    SQL Server はちょっと敷居が高いかもしれませんが、であれば LocalDB とか Access を考えては
    いかがでしょう?

    どうしても今質問者さんが考えておられる方向で進みたいということですと、自分はついていけま
    せん。その場合は、すみませんが、このスレッドからは撤退させてください。
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87277  Re[3]: DataGridViewの編集モード移行
□投稿者/ WebSurfer -(2018/05/03(Thu) 11:12:25)
    No87268 (big7_8 さん) に返信

    【追伸】

    以前の他スレッド(url 下記)の話を思い出してのレスですが、SQL Server, Access, MySQL 等を
    使うことにどうしても抵抗があって踏み切れないなら、独自構造のファイルではなくて xml ファイ
    ルを使うという案はいかがですか?

    datagridviewからxmlへの出力について
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=87059

    上のスレッドのレス No87091 のように実装すれば「DataGridViewの編集モード移行」とかは考える
    必要はなく、ユーザーは DataGirdView を編集でき、編集結果は自動的に DataSet / DataTable に
    反映されます。

    そして、編集済みの DataSet / DataTable の内容はごく簡単なコードで xml ファイルに反映でき
    ます。(.NET のライブラリにその目的に利用できるものがありますので、自力でコードを書くのは
    かなり少なくて済みます)

    xml ファイルを使うのもダメということなら、せめて以下のように階層を分けて考えてみてはいか
    がですか?(BL はビジネスロジックの略で、レス No87091 で言うと (3) が該当します)

    DataGridView ⇔ BindingSource ⇔ DataSet / DataTable ⇔ BL ⇔ 独自構造ファイル

    そうすれば、話は「⇔ BL ⇔ 独自構造ファイル」部分だけを考えれば済みそうな気がします。
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87284  Re[4]: DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/03(Thu) 18:28:40)
>
    No87277 (WebSurfer さん) に返信

    WebSurfer さん

    big7_8です。
    度々、ご親切にご指導ありがとうございます。


    > 以前の他スレッド(url 下記)の話を思い出してのレスですが、SQL Server, Access, MySQL 等を
    > 使うことにどうしても抵抗があって踏み切れないなら、独自構造のファイルではなくて xml ファイ
    > ルを使うという案はいかがですか?

    xmlファイルのご提案ありがとうございます。
    しかし、その必要はもうありません。

    本日、SQL Server Express 2014 をダウンロードし、インストールしました。

    オープンソースのDBはいろいろありますが、Visual Studio 2017に相性のいいのは
    やはりMicrosoftの製品だと思います。
    で、同社のSQLを検索するとExpressが無償とのこと。
    DBとしての規模も小規模事業者向けとはいえ、10GBは十分な規模です。
    Express2017はOSが対応していないので、win7に対応するバージョンを探すと
    Express2014でした。

    ということで、無償提供していただいているMicrosoftに感謝しつつ、
    同製品をダウンロードし、インストールしました。
    まだ、インストールしただけで、何をどうすればいいか五里霧中ですが・・・


    > 上のスレッドのレス No87091 のように実装すれば「DataGridViewの編集モード移行」とかは考える
    > 必要はなく、ユーザーは DataGirdView を編集でき、編集結果は自動的に DataSet / DataTable に
    > 反映されます。

    ご指摘の通り、元々DBはデータの追加、変更、削除等を前提としたソフトですから、
    「DataGridViewの編集モ行ード移行」は不必要なのかもしれません。

    取り敢えず、しばらくはSQL Server Express 2014と格闘してみたいと思います。


    もしかしたら、DataGirdViewとSQLの連携等でまたご指導をお願いするかもしれません。

    尚、今後の方針としては
    @独自DBをSQLに移行する方法を試みる
    A独自DBでのDataGridViewの編集モ行ード移行する方法を模索する
    この2本立てで行くことにしたいと思います。


    WebSurfer さんには申し訳ありませんが、私としてはあっさり、当方の
    構築したDBを捨て切れないものがあります。
    まあ、仮に独自DBでうまく行っても、将来的にはSQLになるんでしょうが・・・


記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87285  Re[5]: DataGridViewの編集モード移行
□投稿者/ WebSurfer -(2018/05/03(Thu) 18:59:54)
    No87284 (big7_8 さん) に返信

    > 構築したDBを捨て切れないものがあります。

    そうであっても、アプリの構成は先のレスで書きましたように、

    DataGridView ⇔ BindingSource ⇔ DataSet / DataTable ⇔ BL ⇔ 独自構造ファイル

    が良いと思います。合わせて検討していただければ幸いです。
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87289  Re[6]: DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/05(Sat) 16:05:08)
>
    No87285 (WebSurfer さん) に返信

    WebSurfer さん

    big7_8です。
    追加のご提案ありがとうございます。


    > DataGridView ⇔ BindingSource ⇔ DataSet / DataTable ⇔ BL ⇔ 独自構造ファイル
    >
    > が良いと思います。合わせて検討していただければ幸いです。

    検討してみますとご返事したいところですが、
    現状は無理です。

    教えを乞うているのに、こんなことを申し上げるのは甚だ失礼だと思いますが、
    私はIT企業に勤めていた訳ではなく、ましてやSEでもありません。
    要は素人に毛が生えている程度のレベルなので、
    WebSurferさんのご提案に、私の技術レベルがついていけません。


    従って、現状ではご提案頂いたSQLについて理解を深めようと考えております。
    本日、アマゾンで
    「MCP教科書 SQL Server 2012」
    という書籍の購入を致しました。
    ネットでも、いろいろ見ています。ADO.NETの知識が不可欠であることが
    わかり、その辺を勉強中です。

    ということで、誠に申し訳ありませんが、少し長い目で見て頂けたらと思います。

記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87306  Re[7]: DataGridViewの編集モード移行
□投稿者/ palm tree -(2018/05/09(Wed) 15:22:08)
    2018/05/09(Wed) 15:27:52 編集(投稿者)

    big7_8さん、どうやら元の質問から大分脱線してしまいましたね。
    何だか、データベースを使え、とか、本題とは全く関係ないレスが付いていて気の毒です。

    Windowsフォームアプリは、基本的に、何かのイベントを以て処理が実行されると考えてください。
    通常は、ソフトはアイドル状態で、ボタンクリック等のイベントをトリガーとして動作が行われます。
    このため、ステートメントの途中で処理が止まる、ということはあり得ないことなのです。
    このため、まずはイベントについて学習することをお勧めします。

    これは、データベース云々以前の、押さえておかなければならない所ですので、まずはデータベースのことは忘れてください。


    #以下サイトは、結構分かりやすくVBを開設していますので、ご一読を。
     Visual Basic 中学校
      http://rucio.a.la9.jp/main/main.htm


    ところで、DataGridViewの「編集モード」って、具体的にどのような状態を意味していますか?
    何のためにDataGridViewを「編集モード」にしたいのでしょうか?
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87361  Re[8]: DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/15(Tue) 12:39:05)
>
    No87306 (palm tree さん) に返信

    palm tree さん

    返信が遅くなって申し訳ありません。


    > Windowsフォームアプリは、基本的に、何かのイベントを以て処理が実行されると考えてください。
    > 通常は、ソフトはアイドル状態で、ボタンクリック等のイベントをトリガーとして動作が行われます。
    > このため、ステートメントの途中で処理が止まる、ということはあり得ないことなのです。
    > このため、まずはイベントについて学習することをお勧めします。

    実は、イベントドリブン型のプログラムは初めてで、私も、

    Do While Config.RNX > 0
    Loop

    で制御構造にしたのが、間違いの元だと気が付きました。
    正直、「穴があったら入りたい」という心境です。


    > #以下サイトは、結構分かりやすくVBを開設していますので、ご一読を。
    >  Visual Basic 中学校
    >   http://rucio.a.la9.jp/main/main.htm

    ありがとうございます。
    実は、ちょうどこちらのサイトで再勉強させていただいている
    最中でした。


    > ところで、DataGridViewの「編集モード」って、具体的にどのような状態を意味していますか?
    > 何のためにDataGridViewを「編集モード」にしたいのでしょうか?

    すみません。この件は忘れてください。
    多分ですが、DataGridViewの表示が完了した時点で、編集モードに
    なっているのではないかと、今は考えております。
    イベントドリブン型のプログラムでは、この時点で次のイベント待機に
    なっているはずですので、

    Do While Config.RNX > 0
    Loop

    の制御構造を廃止。そして、

    '参照レコードナンバーの変更
       Public Sub RnxCheck()
         Dim GetString As String = dgv.CurrentCell.Value

         Select Case GetString
           Case ""

           Case "<<"
             Config.RNX = Config.RNX - 100
             If Config.RNX < 1 Then Config.RNX = 1
           Case "<"
             Config.RNX = Config.RNX - 1
             If Config.RNX < 1 Then Config.RNX = 1
           Case "END"
             Config.RNX = 0
           Case ">"
             Config.RNX = Config.RNX + 1
             If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
           Case ">>"
             Config.RNX = Config.RNX + 100
             If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
           Case Else
             Config.RNX = Config.RN1 '仮
         End Select

       End Sub

    この部分をマウスクリックイベントに変更すれば、問題は解決すると
    思われます。とは言え、対処療法で、当面の問題さえ解決すればいいのか
    と言えば、違うと思います。

    で、今はご提案頂いたサイトのみならず、書籍等で新ためて、
    VB.netの初歩の初歩を勉強しているところです。



    このサイトの皆様、不勉強なままでご質問していまい
    申し訳ありませんでした。


記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87263  Re[1]: DataGridViewの編集モード移行
□投稿者/ ななしん -(2018/05/02(Wed) 09:19:47)
    dgv.BeginEdit(True)を行っても、カレントセルが入力状態になるだけで、入力が確定するまで処理が中断するわけではありません。
    編集の終了を検知するのであれば、CellEndEditイベントを使用してください。
記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87270  Re[2]: DataGridViewの編集モード移行
□投稿者/ big7_8 -(2018/05/02(Wed) 16:37:07)
>
    No87263 (ななしん さん) に返信


    ななしん さん

    はじめまして、big7_8です。
    ご返信ありがとうございます。


    > dgv.BeginEdit(True)を行っても、カレントセルが入力状態になるだけで、入力が確定するまで処理が中断するわけではありません。

    Hongliang さんにも同様のご指摘をいただきました。
    では、 dgv.BeginEdit(True)の後、処理を中断させるにはどうすればいいのでしょうか?

    Thread.Sleepメソッドではフリーズした様に一切の操作が不能になるとありました。
    他にキー入力待機状態にする方法はありますでしょうか?



    > 編集の終了を検知するのであれば、CellEndEditイベントを使用してください。

    多分、今回の問題を解決した後に必要となる処理だと思います。勉強しておきます。

記事No.87254 のレス /過去ログ150より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -