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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

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

Q&A

解決済

1回答

1295閲覧

VB.NETでDataTableを扱う

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

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

0グッド

0クリップ

投稿2022/06/22 07:59

編集2022/06/22 08:20

VB.NETを勉強しています。DataTableでメモリ上にデータベースが作成できるとどなたかのブログで拝見しました。
DataTableはまだ使いこなせていないのですがメモリ上というのはVisual Studio Communityで作成した場合そちらに保存されるということなのでしょうか?
exe化した場合、どちらに保存されるのでしょうか?

やりたいことは、薬の処方記録で分量が変わった場合や薬の変更した場合の記録がしたいです。
Sqlite3を扱ってみたいのですが、最初はDataTableのほうがいいのかなと思い勉強中です。

VB.NET

1Public Class Form1 2 3 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 4 'しましま模様 5 DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender 6 '列数・行数を指定 7 DataGridView1.ColumnCount = 9 8 DataGridView1.RowCount = 5 9 10 DataGridView1.Columns(0).Width = 40 11 DataGridView1.Columns(1).Width = 150 12 DataGridView1.Columns(2).Width = 80 13 DataGridView1.Columns(3).Width = 80 14 DataGridView1.Columns(4).Width = 80 15 DataGridView1.Columns(5).Width = 80 16 DataGridView1.Columns(6).Width = 150 17 DataGridView1.Columns(7).Width = 80 18 19 Dim colCombo As New DataGridViewComboBoxColumn 20 21 colCombo.HeaderText = "薬" 22 colCombo.Width = "150" 23 colCombo.Items.Add("〇〇1") 24 colCombo.Items.Add("〇〇2") 25 colCombo.Items.Add("〇〇3") 26 colCombo.Items.Add("〇〇4") 27 colCombo.Items.Add("〇〇5") 28 Dim value1 = DataGridView1.Columns.Add(colCombo) 29 30 '列名を指定 31 DataGridView1.Columns(0).HeaderText = "No." 32 DataGridView1.Columns(1).HeaderText = "薬" 33 DataGridView1.Columns(2).HeaderText = "現在分量(g)" 34 DataGridView1.Columns(3).HeaderText = "前回分量(g)" 35 DataGridView1.Columns(4).HeaderText = "前々回分量(g)" 36 DataGridView1.Columns(5).HeaderText = "差(g)" 37 DataGridView1.Columns(6).HeaderText = "更新日" 38 DataGridView1.Columns(7).HeaderText = "経過日数(日)" 39 40 41 42 'セルのデータを5行分設定 43 DataGridView1.Rows(0).Cells(0).Value = 1 44 DataGridView1.Rows(0).Cells(1).Value = "〇〇1" 45 DataGridView1.Rows(0).Cells(2).Value = "1.75" 46 DataGridView1.Rows(0).Cells(6).Value = "2021/11/11" 47 DataGridView1.Rows(0).Cells(7).Value = DateDiff("d", DataGridView1.Rows(0).Cells(6).Value, Now) 48 DataGridView1.Rows(1).Cells(0).Value = 2 49 DataGridView1.Rows(1).Cells(1).Value = "〇〇2" 50 DataGridView1.Rows(1).Cells(2).Value = "0.9" 51 DataGridView1.Rows(1).Cells(6).Value = "2021/8/3" 52 DataGridView1.Rows(1).Cells(7).Value = DateDiff("d", DataGridView1.Rows(1).Cells(6).Value, Now) 53 DataGridView1.Rows(2).Cells(0).Value = 3 54 DataGridView1.Rows(2).Cells(1).Value = "〇〇3" 55 DataGridView1.Rows(2).Cells(2).Value = "0.9" 56 DataGridView1.Rows(2).Cells(6).Value = "2021/8/3" 57 DataGridView1.Rows(2).Cells(7).Value = DateDiff("d", DataGridView1.Rows(2).Cells(6).Value, Now) 58 DataGridView1.Rows(3).Cells(0).Value = 4 59 DataGridView1.Rows(3).Cells(1).Value = "〇〇4" 60 DataGridView1.Rows(3).Cells(2).Value = "0.6" 61 DataGridView1.Rows(3).Cells(6).Value = "2022/5/23" 62 DataGridView1.Rows(3).Cells(7).Value = DateDiff("d", DataGridView1.Rows(3).Cells(6).Value, Now) 63 DataGridView1.Rows(4).Cells(0).Value = 5 64 DataGridView1.Rows(4).Cells(1).Value = "〇〇5" 65 DataGridView1.Rows(4).Cells(2).Value = "0.3" 66 DataGridView1.Rows(4).Cells(6).Value = "2022/1/7" 67 DataGridView1.Rows(4).Cells(7).Value = DateDiff("d", DataGridView1.Rows(4).Cells(6).Value, Now) 68 End Sub 69 70 71 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 72 'データテーブル作成 73 Dim DataTable1 As New DataTable 74 DataGridView1.DataSource = DataTable1 75 76 'ラベルに出力 77 Label1.Text = "登録済" 78 MsgBox("登録完了!いつもお疲れ様!") 79 80 End Sub 81 82 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 83 MsgBox("GOOD BY!") 84 Me.Close() 85 86 End Sub 87 88 Private Sub Button3_Click(sender As Object, e As EventArgs) 89 '薬追加 90 DataGridView1.Rows.Add() 91 92 '登録した行番号を取得 93 Dim maxRowNum As Integer 94 maxRowNum = DataGridView1.Rows.Count 95 96 '最終行に値を仮の値をセット 97 DataGridView1.Rows(maxRowNum - 1).Cells(0).Value = maxRowNum 98 DataGridView1.Rows(maxRowNum - 1).Cells(1).Value = TextBox1.Text 99 DataGridView1.Rows(maxRowNum - 1).Cells(2).Value = TextBox2.Text 100 DataGridView1.Rows(maxRowNum - 1).Cells(3).Value = "" 101 102 '更新日追加 103 '列が自動的に作成されないようにする 104 DataGridView1.AutoGenerateColumns = False 105 106 'DataGridViewTextBoxColumn列を作成する 107 Dim textColumn As New DataGridViewTextBoxColumn() 108 109 textColumn.DataPropertyName = "" 110 111 'ヘッダーを設定する 112 textColumn.HeaderText = "更新履歴" 113 114 '列を追加する 115 DataGridView1.Columns.Add(textColumn) 116 117 End Sub

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

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

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

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

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

YAmaGNZ

2022/06/22 08:37

exe化した場合終了したらどこにも残りません
KOZ6.0

2022/06/22 08:44

再利用したいのなら WriteXml で書き出し、次回 ReadXml で読み込むとよいです。
退会済みユーザー

退会済みユーザー

2022/06/22 22:15

ありがとうございます。 exe化したら残らないんですね。 XMLファイルを利用との事で調べましたがXML特有のコードが必要なんですかね?VBAに慣れている自分にとって使い訳簡単ですかね?
退会済みユーザー

退会済みユーザー

2022/06/23 06:57

質問者さん、その後無言ですが、追加の質問に回答したでそれに対するフィードバックを返してください。このスレッドの問題・課題が解決できなたらクローズしてください。無言で放置は NG です。
退会済みユーザー

退会済みユーザー

2022/06/23 07:01

すみません。まだ完成していなく、ご指示いただいたものが高度すぎて勉強していました。
guest

回答1

0

ベストアンサー

DataTableはまだ使いこなせていないのですがメモリ上というのはVisual Studio Communityで作成した場合そちらに保存されるということなのでしょうか?

Visual Studio は関係ないです。

exe化した場合、どちらに保存されるのでしょうか?

その exe が実行時に確保した PC のメモリです。なので exe を終了すると消えてしまいます。質問者さんが期待するような永続的な保存はされません。

Sqlite3を扱ってみたいのですが、最初はDataTableのほうがいいのかなと思い勉強中です。

SQLite などのデータベースが使えるならそれを使ってください。

Visual Studio を使っているなら SQL Server の方が使いやすいと思います。開発用の SQL Server (LocalDB) が Visual Studio と一緒にインストールされていると思いますので。

データベースを使うのが敷居が高いと思うのなら CSV ファイルを使っても良いと思います。具体例は以下の記事を見てください。

CSV ファイルを DataGridView に表示
http://surferonwww.info/BlogEngine/post/2020/09/11/show-date-in-csv-file-on-datagridview.aspx

何にせよ DataTable は exe を終了するとメモリから消えてしまうので質問者さんの目的には使えません。exe を終了する前に、DataTable の内容をデータベースなり CSV ファイルなりに保存する必要があります。


【追記】

ファイルに保存するなら CSV でなくても XML でも良いです。具体例は以下の記事を見てください。

XML ファイルを DataGridView に表示
http://surferonwww.info/BlogEngine/post/2019/04/26/show-content-of-xml-file-on-datagridview.aspx

投稿2022/06/22 09:37

編集2022/06/22 09:44
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2022/06/22 22:20

ありがとうございます。 exe化したら残らないんですね。保存できるかなとDataTable勉強していましたが皆さまはどう使いこなせているのか疑問です。  CSV ファイルを DataGridView に表示はやってみたいです。ただご提示いただいたサイトを見ましたが私に書けるかどうか…。いきづまったらまた質問させてもらっていいでしょうか?
退会済みユーザー

退会済みユーザー

2022/06/23 01:02 編集

> 保存できるかなとDataTable勉強していましたが皆さまはどう使いこなせているのか疑問です。 上の回答に書いたように「exe を終了する前に、DataTable の内容をデータベースなり CSV ファイルなりに保存する」のです。 以下の記事の「非接続型のデータ更新」のセクションの図1と図2を見てください。文章は読まなくてもいいので図だけ見てください。 DB 設計者のための明解 ADO.NET 第 1 回 https://docs.microsoft.com/ja-jp/previous-versions/cc482903%28v=msdn.10%29 図2の DataSet (中に DataTable がある) の右側に BindingSource / BindingNavigator 経由で DataGridView が接続されていると思ってください。 ユーザーが DataGridView を操作(行の削除・追加・訂正)した結果は図1にあるように DataSet / DataTable に反映されます。ユーザーの編集操作が終わったら Update メソッドで図1の編集結果が一度に DB に反映されます。そういうアプリが簡単に作れるようにできているのです。 勉強してください。そうすれば何の疑問もなく使いこなせるはずです。 > CSV ファイルを DataGridView に表示はやってみたいです。ただご提示いただいたサイトを見ましたが私に書けるかどうか…。いきづまったらまた質問させてもらっていいでしょうか? それは良いですけど、その際は新たに別のスレッドを立てて質問してください。ただ、その前に一度 Visual Studio のウィザードを使って SQL Server (LocalDB) をデータソースに使った定番の構成のアプリを作ってみることをお勧めします。 このスレッドでの疑問・課題「どちらに保存されるのでしょうか?」には答えています。答えになっていたらベストアンサーをつけてクローズしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問