• ベストアンサー

VB2008少し理解しました^^

3回目の質問です! お願いします。 まったく分からないところから、個人的な練習としての”足し算で答えが出させる”ところまで理解出来ました。 それで、次に進もうとしているのですが、上記の例題で入力して数字と答えが残っていく方法はデーターベースとかいうのを理解すれば良いのでしょうか? また、その記録を利用して必要なものを・・例えば3回目の計算と10回目の計算ではどちらが大きいか?・・というプログラムもデーターベースを利用してそこからデーターを取り出して必要な計算をさせるプログラムを作るということで良いのでしょうか? 初めてからまだ3回目の質問ということで、質問内容も素人内容だとは思いますが、貧乏でVB2008の本まで買う余裕がないので・・すみませんが誰かお付き合いして頂けませんでしょうか^^

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

  • ベストアンサー
回答No.4

> 私には無理です  分かりませんでした・・ 参考に書いたのは,MSDNという,Microsoftの一次情報源 (正確には日本語版なので英語版を一次情報とする二次情報源ですが) のURLでした。 最初の頃はわからないとは思いますが,MSDNの読み方がわかると宝の山になります。 > 残すだけではなく、質問にも書いたのですがそれを再度利用するようにしてみたいのです。 再度利用するというのは,プログラムを一度終了した後にもう一度起動した場合にも,元のデータを残したいということでしょうか。 これを実装するのは,結構手間のかかることです。 一番簡単な方法は, ・保持したい情報をシリアライズ可能なオブジェクトに保持させて,起動時にファイルからデシリアライズして終了時にファイルにシリアライズする。 ことなのですが,簡単に済ます代わりに.NET Frameworkに対する知識が必要になります。 このため,初心者の方にはまったくお勧めできません。 まずは,ファイルの入出力に慣れるところから始めるのがよいでしょう。 例えば, Dim col As List(Of Integer) ' 過去の履歴を保持するためのオブジェクト。新規データはAddで追加していく。 があるとして, ・出力 ' 出力ファイル名を決定する Dim outputFile As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "data.txt") Using writer As New StreamWriter(outputFile, False, Encoding.Default) ' 出力用のライタを作成する  For Each value As Integer In col ' 履歴に含まれる全ての値について...   writer.WriteLine(value) ' ライタに出力する  Next  writer.Close() ' 一応,ライタを閉じておく (End Usingで自動で閉じられるが)。 End Using ・入力 ' 入力ファイル名を決定する Dim inputFile As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "data.txt") If File.Exists(inputFile) Then ' 入力ファイルが存在すれば  Using reader As New StreamReader(inputFile, Encoding.Default, true) ' 入力用のリーダを作成する   Do    Dim line As String = reader.ReadLine() ' リーダから一行読む    If line Is Nothing Then Exit Do ' 最後まで読んだのであればループから抜ける    Dim value As Integer = 0    If Integer.TryParse(line, value) Then col.Add(value) ' その行がIntegerの値を書き込んだ物であれば,履歴に追加する   Loop  End Using End If のようなコード (上記は未テストに付きバグがある可能性アリ) を作り, ・起動時に入力を行う ・終了時に出力を行う とすれば,データを保存できます。 # どのように保存されたかは,マイドキュメント (WindowsXP) or ドキュメント (Windows Vista)にできる,data.txtを確認してください。 <MSDN> ・Path.Combine http://msdn.microsoft.com/ja-jp/library/system.io.path.combine.aspx ・Environment.GetFolderPath http://msdn.microsoft.com/ja-jp/library/system.environment.getfolderpath.aspx ・Environment.SpecialFolder http://msdn.microsoft.com/ja-jp/library/system.environment.specialfolder.aspx ・StreamWriter http://msdn.microsoft.com/ja-jp/library/f5f5x7kt.aspx ・Encoding.Default http://msdn.microsoft.com/ja-jp/library/system.text.encoding.default.aspx ・StreamWriter.Close http://msdn.microsoft.com/ja-jp/library/system.io.streamwriter.close.aspx ・File.Exists http://msdn.microsoft.com/ja-jp/library/system.io.file.exists.aspx ・StreamReader http://msdn.microsoft.com/ja-jp/library/akzyzwh9.aspx ・StreamReader.ReadLine http://msdn.microsoft.com/ja-jp/library/system.io.streamreader.readline.aspx ・Int32.TryParse http://msdn.microsoft.com/ja-jp/library/f02979c7.aspx ・List(Of T).Add http://msdn.microsoft.com/ja-jp/library/3wcytfd1.aspx

PrinApple
質問者

お礼

たくさん教えて頂いて有難うございます(ぺこ 早くそれらが使えるようにがんばります!

その他の回答 (4)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.5

こんにちは、 >貧乏でVB2008の本まで買う余裕がないので・ 本を買わなくとも、以下のホームページを読んで、理解でいれば いろいろなことができる様になりますよ http://homepage1.nifty.com/rucio/main/main.htm 基本的なことが、詳しく説明されているし、 サンプルも沢山あります。

PrinApple
質問者

お礼

今それで勉強していま~す^^

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1です。 例えばExcelであれば結果をシートに書き出す事で、コードの実行を停止した後でも それまでの値を引き出して利用する事は出来ます。 VBならテキストファイルに書き出すとかデータベースにするとか方法はありますが、 Excelで行なう方法よりもレベルが上がるかなと。 ⇒Excelでも同様の事は出来ます。 データベース講座 http://homepage1.nifty.com/rucio/main/VBdotNet/Database/index_db.htm 私も”やってみたい”と思い突き進んだ事もありますが、結局混乱したので ちょこちょこ進めてVBAも初級レベルになったかな位です。 ⇒昔Basic(X-BASIC)を少しいじっていたのが役だったとは思います。

PrinApple
質問者

お礼

お互いがんばりましょうね~ って・・はじめたばかりで偉そうに言えないけど^^

回答No.2

答えを残すだけが目的であればデータベースは不要です。 List(Of Integer)にAddしていけば残すことができます (プログラムの終了までですが)。

参考URL:
http://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx
PrinApple
質問者

お礼

リンク先に行ってみました! 私には無理です  分かりませんでした・・ #1さんも回答ありがとうございました 残すだけではなく、質問にも書いたのですがそれを再度利用するようにしてみたいのです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

今回のものに参考になるかはわかりませんが、 ボタンを1個用意する。 プロジェクト>参照の追加でCOMタブ。 Microsoft Scripting Runtime を追加する。 Private mydic As New Scripting.Dictionary Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim j As Integer i = mydic.Count mydic(i + 1) = 10 * i For j = 1 To mydic.Count MsgBox(j & "番目の値は" & mydic(j)) Next End Sub とかでも実行中は値を保持していたりします。 ⇒これが全てではなく、且つ正しいかは勉強不足ですけど。 VBAを少しやっているので何となくは出来た(?)位ですので、ご参考になるかどうか・・・ >初めてからまだ3回目の質問ということで、質問内容も素人内容だとは思いますが、貧乏でVB2008の本まで買う余裕がないので・・ 他の方はわかりませんが、私は参考書から初めました。 まず基本部分は押さえておかないとなりませんし。 別段2008が最新と言っても2005から初めても宜しいんじゃないでしょうか?

PrinApple
質問者

お礼

2005と2008の違いも分かりません>< 同じものだと思っていましたw

関連するQ&A