TIL

Today I Learned. 知ったこと、学んだことを書いていく

テーブルがあったら、削除して作成 - SQL Server 2012

SQL Server 2012 でこれでうまく動かなかったため、違う方法を探してみた

TEMPテーブルがあれば、削除し、作成するSQLは以下のようになる。

IF OBJECT_ID('dbo.TEMP') IS NOT NULL
DROP TABLE dbo.TEMP
CREATE TABLE TEMP (a INT)

注意:OBJECT_ID()の引数は文字列!!''で囲むことを忘れないこと


参考文献

初級DBエンジニアの備忘録: [SQLserver][SQLite]テーブルの再作成

ユーザコントロールに新しくイベントを追加する - VB.NET

ユーザコントロールを配置したForm側で、(ユーザコントロール内に配置した)ボタンをクリックしたときに何か処理をしたい時にどうすればいいか

例:Button1を押下時のイベントを追加する場合

定義側

まずは、外からアクセスできるイベントハンドラを定義する

' Btn1_Clickというイベントを新たに定義
Public Event Btn1_Click As EventHandler

Btn1_ClickをButton1.Clickイベントに紐づける

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    RaiseEvent Btn_Click(Me, EventArgs.Empty)
End Sub

呼び出し側

Private Sub UserControl1_Button1_Click(sender As Object, e As EventArgs) 
        Handles UserControl1.btnF1_Click
    ' ユーザコントロール内のButton1をクリックしたときの処理を記述
End Sub



参考文献

新規イベントの実装 (カスタムコントロール作成入門講座初級編) | みかみんのプログラミング道場

DataGridViewにList(Of クラス)の内容を表示する - VB.NET

DataGridViewにListの中身を表示したい時がある。一つ一つ行を追加しているとすごい時間がかかるため、これをやりたい。

でも、List(Of String)ではできないため、クラスを作らないといけないのが微妙。

ポイント

  • DataGridView.AutoGenerateColumns = Falseにすることで、DataSourceで設定したときに自動で列を追加されないようにする。
  • Columns.DataPropertyNameに表示したいプロパティ名を指定する。
  • DataGridView.DataSourceに表示したいListを設定する(※ Listの方は独自のクラスでないと無理っぽい)

以下が実際に試したソース

Form1にはDataGridView1というDataGridViewが配置してあるとする。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ' DataSourceの設定によって、自動で列が追加されないようにする
        DataGridView1.AutoGenerateColumns = False

        ' テキストボックス列の追加
        Dim col1 As New DataGridViewTextBoxColumn
        col1.Name = "id"
        col1.HeaderText = "ID"
        ' DataPropertyName でクラスに定義されているプロパティ名を指定する
        col1.DataPropertyName = "Id"

        DataGridView1.Columns.Add(col1)

        Dim col2 As New DataGridViewTextBoxColumn
        col2.Name = "name"
        col2.HeaderText = "NAME"
        col2.DataPropertyName = "Name"

        DataGridView1.Columns.Add(col2)


        ' 入れるテストデータの作成(実際にはSQLとかの結果から作成する?)
        Dim testList As New List(Of Test)
        testList.Add(New Test("1", "Taro"))
        testList.Add(New Test("2", "Jiro"))

        ' DataGridViewにバインド
        DataGridView1.DataSource = testList

    End Sub
End Class

Public Class Test

    Public Property Id As String
    Public Property Name As String

    Public Sub New(ByVal id As String, ByVal name As String)
        Me.Id = id
        Me.Name = name
    End Sub

End Class



参考文献

Replace()関数 指定の文字列で置換(置換回数を指定) - VB.NET

指定回数置換したい場合にはReplace()関数を使う。

Replace(置換元の文字列, 置換前, 置換後, 検索開始位置(1以上), 置換回数)で記述する

Dim s = "h%l%o"
Console.WriteLine(Replace(s, "%", "e", 1, 1))    ' hel%o
Console.WriteLine(Replace(s, "%", "e", 1, 2))    ' heleo



参考文献

文字列を置換する: .NET Tips: C#, VB.NET

String.IndexOf() 文字列内に指定された文字列があるか調べ、その位置を知る - VB.NET

文字列内に指定の文字列があるかどうかはStringのIndexOf()メソッドを使う。

指定の文字列があれば、そのインデックス番号。なければ、-1が返される

Dim s = "hello"
Console.WriteLine(s.IndexOf("h"))
Console.WriteLine(s.IndexOf("a"))

実行結果

0
-1



参考文献

文字列内に指定された文字列があるか調べ、その位置を知る: .NET Tips: C#, VB.NET

文字列の初めのほうが指定の文字列か str.startswith() - Python

文字列の初めのほうが指定の文字かどうかを確かめるには str の startswith()メソッドを使う

>>> s = 'hello'
>>> s.startswith('h')
True
>>> s.startswith('he')
True
>>> s.startswith('ha')
False


参考文献

4. 組み込み型 — Python 3.6.3 ドキュメント