DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomal.NetでのIPv6の比較(5) | Nomal追加コントロールのtabindex値を既存の間に設定する方法(1) | Nomal.Net 5.0 におけるDLL参照問題?(7) | NomalVB.net非同期処理でtextboxに出力したい(2) | NomalToolStripStatusLabelの空白部分を埋めたい(2) | NomalOracle への OleDb 接続に失敗する(3) | Nomal正規表現で株価を取得したい(1) | Nomal親スレッドへ処理の移譲(7) | Nomalデザイナで編集・チェックアウトキャンセルすると(3) | NomalVB.NETで作成したDLLをVB6.0から呼び出す(3) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(4) | NomalクラスによるGetBytes関数のエンディアンの違い(2) | Nomal.Net 5.0 におけるServiceControllerの代替クラス(3) | Nomal[VB.NET]Excelのプロセスが終了しない(2) | NomalC#をVBに変換した際の強制的な参照渡し(2) | Nomal新たにshowしたフォームでのボタンのクリック(5) | Nomalリッチテキストボックスの文字を太文字にしたい(2) | NomalVB.netにおける固定長出力方法(3) | NomalDataObjectの使いまわし(5) | NomalLIstview のDataSource(2) | NomalClassの作り方(2) | NomalOpenFileDialogの初期ファイル名の表示が変(1) | NomalVB.NETのVBA化(2) | Nomal改行のコード(7) | NomalGoogle翻訳の結果の取得(2) | NomalStopwatchクラスのElapsedMillisecondsの挙動(2) | Nomal.net Chartで二重ドーナツグラフの作り方(3) | Nomalexeをショートカットから起動した場合のエラー(2) | Nomalデスクトップ と Desktop(6) | Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(3) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalDrawBezierの使い方について(7) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalGROUPBOXの複製について(vb.net)(1) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalAccess OLEでExecuteNonQuery(3) | NomalKeyDownでの右コントロールキーイベント(2) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalDataGridViewの行番号(7) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | Nomal自分自身を呼び出すのはOKですか(1) | NomalWebBrowser Control foreachで値が消える(2) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | NomalWebBrowser Controlを使って、任意の値を取得(5) | NomalEditボックスに簡体字をセットする方法(2) | NomalList型でエラーが起きてしまい・・・(1) | Nomalフォルダ内の全ての容量を取得したい(4) | NomalWebClientが上手く動かない(2) | Nomal共変性と反変性ってこういうこと?(4) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalLINQの拡張メソッドの定義(1) | Nomalこんな演算子初めて見ました。(5) | Nomalプロセスからウインドウを取得(4) | Nomalフォーム外のカーソルの変更(2) | NomalLINQのメソッド構文の書き方(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | Nomalラムダ式の勉強中(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | NomalNewの使い方間違ってますか?(4) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalC#をVBに変換(2) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalCatch時のex.StackTraceの情報(3) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalPictureBox.Locationのキャンセル(3) | NomalJOIN操作の構文エラー(4) | NomalVisualStudioでマクロ(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalRDP接続でのネットワーク帯域制限(0) | NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalDrawImage でメモリ不足エラー(3) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalCode128でバーコードが読み取れない(8) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | NomalVC++ → VB.Netに変換時に文法エラー(2) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalVb.netからAccessへの接続について(3) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal令和の日付への対応(3) |



■記事リスト / ▼下のスレッド
■34355 / 親記事)  RichTextBoxで入力文字の自動折り返しを止めたい
□投稿者/ 勉強中 一般人(1回)-(2019/11/04(Mon) 09:26:45)
  • アイコン環境/言語:[Windwos10 64bit / VS2019 C#、.NET Framework 4.7.2] 
    分類:[.NET] 

    RichTextBoxに入力すると、BOXの端まで表示されずに途中で改行されてしまうことを止めたいのですが、方法がわからずご教示願います。


    入力文字入力文字入力文字入力文字入力文字123456|
    78910                     |
                              |

       ↓ こうならず、以下になる。

    入力文字入力文字入力文字入力文字入力文字      |
    12345678910               |
                              |

違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■34356 / ResNo.1)  Re[1]: RichTextBoxで入力文字の自動折り返しを止めたい
□投稿者/ 魔界の仮面弁士 大御所(1248回)-(2019/11/04(Mon) 20:02:30)
  • アイコンNo34355に返信(勉強中さんの記事)
    > RichTextBoxに入力すると、BOXの端まで表示されずに途中で改行されてしまうことを止めたいのですが、方法がわからずご教示願います。

    過去ログの No32155 などはどうでしょう。

    https://dobon.net/vb/bbs/log3-55/32152.html
違反を報告
引用返信
■34358 / ResNo.2)  Re[2]: RichTextBoxで入力文字の自動折り返しを止めたい
□投稿者/ 勉強中&C#初心者 一般人(1回)-(2019/11/04(Mon) 20:50:23)
  • アイコンNo34356に返信(魔界の仮面弁士さんの記事)
    > ■No34355に返信(勉強中さんの記事)
    >>RichTextBoxに入力すると、BOXの端まで表示されずに途中で改行されてしまうことを止めたいのですが、方法がわからずご教示願います。
    >
    > 過去ログの No32155 などはどうでしょう。
    >
    > https://dobon.net/vb/bbs/log3-55/32152.html

    返信ありがとうございます。

    VBでしたので、■34357側のサンプルで試してみましたが、残念ながら効果がありませんでした。
    ※MyEditWordBreakProc は呼び出されていました。

違反を報告
引用返信
■34364 / ResNo.3)  【報告】この投稿はマルチポストです
□投稿者/ (報告) 大御所(271回)-(2019/11/05(Tue) 21:31:32)
  • アイコンこの投稿はマルチポストです。もし元記事の投稿者にマルチポストの心当たりがない場合は、すぐに返信でお知らせください。

    ●マルチポストされている場所
    https://social.msdn.microsoft.com/Forums/ja-JP/8a967562-1283-4483-b20d-71767dbfa5af/12522124831248112486124611247312488125081248312463124731239812?forum=csharpgeneralja

    ----------
    この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのルールについて」をお読みください。

    ●書き込みのルールについて
    https://dobon.net/vb/bbs/index.html
違反を報告
引用返信
■34369 / ResNo.4)  Re[3]: RichTextBoxで入力文字の自動折り返しを止めたい
□投稿者/ 魔界の仮面弁士 大御所(1252回)-(2019/11/06(Wed) 22:28:58)
  • アイコンNo34358に返信(勉強中&C#初心者さんの記事)
    > >>RichTextBoxに入力すると、BOXの端まで表示されずに途中で改行されてしまうことを止めたいのですが、方法がわからずご教示願います。
    >>過去ログの No32155 などはどうでしょう。
    > VBでしたので、■34357側のサンプルで試してみましたが、残念ながら効果がありませんでした。

    それでは No34263 はどうでしょうか?
    ( MsftEdit.DLL ではなく、従来の RichEd20.DLL がロードされるようにする)
違反を報告
引用返信
■34375 / ResNo.5)  Re[4]: RichTextBoxで入力文字の自動折り返しを止めたい
□投稿者/ 勉強中&C#初心者 一般人(2回)-(2019/11/07(Thu) 19:40:45)
  • アイコンありがとうございます、解決致しました。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34372 / 親記事)  ラムダ式の勉強中
□投稿者/ VBはじめました 一般人(17回)-(2019/11/07(Thu) 10:24:48)
  • アイコン環境/言語:[VisualStudio2017 VB.net] 
    分類:[.NET] 

    ラムダ式の勉強をはじめました(下記のコードに対する質問)
    (質問1)
    コメントの@とAをDelegateで書くと、@−DとA−Dの形になると
    思いますが、あってますか?(動作は確認したのでなんとか同じ動きになります)
    もっと、適切な書き方があれば教えてください。

    (質問2)
    コメントの@を1行で書くと、@-1行になるとおもいますが、
    Aを1行で書くことはできない。であってますか?
    https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/procedures/lambda-expressions
    を見ると、ラムダ式は、ステートメントに含める必要があると記載されているので
    1行で書けないと考えたのですが、あってますか?

    Public Class TestClass
    Sub Test()
    Dim increment1 = Function(x) x + 1 '@
    Console.WriteLine(increment1(1))

    Console.WriteLine((Function(num As Integer) num + 1)(1)) '@-1行

    Dim writeline1 = Sub(x) Console.WriteLine(x) 'A
    writeline1("Hello")

    '@をDelegateで書いたもの
    Dim increment As New DelegateTest_TestClass
    Dim d1 As TestDelegateF = AddressOf increment.Method1 '@-D

    Console.WriteLine(d1(1))
    Dim d3 As SampleDelegateS = AddressOf increment.Method3 'A-D
    d3("Hello")
    End Sub
    End Class
    Public Delegate Function TestDelegateF(x As Integer) As Integer
    Public Delegate Sub TestDelegateS(x As String)

    Public Class DelegateTest_TestClass
    Public Function Method1(x As Integer) As Integer
    Return x + 1
    End Function
    Public Sub Method3(x As String)
    Console.WriteLine(x)

    End Sub
    End Class
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34373 / ResNo.1)  Re[1]: ラムダ式の勉強中
□投稿者/ 魔界の仮面弁士 大御所(1253回)-(2019/11/07(Thu) 14:11:35)
  • アイコンNo34372に返信(VBはじめましたさんの記事)
    > ラムダ式の勉強をはじめました(下記のコードに対する質問)
    投稿モードが「通常モード」の場合、HTML の特性上
    連続した空白が一つにまとめられ、行頭空白は失われます。

    コード内のインデントを残す場合は、投稿時に
    「図表モード」を選択してください。


    > コメントの@とAをDelegateで書くと、@−DとA−Dの形になると
    > 思いますが、あってますか?(動作は確認したのでなんとか同じ動きになります)

    いいえ。x のデータ型が明示されていないので、@のコードは
    Option Strict On モードではコンパイルエラーになりますし、
    Option Strict Off では、x が As Object としてコンパイルされます。

    そのため、@に相当するデリゲートの引数と戻り値は
      (x As Integer) As Integer
    ではなく
      (x As Object) As Object
    です。


    > もっと、適切な書き方があれば教えてください。

    @で、引数と戻り値が Integer であることを明示するために、
    下記のように書くことができます。

    Dim increment1 = Function(x As Integer) x + 1
    Dim increment1 As TestDelegateF = Function(x As Integer) x + 1
    Dim increment1 As TestDelegateF = Function(x) x + 1
    Dim increment1 As Func(Of Integer, Integer) = Function(x) x + 1



    > Dim d3 As SampleDelegateS = AddressOf increment.Method3 'A-D
    > Public Delegate Sub TestDelegateS(x As String)

    SampleDelegateS というのは
    TestDelegateS の誤記でしょうか。


    提示されたコードでは、クラスのインスタンスメソッドを割り当てていますが、
    Module 内のメソッドや Shared なメソッドを割り当てることもできます。

    Dim method As Action = AddressOf Console.WriteLine


    またイベントハンドラと同様、一つのデリゲートに複数のメソッドを割り当てることもできます。

    Sub Main()
      Dim method = DirectCast(System.Delegate.Combine(
        New System.Action(Sub() System.Console.WriteLine("ABC")),
        New System.Action(AddressOf System.Console.WriteLine),
        New System.Action(Sub() System.Console.WriteLine("XYZ")),
        New System.Action(AddressOf Now.ToString),
        New System.Action(Sub() MsgBox("マルチキャストデリゲート"))),
        System.Action)
      method()
    End Sub


    > (質問2)
    > コメントの@を1行で書くと、@-1行になるとおもいますが、
    > Aを1行で書くことはできない。であってますか?

    Aを単行とするなら、このように書けます。

    Call (Sub(x) Console.WriteLine(x))("Hello")
違反を報告
引用返信
■34374 / ResNo.2)  Re[2]: ラムダ式の勉強中
□投稿者/ VBはじめました 一般人(18回)-(2019/11/07(Thu) 18:27:55)
  • アイコン魔界の仮面弁士さん

    いつも、丁寧に有難う御座います。
    色々、ググって整理したつもりが、スカスカでした。
    VBAで、型を意識する癖がついていないので、苦労しています。

    Call文なんて、言われてみれば、納得できるのですが、思いつきもしませんでした。
    何度も、熟読してものにしたいと考えます。

    本当に、ご丁寧に有難う御座います。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34345 / 親記事)  WebClientで、短期間にDownloadStringAsyncを実行したい
□投稿者/ VBはじめました 一般人(10回)-(2019/10/29(Tue) 11:48:38)
  • アイコン環境/言語:[VB.net] 
    分類:[.NET] 

    Webから、Htmlデータをダウンロードするプログラムを作ろうとしています。
    どうしても、Completedする前に、別のページのダウンロードを始める(その場合、ダウンロード中のデータは破棄してよい)必要があります。

    DownloadStringAsyncの前にCancelAsyncを実行すれば可能かと思ったのですが、
    System.NotSupportedException: 'WebClient は同時 I/O 操作をサポートしません。'とエラーが発生します。

    但し、キャンセル場合もあります。(不安定)
    どのようにすれば、確実にキャンセルできるのでしょうか?
    詳しい方いらっしゃいまいたら教えてください。
    サンプルのコードは下記になります。(フォームにボタン一つ貼り付けている)
    3回に一回ぐらいは成功する

    Imports System.Net
    Imports System.Text

    Public Class Form1
    Dim myUri As Uri = New Uri("https://www.yahoo.co.jp/")
    Dim HtmlData As String
    WithEvents myWebClient As New WebClient
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    myWebClient.Encoding = Encoding.UTF8
    myWebClient.DownloadStringAsync(myUri)
    myWebClient.CancelAsync()
    myWebClient.DownloadStringAsync(myUri) ←ここでエラー発生!
    End Sub
    Private Sub myWebClient_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs) Handles myWebClient.DownloadStringCompleted
    If e.Error Is Nothing Then
    HtmlData = CStr(e.Result)
    MsgBox(HtmlData.Substring(0, 1000))
    ElseIf e.Cancelled Then
    MsgBox("キャンセルボタンが押されました。")
    End If
    End Sub
    End Class


違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34370 / ResNo.1)  Re[1]: WebClientで、短期間にDownloadStringAsyncを実行したい
□投稿者/ shu 大御所(489回)-(2019/11/07(Thu) 08:49:19)
  • アイコンNo34345に返信(VBはじめましたさんの記事)

    WebClientのインスタンスを別に作るのでは
    うまくいきませんでしょうか?
違反を報告
引用返信
■34371 / ResNo.2)  Re[2]: WebClientで、短期間にDownloadStringAsyncを実行したい
□投稿者/ VBはじめました 一般人(16回)-(2019/11/07(Thu) 10:14:24)
  • アイコンshuさん お返事有難う御座います

    IsBusyで状態を確認してmyWebClient.CancelAsync()を
    実行していましがた。どうしても、ロストするので、
    shuさんのおっしゃる通り、コストがかかっても
    インスタンスを新しく作ることにします。

    有難うございました。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34365 / 親記事)  vb.net+SQLiteで複数データベースファイルへのトランザクション方法
□投稿者/ アルファアンドベータ 一般人(1回)-(2019/11/05(Tue) 22:45:15)
  • アイコン環境/言語:[VB.NET(Framework 4.6.1)] 
    分類:[.NET] 

    VB.netとSQLiteでテキストから読み込んだデータを
    複数のデータベースファイルへ(今回は2つのファイル)
    D:\test\NameTime.sqlite3
    D:\test\NameCount.sqlite3

    トランザクション処理を実施したいのですが、Commit段階で
    「the Connecion was closed and re-opened....」と
    エラーがはかれてしまいます。(実際にはinsertできている状態)
    ロールバックもわざと実施しましたがロールバックできません。

    私の書き方が悪いためトランザクションが機能していないようです。

    複数のデータベースファイルへの
    トランザクションの張り方を教えていただきたく
    こちらへ書き込みました
    よろしくお願い致します。

    開発環境
    =====================================
    IDE:VisualStdio Express 2017
    フレームワーク:NET Framework 4.6.1
    データベース:SQLite 3 NuGetパッケージ使用
           (System.Data.SQLite.Core v1.0.112)
    PC:Windows10 Pro 64bit

    本来の仕様
    @あるフォルダ内のtxtファイルからデータ読み込み
     (更新日時順にソートし読み込み)
    Aデータベース登録(トランザクションコミット前状態)
    B登録後バックアップフォルダにtxt移動
    C移動が完了したらコミット
    Dコミットが成功したら終了 
     失敗ならバックアップフォルダから戻し次のループで読み込む
    =====================================


    mainフォーム
    =====================================
    Private Sub データ登録()

    Dim strSQLite As New strSQLiteClass
    Dim SQLiteCN As New System.Data.SQLite.SQLiteConnection
    Dim tran As System.Data.SQLite.SQLiteTransaction = Nothing
    Dim Names As String
    Dim Times As String
    Dim Counts As Long
    Dim SQLiteOutFolder As String

    'DB保存先
    SQLiteOutFolder = "D:\test"

    '接続設定
    SQLiteCN.ConnectionString = "Version=3;Data Source=" & strDBFilePath & ";New=False;Compress=True;"

    'SQLiteコネクションオープン
        'これがないと.BeginTransactionでエラー
    SQLiteCN.Open()
    SQLiteCN.Close()

    tran = SQLiteCN.BeginTransaction()
    Try

          '本来であればフォルダ内のtxtファイルを
          'ループさせながら取得登録します。
    Names = "Aさん"
    Times = "00:01:20.01"
    Counts = 10


    If strSQLite.NameTime登録(SQLiteCN, Names, Times, SQLiteOutFolder) = True Then
    Else
    GoTo ErrEnd
    End If

    If strSQLite.NameCount登録(SQLiteCN, Names, Counts, SQLiteOutFolder) = True Then
    Else
    GoTo ErrEnd
    End If

    tran.Commit()


    ErrEnd:
    '正常終了しない、ErrEndの場合はロールバック
    tran.Rollback()


    Catch ex As Exception
    tran.Rollback()

    Finally
    '破棄
    tran.Dispose()
    SQLiteCN.Dispose()


    End Try


    End Sub

    =====================================



    実際に書き込むclass
    =====================================
    Public Class strSQLiteClass
    Friend Function NameTime登録(ByRef SQLiteCN As System.Data.SQLite.SQLiteConnection, ByVal Names As String, ByVal Times As String, ByVal SQLiteOutFolder As String) As Boolean


    Dim strDBFilePath As String = SQLiteOutFolder & "\NameTime.sqlite3"
    'データベースファイルの確認
    If System.IO.File.Exists(strDBFilePath) = True Then
    Else
    '存在しない
    MessageBox.Show("データベース接続エラー", "データベースが存在しません", MessageBoxButtons.OK, MessageBoxIcon.Error)
    NameTime登録 = False
    Exit Function
    End
    End If


    '接続設定
    SQLiteCN.ConnectionString = "Version=3;Data Source=" & strDBFilePath & ";New=False;Compress=True;"
    'SQLiteコネクションオープン
    SQLiteCN.Open()
    Try
    Dim SQLiteCommand As System.Data.SQLite.SQLiteCommand
    'SQLコマンド設定
    SQLiteCommand = SQLiteCN.CreateCommand
    Try


    '登録
    SQLiteCommand.CommandText = "INSERT INTO [T_NameTime] " &
    "(" &
    "Name, " &
    "Time" &
    ") " &
    "VALUES(" &
    "'" & Names & "', " &
    "'" & Times & "'" &
    ") "
    SQLiteCommand.ExecuteNonQuery()
    NameTime登録 = True

    Catch ex2 As Exception
    MessageBox.Show(ex2.Message)
    NameTime登録 = False

    Finally
    '破棄
    SQLiteCommand.Dispose()

    End Try

    Catch ex As Exception
    MessageBox.Show(ex.Message)
    NameTime登録 = False

    Finally
    'クローズ
    SQLiteCN.Close()
    End Try


    End Function

    Friend Function NameCount登録(ByRef SQLiteCN As System.Data.SQLite.SQLiteConnection, ByVal Names As String, ByVal Counts As Long, ByVal SQLiteOutFolder As String) As Boolean


    Dim strDBFilePath As String = SQLiteOutFolder & "\NameTime.sqlite3"
    'データベースファイルの確認
    If System.IO.File.Exists(strDBFilePath) = True Then
    Else
    '存在しない
    MessageBox.Show("データベース接続エラー", "データベースが存在しません", MessageBoxButtons.OK, MessageBoxIcon.Error)
    NameCount登録 = False
    Exit Function
    End
    End If


    '接続設定
    SQLiteCN.ConnectionString = "Version=3;Data Source=" & strDBFilePath & ";New=False;Compress=True;"
    'SQLiteコネクションオープン
    SQLiteCN.Open()
    Try
    Dim SQLiteCommand As System.Data.SQLite.SQLiteCommand
    'SQLコマンド設定
    SQLiteCommand = SQLiteCN.CreateCommand
    Try


    '登録
    SQLiteCommand.CommandText = "INSERT INTO [T_NameTime] " &
    "(" &
    "Name, " &
    "Count" &
    ") " &
    "VALUES(" &
    "'" & Names & "', " &
    Counts &
    ") "
    SQLiteCommand.ExecuteNonQuery()
    NameCount登録 = True

    Catch ex2 As Exception
    MessageBox.Show(ex2.Message)
    NameCount登録 = False

    Finally
    '破棄
    SQLiteCommand.Dispose()

    End Try

    Catch ex As Exception
    MessageBox.Show(ex.Message)
    NameCount登録 = False

    Finally
    'クローズ
    SQLiteCN.Close()
    End Try


    End Function
    End Class
    =====================================
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34366 / ResNo.1)  Re[1]: vb.net+SQLiteで複数データベースファイルへのトランザクション方法
□投稿者/ Hongliang 大御所(569回)-(2019/11/06(Wed) 09:36:00)
  • アイコン
    冗長でインデントもないコードは読む気がしないですが。
    
    とりあえず、複数のDBファイルにまたがったトランザクションのサンプルを記載しておきます。
    // ベタで書いたのでコンパイルが通るかどうか、ちゃんと動くかまでは確認してません。
    ポイントは、
    ・接続は片方のDBファイルに対して行う。もう片方のDBファイルはATTACH DATABASEで接続に参加させる。
     メイン側はmain.を、ATTACHした側はATTACH時のASで付けたエイリアスを、テーブル名の前につける。
    ・トランザクションはOpenしたコネクションに依存するので、Commitする前にコネクションをCloseしたりしない。
     INSERTを複数の呼び出しに分けるならコネクションはその間ずっとキープする必要がある。
     (もちろんトランザクションも)
    本筋以外では
    ・パラメータは&で文字列結合したりしないで、Parameters.AddWithValueなどでパラメータとして追加する。
    
    Class MultiFileDB
        Implements IDisposable
    
        Private m_DbFilePath1 As String = "..."
        Private m_DbFilePath2 As String = "..."
        Private m_Connection As SQLiteConnection
        Private m_Transaction As SQLiteTransaction
    
        Public Sub New()
            m_Connection = New SQLiteConnection("Data Source=" & m_DbFilePath1)
            m_Connection.Open()
            Using comm As New SQLiteCommand("ATTACH DATABASE @file AS sub", m_Connection)
                comm.Parameters.AddWithValue("@file", m_DbFilePath2)
                comm.ExecuteNonQuery()
            End Using
            m_Transaction = conn.BeginTransaction()
        End Sub
    
        Public Sub InsertToDB1(ByVal name As String, ByVal time As String)
            Using comm As New SQLiteCommand("INSERT INTO main.T_NameTime VALUES (@name, @time)", _
                                            m_Connection, m_Transaction)
                comm.Parameters.AddWithValue("@name", name)
                comm.Parameters.AddWithValue("@time", time)
                comm.ExecuteNonQuery()
            End Using
        End Sub
    
        Public Sub InsertToDB2(ByVal name As String, ByVal time As String)
            Using comm As New SQLiteCommand("INSERT INTO sub.T_NameTime VALUES (@name, @time)", _
                                            m_Connection, m_Transaction)
                comm.Parameters.AddWithValue("@name", name)
                comm.Parameters.AddWithValue("@time", time)
                comm.ExecuteNonQuery()
            End Using
        End Sub
    
        Public Sub Dispose() Implements IDisposable.Dispose
            m_Transaction.Commit()
            m_Connection.Close()
        End Sub
    End Class

違反を報告
引用返信
■34367 / ResNo.2)  Re[2]: vb.net+SQLiteで複数データベースファイルへのトランザクション方法
□投稿者/ アルファアンドベータ 一般人(2回)-(2019/11/06(Wed) 20:29:46)
  • アイコンご回答頂き有りがとうございます
    今回例題の2個にした私が悪いのですが
    7個のデータベースがある場合は
    どうATTACH DATABASEすればよろしいでしょうか?

    またパラメータでの受け渡しを初めて知り勉強になります。
    ありがとうございます。
    パラメータ受け渡しですが
    下記のパラメータは
    comm.Parameters.AddWithValue("@name", name)

    こちらとどちらがいいのでしょうか?
    comm.Parameters.Add("@name", DbType.String).Value = name ;
    タイプ指定の方が速いですか?
違反を報告
引用返信
■34368 / ResNo.3)  Re[3]: vb.net+SQLiteで複数データベースファイルへのトランザクション方法
□投稿者/ Hongliang 大御所(570回)-(2019/11/06(Wed) 20:49:40)
  • アイコン> 7個のデータベースがある場合は
    > どうATTACH DATABASEすればよろしいでしょうか?
    順次ATTACHを実施していけばいいのでは…?
    何が分からないのか分からないです。

    > どちらがいいのでしょうか?
    > comm.Parameters.AddWithValue("@name", name)
    > comm.Parameters.Add("@name", DbType.String).Value = name ;
    どちらでも構いませんしそんなに差はないと思います。
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▲上のスレッド
■34359 / 親記事)  Newの使い方間違ってますか?
□投稿者/ VBはじめました 一般人(13回)-(2019/11/05(Tue) 13:47:26)
  • アイコン環境/言語:[VisualStudio2017 VB.net] 
    分類:[.NET] 

    フォームのインスタンスを作る方法として次の4つの方法がある(それ以上あるかも?)とします。
    Dim Frm1 As Form
    Frm1 = New Form 'Sub Form.New()
    Dim Frm2 As Form = New Form 'Sub Form.New()
    Dim Frm3 = New Form 'Sub Form.New()
    Dim Frm4 As New Form 'Sub Form.New()

    一方、Integer型の配列のインスタンスを作る方法として、対比させると
    次のようになると思います。
    Dim Int41 As Integer()
    Int41 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    Dim Int42() As Integer = New Integer() {1, 2, 3, 4, 5} 'Integer()
    Dim Int43 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    Dim Int44 As New Integer() 'Sub Integer.New()

    フォームの場合、Newキーワードのところにカーソルを持っていくと
    各行のコメントが表示されます。
    Int44だけ、違った表示がされ、配列になりません。
    なぜですか?
    詳しい方いらっしゃいましたら教えて頂けませんでしょうか?
    宜しくお願いいたします。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34360 / ResNo.1)  Re[1]: Newの使い方間違ってますか?
□投稿者/ 魔界の仮面弁士 大御所(1250回)-(2019/11/05(Tue) 14:16:30)
  • アイコンNo34359に返信(VBはじめましたさんの記事)
    > Dim Frm4 As New Form 'Sub Form.New()
    これは
     Dim Frm4 As New Form()
    の省略形です。

    メソッドやコンストラクタの呼び出し時には、
    引数を指定するための丸括弧が必要とされますが、
    引数が 0 個の場合に限り、丸括弧を省略できます。


    > Dim Int42() As Integer = New Integer() {1, 2, 3, 4, 5} 'Integer()
    こちらの括弧は引数指定のためのものではなく、配列宣言を意味します。

    > Dim Int41 As Integer()
    > Int41 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    この丸括弧も、配列宣言のためのものですね。
    Int42 と同様、宣言部と配列初期化子を組み合わせて
     Dim Int41 As Integer() = New Integer() {1, 2, 3, 4, 5}
    とも書けます。


    > Dim Int43 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    > Dim Int44 As New Integer() 'Sub Integer.New()
    前者の丸括弧は「配列」のためのものです。※配列初期化子
    後者の丸括弧は「引数」のためのものです。※構造体の既定のコンストラクタ

    先の Form 宣言と対応する形で並べれば、
     Dim Frm4 As New Form() 'Form クラスの引数0個のコンストラクタ呼出
     Dim Int44 As New Integer() 'Integer 構造体の既定のコンストラクタ呼出
    となります。どちらも引数指定です。


    引数 0 個の場合、丸括弧を省略できますので、
     'Dim Int44 As New Integer()
     Dim Int44 As New Integer
    とするのは OK ですが、配列宣言の括弧を省略すると意味が変わってくるため
    Int41〜Int43 については丸括弧が必須です。


    Dim Int44 As New Integer()
       ↓
    Dim Int44 As Integer = New Integer()
       ↓
    Dim Int44 As Integer = 0
違反を報告
引用返信
■34361 / ResNo.2)  Re[1]: Newの使い方間違ってますか?
□投稿者/ 魔界の仮面弁士 大御所(1251回)-(2019/11/05(Tue) 14:25:15)
  • アイコン2019/11/05(Tue) 14:33:59 編集(投稿者)

    No34359に返信(VBはじめましたさんの記事)
    > Int41 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    > Dim Int42() As Integer = New Integer() {1, 2, 3, 4, 5} 'Integer()

    配列のインデックスを明示することもできますね。(各要素はゼロになる)
     Dim Int46(4) As Integer
     Dim Int47(0 To 4) As Integer
     Dim Int48(0 To -1) As Integer
     Dim Int49(-1) As Integer


    コンストラクタ引数の丸括弧やメソッド引数の丸括弧は省略できますが、
    代入式の右辺にある配列初期化子については、
    丸括弧や波括弧を省略することが出来ません。


    ' これらの括弧は省略できない
    Int46 = New Integer(4) {}
    Int46 = New Integer(4) {1, 2, 3, 4, 5}
    Int46 = New Integer(0 To 4) {}
    Int46 = New Integer(0 To 4) {1, 2, 3, 4, 5}
    Int49 = New Integer(0 To -1) {}
    Int49 = New Integer(-1) {}
    Int49 = New Integer() {}


    そして
     Dim Int43 = New Integer() {1, 2, 3, 4, 5}

     Dim Int43 As New Integer() {1, 2, 3, 4, 5}
    と記述できない理由は、『New Integer()』の時点で、
    配列ではなく「コンストラクタの指定」と見做されるためです。

    最近のバージョンでは、型推論が利用できるため、
     Dim Int43 = {1, 2, 3, 4, 5}
    と書いたとしても、Integer 型の一次元配列としてコンパイルされますね。



    また、
     Dim Int42() As Integer = New Integer()

     Dim Int42() As New Integer()
    と書けない理由は、New の丸括弧と配列の丸括弧が同居すると、
    意味が曖昧になるという理由によって禁止されているためです。
違反を報告
引用返信
■34362 / ResNo.3)  Re[2]: Newの使い方間違ってますか?
□投稿者/ VBはじめました 一般人(14回)-(2019/11/05(Tue) 16:07:22)
  • アイコン魔界の仮面弁士さん いつも有難う御座います。

    質問の答えとしては、
     Dim Int42() As New Integer()
    と書けない理由は、New の丸括弧と配列の丸括弧が同居すると、
    意味が曖昧になるという理由によって禁止されているためです。
    だけで、済むところを、凄い労力をかけて懇切丁寧に、記載して頂き、ありがとうございます。理解できていなかったものばかりでとても勉強になります。

    無駄にしないように、何度も、熟読して理解していきたいと思います。

    重ね重ね、有難う御座いました。


違反を報告
引用返信
■34363 / ResNo.4)  解決済み押し忘れ
□投稿者/ VBはじめました 一般人(15回)-(2019/11/05(Tue) 16:08:14)
  • アイコン有難うございました
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]






Mode/  Pass/


- Child Tree -