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

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

記事リスト ( )内の数字はレス数
NomalDataGridViewでAlt+Enterで改行したい(2) | Nomal全角シフト中にアクセスキーが効かない(5) | NomalDataAdapter.Updateで構文エラー(6) | Nomal抽象クラスで実装したクラスの情報を知る(3) | Nomal画面遷移(モーダルとモードレス)(2) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | Nomal兆億万表記の文字列を数値に変換できる?(3) | NomalLinqにおける明示的型指定の方法(3) | Nomal2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)(2) | Nomalコンソールアプリで、WebView2の利用(2) | NomalEntity Frameworkは、使えるか?(2) | Nomalデータベースからのテーブル名一覧の効率的な取得方法(3) | NomalC#のlong型でオーバーフローになる(2) | Nomal正規表現のパターン表記方法(2) | NomalWebView2によるスクレ―ピング(4) | Nomalこういた物を作れますか?(2) | Nomalツールボックスにtableadapterが表示されない(1) | NomalC# Chart X軸上のグラフ表示(3) | NomalVB.NETでBluetoothデバイスの電池残量を取得する方法(3) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomal重なったPictureBox同士を透過する方法(7) | NomalWindowsフォームデザイナについて(3) | Nomalvb.netでExcelファイル操作(7) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | NomalVB2022でクリスタルレポートが開けない(2) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalDrawstringでの透過文字作成(3) | NomalSpinWait()を使う理由(2) | Nomalantecedentってなんですか?(2) | Nomalワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る(3) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalテーブルを順番通りに直すプログラムを外部で読み込めるようにしたいです。(4) | NomalJSONの複雑な入れ子内部の値を取りたい。(3) | Nomalグリッド表示レコードをJSONに変換(5) | Nomalシステム時計の設定(3) | NomalSeleniumで開いているページのTableを編集したい(5) | Nomalソケット通信入門 ひらがな(4) | NomalVisual Basicでエラーが出る(3) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalRGB値の所得(2) | Nomal時間変数(文字列)の扱い(4) | NomalVB.net からAccessDBへの接続(2) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | NomalPictureBoxの画像を連続保存(11) | NomalDataGridViewの特定セルにボタンを配置する方法(5) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | Nomalラジオボタンの一括設定(7) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalクリックイベントでexeを作成できるか(2) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | Nomalアセンブリ情報が載らない(1) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | Nomalc#で日付型の定義の仕方で質問があります。(2) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | NomalLableのカラー色を文字変数から変更したい(5) | NomalLabelで文字単位の背景色(7) | NomalTEXTBOXのプロパティを文字列に(7) | Nomalタブレット等でスワイプによるスクロールを実装(2) | NomalPDFをフォーム上で表示させる方法につきまして(6) | NomalChart X軸上の描画を切り替えたい(0) | NomalRichTextBoxへのドラッグ&ドロップしたExcelファイルの扱い(3) | Nomal特定のPCだけ発生する「パディングは無効なので削除できません」のエラーの原因(6) | NomalASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする(4) | NomalDatagridViewでファンクションキーを止めたい(5) | Nomal表示動作が重くなる(3) | Nomalbitmapを複数スレッドで処理したい(2) | NomalLoadOptionのパラメータの意味(3) | Nomalフォーム背景のみを半透明にしたい(5) | Nomal読み出し元フォームの位置取得方法(2) | Nomalコンストラクターに続く{}の意味(2) | Nomal1行で書くことできますか?(3) | NomalCommandBuilderによって作られるCommandTextの内容(5) | Nomalvb.netで7zの圧縮・解凍をしたい。(2) |



■記事リスト / ▼下のスレッド
■35108 / 親記事)  読み出し元フォームの位置取得方法
□投稿者/ よっし〜 一般人(9回)-(2022/07/22(Fri) 14:38:19)
  • アイコン環境/言語:[VS2013] 
    分類:[.NET] 

    お疲れ様です。また簡単な事かもしれませんが、おおしえくださいませ。

    現在Aフォームから別のBフォームをShowDialogで表示し、BフォームのOpacityを50%に設定して重ねて表示したいと考えております。
    その際、Aフォームのタイトルバーの下に表示したいので、大きさはAフォームのClientSizeで取得出来ますが左上の位置の取得する方法が分かりません。
    ここで言うBホームの左上とは「AフォームのClientSizeの0,0の位置」です。

      (_OYForm=親フォーム)
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
    Me.Location = ??
    Me.Size = _OYForm.ClientSize
    End Sub

    ClientRectangleのLeftとTopかと思いましたが、常に0でした(当たり前でしょうが・・)

    以上、宜しくご教示のほどお願いいたします。



違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35109 / ResNo.1)  Re[1]: 読み出し元フォームの位置取得方法
□投稿者/ 魔界の仮面弁士 大御所(1437回)-(2022/07/22(Fri) 17:49:46)
  • アイコンNo35108に返信(よっし〜さんの記事)
    > ここで言うBホームの左上とは「AフォームのClientSizeの0,0の位置」です。

    rect = targetForm.RectangleToScreen(targetForm.ClientRectangle)

    でスクリーン座標が得られそうですが、これでは駄目でしょうか。
    ※未検証です
違反を報告
引用返信
■35110 / ResNo.2)  Re[2]: 読み出し元フォームの位置取得方法
□投稿者/ よっし〜 一般人(10回)-(2022/07/25(Mon) 09:54:45)
  • アイコン
    No35109に返信(魔界の仮面弁士さんの記事)
    > ■No35108に返信(よっし〜さんの記事)
    >>ここで言うBホームの左上とは「AフォームのClientSizeの0,0の位置」です。
    > rect = targetForm.RectangleToScreen(targetForm.ClientRectangle)
    > でスクリーン座標が得られそうですが、これでは駄目でしょうか。
    
    魔界の仮面弁士様、早速のご教示頂きまして有り難うございます。
    
    お教え頂いた内容ですが・・・完璧でございます。
    
            Dim A As Rectangle = Oya.RectangleToScreen(Oya.ClientRectangle)
            Me.Location = New Point(A.Left, A.Top)
            Me.Size = New Size(A.Width, A.Height)
    
    どうも有り難うございました。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35102 / 親記事)  コンストラクターに続く{}の意味
□投稿者/ Wan 付き人(71回)-(2022/07/12(Tue) 10:47:51)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    基本的な文法の分類になると思いますが・・・
    コンストラクターの次に続く{}の意味を教えてください。

    次のコードで、New DataColumn()に続いて{}を入力すると、IntelliSenseが働きます。With{}でないので、DataColumnのプロパティではないと思いますが?
    何が、リストアップされるのでしょうか?(pkOrderIDも表示されます)
    また、どのような場合にこれが使えるのでしょうか?
    試しに、Dim Ds As New DataSet("DsTest")に続いて{}を書いてもIntelliSenseは働きません。

    宜しくお願いします。

    Sub Test()
     Dim Ds As New DataSet("DsTest")
    Dim Dt As DataTable = Ds.Tables.Add("DtTest")
    Dim pkOrderID As DataColumn = Dt.Columns.Add("OrderID", Type.GetType("System.Int32"))
    Dt.PrimaryKey = New DataColumn() {pk} ←pkと入力するとpkOrderIDがリストアップされる
    End Sub
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35103 / ResNo.1)  Re[1]: コンストラクターに続く{}の意味
□投稿者/ Hongliang 大御所(630回)-(2022/07/12(Tue) 11:06:09)
  • アイコン> Dt.PrimaryKey = New DataColumn() {pk} ←pkと入力するとpkOrderIDがリストアップされる

    この場合、New DataColumn()は DataColumnの引数なしコンストラクタではなく、DataColumn()、つまりDataColumnの配列をNewしている式になります。
    { }に並べるのは配列の初期要素列です。DataColumnの配列なので個々の要素はDataColumnであり、pkOrderIdももちろん要素に指定可能ということになります。
違反を報告
引用返信
■35104 / ResNo.2)  Re[2]: コンストラクターに続く{}の意味
□投稿者/ Wan 付き人(72回)-(2022/07/12(Tue) 12:39:02)
  • アイコンHongliang様
    いつも大変お世話になっております。

    なるほど・・・です。
    VBだから、分かりづらいんですね?
    PrimaryKetのパラメータがDataColumn[]だから、このような形になるんだと理解しました。

    初歩的なことにも丁寧に回答頂き助かります。
    有難うございました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35098 / 親記事)  1行で書くことできますか?
□投稿者/ Wan 付き人(69回)-(2022/07/11(Mon) 15:10:51)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    Dim DV = New DataView(Ds.Tables("既存テーブル"))
    DataGridView1.DataSource = DV
    DV.RowFilter = "年齢 > 40"
    と、3行で書いているものを
    DataGridView1.DataSource = (New DataView(Ds.Tables("既存テーブル")).RowFilter = "年齢 > 40")
    のように、1行で書くことできますか?
    

違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■35099 / ResNo.1)  Re[1]: 1行で書くことできますか?
□投稿者/ 魔界の仮面弁士 大御所(1433回)-(2022/07/11(Mon) 16:04:13)
  • アイコンNo35098に返信(Wanさんの記事)
    > 1行で書くことできますか?

    こういうことで良いのかな。

    DataGridView1.DataSource = New DataView(ds.Tables("既存テーブル"), "年齢 > 40", "", DataViewRowState.CurrentRows)
違反を報告
引用返信
■35100 / ResNo.2)  Re[2]: 1行で書くことできますか?
□投稿者/ 魔界の仮面弁士 大御所(1435回)-(2022/07/11(Mon) 16:05:42)
  • アイコンNo35099に追記(魔界の仮面弁士の記事)
    > こういうことで良いのかな。

    もしくは
    = New DataView(ds.Tables("既存テーブル")) With {.RowFilter = "年齢 > 40"}
違反を報告
引用返信
■35101 / ResNo.3)  Re[3]: 1行で書くことできますか?
□投稿者/ Wan 付き人(70回)-(2022/07/11(Mon) 16:16:26)
  • アイコン魔界の仮面弁士様
    いつもお世話になっております。

    必死になって、()を色々付け替えて無駄な、時間を費やしていました。
    本当に、視野が狭くなっていました。
    指摘されると、はっ!と思うものでした。

    有難うございました。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35088 / 親記事)  CommandBuilderによって作られるCommandTextの内容
□投稿者/ Wan 付き人(66回)-(2022/06/28(Tue) 12:10:57)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    VisualStudio2019で、データベースの使用を勉強しています。
    Accessに接続して、OleDbCommandBuilderを実行したところ、コメントのようなCommandTextを取得することができました。
    UPDATE文、DELETE文のCommandTextの中の(? = 1 AND 苗字 IS NULL)の意味を教えて頂けませんか?
    「苗字 IS NULL」は、レコードの苗字列の値がDbNullの場合はTrueを返すという事は理解していますが、「? = 1」の意味が解りません。
    
    詳しい方、宜しくお願い致します。
    
    (Accessのテーブル構成)
    インスタンス名	Access2010
    データベース名	データベース勉強用DB
    論理テーブル名	Test
    物理テーブル名	INSERT文.accdb
    
    列定義
    No	論理名	物理名	データ型	Null許容	主キー
    1	ID	ID	長整数(8,0)	No	    Yes
    2	苗字	苗字	テキスト型(10)	No	
    3	名前	名前	テキスト型(10)	No	
    4	年齢	年齢	十進数(18)	No	
    
    Dim oledb As String = "Microsoft.ACE.OLEDB.16.0;"
    Dim acfile As String = "D:\データベース勉強用DB\INSERT文.accdb"
    Dim Cn As New OleDb.OleDbConnection($"Provider={oledb} Data Source={acfile}")
    Dim Da As New OleDbDataAdapter("SELECT * FROM 既存テーブル", Cn)
    Dim Ds As New DataSet
    Da.Fill(Ds, "Test")
    Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(Da)
    Dim INS_Cmd = builder.GetInsertCommand()
    Dim UPD_Cmd = builder.GetUpdateCommand()
    Dim DEL_Cmd = builder.GetDeleteCommand
    
    以下のCommandTextが設定されます。
    'INS_ Cmd.CommandText : INSERT INTO 既存テーブル (苗字, 名前, 年齢) VALUES (?, ?, ?)
    
    'UPD_ Cmd.CommandText :UPDATE 既存テーブル SET 苗字 = ?, 名前 = ?, 年齢 = ? 
    WHERE ((ID = ?) AND 
    ((? = 1 AND 苗字 IS NULL) OR (苗字 = ?)) AND 
    ((? = 1 AND 名前 IS NULL) OR (名前 = ?)) AND 
    ((? = 1 AND 年齢 IS NULL) OR (年齢 = ?)))
    
    ' DEL_Cmd.CommandText:DELETE FROM 既存テーブル 
    WHERE ((ID = ?) AND 
    ((? = 1 AND 苗字 IS NULL) OR (苗字 = ?)) AND 
    ((? = 1 AND 名前 IS NULL) OR (名前 = ?)) AND 
    ((? = 1 AND 年齢 IS NULL) OR (年齢 = ?)))
    
    

違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35089 / ResNo.1)  Re[1]: CommandBuilderによって作られるCommandTextの内容
□投稿者/ 魔界の仮面弁士 大御所(1430回)-(2022/06/28(Tue) 14:16:04)
  • アイコンNo35088に返信(Wanさんの記事)
    > UPDATE文、DELETE文のCommandTextの中の(? = 1 AND 苗字 IS NULL)の意味を教えて頂けませんか?

    データベース側では、名前や型を明示したパラメーターをサポートしているのですが、
    OleDbConnection オブジェクトからだと、無名パラメーターしか使えないんですよね…。
    ACEDAO 経由で呼ぶ場合は名前付きにできるのですが。
    https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/parameters-declaration-microsoft-access-sql


    > 「苗字 IS NULL」は、レコードの苗字列の値がDbNullの場合はTrueを返すという事は理解していますが、「? = 1」の意味が解りません。

    空文字列と NULL を区別するための措置です。

    たとえば
     WHERE (? = 1 AND 苗字 IS NULL) OR (苗字 = ?)
    という部分を
     WHERE ([引数1] = 1 AND 苗字 IS NULL) OR (苗字 = [引数2])
    のように読み替えてみます。

    そのうえで、VB 側からは
     Dim 引数1 As Integer, 引数2 As String
     If NULLをセットしたい場合 Then
      引数1 = 1
      引数2 = Nothing '未使用
     Else
      引数1 = 0
      引数2 = TextBox1.Text
     End If
    のような引数が渡されるイメージです。
違反を報告
引用返信
■35090 / ResNo.2)  Re[2]: CommandBuilderによって作られるCommandTextの内容
□投稿者/ Wan 付き人(67回)-(2022/06/28(Tue) 20:14:25)
  • アイコン
    魔界の仮面弁士様
    いつも丁寧がご指導ありがとうございます。
    
    折角教えて頂いたのですが、私の理解力が追いつきません。
    CommandBuilderで、CommandTextを取得した時にに設定されるParameterのプロパティは次のようになっています。
    DeleteCommanndのみ記載
    Paramete
    Name	DbType	OleDbType	SourceColumn	Direction	SourceVersion	Value
    p1	Int32{11}	Integer{3}	ID	Input{1}	Original{256}	Nothing
    p2	String(16)	VarWChar{202}	苗字	Input{1}	Original{256}	Nothing
    p3	String(16)	VarWChar{202}	苗字	Input{1}	Original{256}	Nothing
    p4	String(16)	VarWChar{202}	名前	Input{1}	Original{256}	Nothing
    p5	String(16)	VarWChar{202}	名前	Input{1}	Original{256}	Nothing
    p6	Decimal(7)	Numerid{113}	年齢	Input{1}	Original{256}	Nothing
    p7	Decimal(7)	Numerid{113}	年齢	Input{1}	Original{256}	Nothing
    
    これを見ると、引数1と引数2は同じ値になり、しかも、苗字と名前に関してはString型と1の比較を行っていることになります。
    Dim Str1 As String = "山田"
    If Str1 = 1 Then
     〜省略〜
    End If
    とすると: 'String "山田" から型 'Double' への変換は無効です。'
    となります。
    SQL文では、文字列と数値が比較できるのでしょうか?
    お手を煩わせます。

違反を報告
引用返信
■35091 / ResNo.3)  Re[1]: CommandBuilderによって作られるCommandTextの内容
□投稿者/ 魔界の仮面弁士 大御所(1431回)-(2022/06/28(Tue) 20:51:37)
  • アイコン
    No35088に返信(Wanさんの記事)
    > 'UPD_ Cmd.CommandText :UPDATE 既存テーブル SET 苗字 = ?, 名前 = ?, 年齢 = ? 
    > WHERE ((ID = ?) AND 
    > ((? = 1 AND 苗字 IS NULL) OR (苗字 = ?)) AND 
    > ((? = 1 AND 名前 IS NULL) OR (名前 = ?)) AND 
    > ((? = 1 AND 年齢 IS NULL) OR (年齢 = ?)))
    
    No35089 の機能は、SourceColumnNullMapping プロパティによって制御されています。
    
    Dim sb As New System.Text.StringBuilder()
    sb.AppendLine($"UpdateCommand のパラメータ数={UPD_Cmd.Parameters.Count}")
    For Each p As OleDbParameter In UPD_Cmd.Parameters
        sb.Append($"{p.ParameterName,-4}{vbTab}")
        sb.Append($"{p.SourceVersion,-8}{vbTab}")
        sb.Append($"{If(p.SourceColumnNullMapping, "T", "F")}{vbTab}")
        sb.Append($"{p.OleDbType,-8}{vbTab}")
        sb.AppendLine($"{p.SourceColumn}")
    Next
    Debug.WriteLine(sb.ToString())
    
    上記を実行すると、このような表が得られます。
    p1,p5,p6 の違いに着目してみてください。
    
    ================================================
    UpdateCommand のパラメータ数=10
    p1    Current    F   VarWChar  苗字
    p2    Current    F   VarWChar  名前
    p3    Current    F   Numeric   年齢
    p4    Original   F   Integer   ID
    p5    Original   T   Integer   苗字
    p6    Original   F   VarWChar  苗字
    p7    Original   T   Integer   名前
    p8    Original   F   VarWChar  名前
    p9    Original   T   Integer   年齢
    p10   Original   F   Numeric   年齢
    ================================================
    
    Original は SELECT した時点の元の値を意味し、
    Current は、これから反映させたい編集後の値です。
    
    「p5 と p6」「p7 と p8」「p9 と p10」では、
    SourceColumn は同じですが、
    SourceColumnNullMapping が異なっていますよね。これが
     (? = 1 AND {SourceColumn} IS NULL) OR ({SourceColumn} = ?)
    の正体となります。
    
    
    --- 以下蛇足 ---
    > インスタンス名	Access2010
    Access 2010 世代のプロバイダー名は、本来は
    "Microsoft.ACE.OLEDB.12.0" ですね。もちろん
    "Microsoft.ACE.OLEDB.16.0" からでもアクセス可能ですが。
    
    
    > Dim oledb As String = "Microsoft.ACE.OLEDB.16.0;"
    oledb という変数名を付けて後で、それと同名の
    > Dim Cn As New OleDb.OleDbConnection(…
    な OleDb 名前空間を記述されていますね。
    名前が被って分かりにくくなりませんか?
    
    それ以外の
    > Dim Da As New OleDbDataAdapter(…
    > Dim builder As OleDbCommandBuilder = …
    では、OleDb. が無い状態にそろえてあるのに対し、
    oledb 変数名が必要なところだけが意図的に
    OleDb. 付きの表記なので、ちょっと混乱しそうです。
    もちろん、文法的には問題ないのですけれども。
    
    
    > Dim Cn As New OleDb.OleDbConnection($"Provider={oledb} Data Source={acfile}")
    プロバイダー名にセミコロンを入れるのは不自然ですね。
     Dim oledb As String = "Microsoft.ACE.OLEDB.16.0;"
     $"Provider={oledb} Data Source={acfile}"
    よりは
     Dim oledb As String = "Microsoft.ACE.OLEDB.16.0"
     $"Provider={oledb};Data Source={acfile}"
    の方が好ましいですよ。他のパラメーターもセミコロン区切りなので。
    
    実際のところ、接続文字列は
     Dim csb As New OleDbConnectionStringBuilder()
     csb.Provider = "Microsoft.ACE.OLEDB.16.0"
     csb.DataSource = "D:\データベース勉強用DB\INSERT文.accdb"
     Dim Cn As New OleDbConnection(csb.ConnectionString)
    のようにして組み立てることもできるのですが、この際に
     csb.Provider = "Microsoft.ACE.OLEDB.16.0;"
    としてしまうと、正しく接続できなくなります。
    
    
    > Dim Da As New OleDbDataAdapter("SELECT * FROM 既存テーブル", Cn)
    [既存テーブル] なのですね。冒頭の記述から [Test] かと誤解してました。
    
    > (Accessのテーブル構成)
    > インスタンス名	Access2010
    > データベース名	データベース勉強用DB
    > 論理テーブル名	Test
    > 物理テーブル名	INSERT文.accdb

違反を報告
引用返信
■35092 / ResNo.4)  Re[2]: CommandBuilderによって作られるCommandTextの内容
□投稿者/ 魔界の仮面弁士 大御所(1432回)-(2022/06/28(Tue) 21:11:34)
  • アイコン
    No35091に追記(魔界の仮面弁士の記事)
    > No35089 の機能は、SourceColumnNullMapping プロパティによって制御されています。
    
    おぉ。追加説明のコードを書いているうちに、
    ピンポイントでその点についての追加質問が投稿されていた…!
    
    
    SQL における「列名 = 値」という記述について考えてみます。
    
    SET などの『代入処理』の場合は、
    値が null/非null いずれでも、「列名 = 値」と書けます。
    
    しかし、WHERE などの『比較処理』の場合は、
    「列名 = NULL」では TRUE 判定されないため、
    「列名 = 非NULL値」と「列名 IS NULL」を使い分けねばなりません。
    そのための仕組みです。
    
    
    ついでなので、DELETE と INSERT のケースも載せておきます。
    
    DeleteCommand のパラメータ数=7
    p1      Original    F   Integer     ID
    p2      Original    T   Integer     苗字
    p3      Original    F   VarWChar    苗字
    p4      Original    T   Integer     名前
    p5      Original    F   VarWChar    名前
    p6      Original    T   Integer     年齢
    p7      Original    F   Numeric     年齢
    
    
    InsertCommand のパラメータ数=3
    p1  	Current 	F	VarWChar	苗字
    p2  	Current 	F	VarWChar	名前
    p3  	Current 	F	Numeric 	年齢
    
    
    DataTable 内のデータは、DataRowVersion によってバージョン管理されており、
    SELECT 直後の値(Original)と
    編集結果を考慮した現在値(Current)の 2 種類を持ちます。
    ※ DataRow の RowState プロパティも参照
    
    
    Original なパラメーターは、WHERE 句のために使われます。
    INSERT の場合は WHERE が無いので、Current のみです。
    
    逆に DELETE の場合は、現在値が存在しないため Current がなく
    Original だけになります。
    
    そして UPDATE の場合は、SET 句用の Current と
    WHERE 句用の Original の両方があるというわけです。

違反を報告
引用返信
■35097 / ResNo.5)  Re[3]: CommandBuilderによって作られるCommandTextの内容
□投稿者/ Wan 付き人(68回)-(2022/07/07(Thu) 09:46:35)
  • アイコン魔界の仮面弁士さま
    お礼が大変遅くなりすみません。
    下記の部分が理解できずに、色々勉強していました。

    > 「苗字 IS NULL」は、レコードの苗字列の値がDbNullの場合はTrueを返すという事は理解していますが、「? = 1」の意味が解りません。
    空文字列と NULL を区別するための措置です。

    取り合えず、データベースの列がNull許容型で、且つ、データがNullの場合Trueとすると理解してこの質問のFixとして、勉強を進める過程で、再度、質問するかもしれませんが、その時は宜しくお願い致します。

    丁寧に、コード迄書いていただいて有難うございました。

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

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



■記事リスト / ▲上のスレッド
■35093 / 親記事)  vb.netで7zの圧縮・解凍をしたい。
□投稿者/ かい 一般人(1回)-(2022/07/01(Fri) 10:08:11)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    vb.netプロジェクトに7zでファイル圧縮、解凍する機能を追加したいと思っております。
    7-ZIP32.DLLを使いたいと思ったのですがC#でのサンプルしか見つけられません。
    DotNetZipのように使えるものはあるのでしょうか?
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35094 / ResNo.1)  Re[1]: vb.netで7zの圧縮・解凍をしたい。
□投稿者/ KOZ 一般人(1回)-(2022/07/01(Fri) 15:20:48)
  • アイコンNo35093に返信(かいさんの記事)
    > 7-ZIP32.DLLを使いたいと思ったのですがC#でのサンプルしか見つけられません。

    C# のサンプルがあるなら
    https://converter.telerik.com/
    で VB.NET に変換してみてはいかがでしょう
違反を報告
引用返信
■35096 / ResNo.2)  Re[1]: vb.netで7zの圧縮・解凍をしたい。
□投稿者/ kiku 一般人(1回)-(2022/07/06(Wed) 16:31:39)
  • アイコンNo35093に返信(かいさんの記事)
    > vb.netプロジェクトに7zでファイル圧縮、解凍する機能を追加したいと思っております。
    > 7-ZIP32.DLLを使いたいと思ったのですがC#でのサンプルしか見つけられません。
    > DotNetZipのように使えるものはあるのでしょうか?

    だいぶ古い記事ですが、下記が参考になりそう。
    https://www.petitmonte.com/bbs/answers?question_id=28055
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -

2024/04/19(Fri) 22:21:56 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする