テーブルがあったら、削除して作成 - 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()
の引数は文字列!!''
で囲むことを忘れないこと
参考文献
ユーザコントロールに新しくイベントを追加する - 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
参考文献
String.IndexOf() 文字列内に指定された文字列があるか調べ、その位置を知る - VB.NET
文字列内に指定の文字列があるかどうかはStringのIndexOf()
メソッドを使う。
指定の文字列があれば、そのインデックス番号。なければ、-1
が返される
Dim s = "hello" Console.WriteLine(s.IndexOf("h")) Console.WriteLine(s.IndexOf("a"))
実行結果
0 -1
参考文献
文字列の初めのほうが指定の文字列か str.startswith() - Python
文字列の初めのほうが指定の文字かどうかを確かめるには str の startswith()
メソッドを使う
>>> s = 'hello' >>> s.startswith('h') True >>> s.startswith('he') True >>> s.startswith('ha') False
参考文献
変数の型を調べる - VB.NET
TypeOf
を使う
If TypeOf col.CellTemplate Is DataGridViewTextBoxCell Then ~~~ End If