Replace(targetword,"'","''")
2つにするとよい
2010年3月20日土曜日
2010年3月5日金曜日
DataGridViewの行移動
Private Sub btnPREV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPREV.Click
If dgvSHITEKI.CurrentRow.Index <> 0 Then
'先頭行でない
dgvSHITEKI.CurrentCell = dgvSHITEKI(2, dgvSHITEKI.CurrentRow.Index - 1)
End If
End Sub
Private Sub btnNEXT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNEXT.Click
If dgvSHITEKI.Rows.Count > dgvSHITEKI.CurrentRow.Index + 1 Then
dgvSHITEKI.CurrentCell = dgvSHITEKI(2, dgvSHITEKI.CurrentRow.Index + 1)
End If
End Sub
If dgvSHITEKI.CurrentRow.Index <> 0 Then
'先頭行でない
dgvSHITEKI.CurrentCell = dgvSHITEKI(2, dgvSHITEKI.CurrentRow.Index - 1)
End If
End Sub
Private Sub btnNEXT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNEXT.Click
If dgvSHITEKI.Rows.Count > dgvSHITEKI.CurrentRow.Index + 1 Then
dgvSHITEKI.CurrentCell = dgvSHITEKI(2, dgvSHITEKI.CurrentRow.Index + 1)
End If
End Sub
2010年3月4日木曜日
Connector/NET で日付時間情報を処理
MySQL と .NET 言語の日付時間情報の処理は異なり、MySQL は '0000-00-00 00:00:00' のような、.NET データ タイプでは表せない日付も使用することができます。適切に処理を行わなければ、この違いによって問題が起きることがあります。
http://dev.mysql.com/doc/refman/5.1/ja/connector-net-using-datetime.html
http://dev.mysql.com/doc/refman/5.1/ja/connector-net-using-datetime.html
2010年2月19日金曜日
開発途中のデータ型(長さ)変更
データの長さを変更することはよくあります。
この場合、
まず、DB側は単にデータの長さを変更します。
VB側はDataSet.xsdを開き、テーブルアダプターのカラムのMaxLengthを修正します。
この場合、
まず、DB側は単にデータの長さを変更します。
VB側はDataSet.xsdを開き、テーブルアダプターのカラムのMaxLengthを修正します。
2010年2月10日水曜日
2010年1月21日木曜日
2010年1月10日日曜日
VBアプリにおけるDataGridViewリレーションの作り方
主従のDataGridViewがある場合、
従のDataGridViewは影響は影響を受けないが
主のDataGridViewはソートができなくなったりする。
そこで主のDataGridViewはデータアダプタを使って作り、
主DataGridView⇒データアダプタ
従DataGridView⇒データアダプタ
の場合、重い。
主DataGridView⇒SQL接続
従DataGridView⇒SQL接続
の場合、ソートできない
主DataGridView⇒データアダプタ
従DataGridView⇒SQL接続
の場合、ソートもできて軽さも維持。
従のDataGridViewは影響は影響を受けないが
主のDataGridViewはソートができなくなったりする。
そこで主のDataGridViewはデータアダプタを使って作り、
主DataGridView⇒データアダプタ
従DataGridView⇒データアダプタ
の場合、重い。
主DataGridView⇒SQL接続
従DataGridView⇒SQL接続
の場合、ソートできない
主DataGridView⇒データアダプタ
従DataGridView⇒SQL接続
の場合、ソートもできて軽さも維持。
2010年1月8日金曜日
DateGridViewの背景色をセルの値によって変更
Private Sub dgvSHITEKI_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvSHITEKI.CellFormatting
'セルの列を確認
If dgvSHITEKI.Columns(e.ColumnIndex).Name = "項目別合否" AndAlso TypeOf e.Value Is String Then
'セルの値により、背景色を変更する
If e.Value = "合格" Then
e.CellStyle.BackColor = Color.LimeGreen
ElseIf e.Value = "条件付合格" Then
e.CellStyle.BackColor = Color.Yellow
ElseIf e.Value = "不合格" Then
e.CellStyle.BackColor = Color.Red
End If
End If
End Sub
'セルの列を確認
If dgvSHITEKI.Columns(e.ColumnIndex).Name = "項目別合否" AndAlso TypeOf e.Value Is String Then
'セルの値により、背景色を変更する
If e.Value = "合格" Then
e.CellStyle.BackColor = Color.LimeGreen
ElseIf e.Value = "条件付合格" Then
e.CellStyle.BackColor = Color.Yellow
ElseIf e.Value = "不合格" Then
e.CellStyle.BackColor = Color.Red
End If
End If
End Sub
2009年12月23日水曜日
Fatal error encountered during command execution.
http://blogs.yahoo.co.jp/hilapon/3270487.html

Fatal error encountered during command execution.
というメッセージを吐く場合があります。クエリにパラメータを設け MySqlParameter クラスでパラメータを設定しない場合、この例外が発生します。例えば
Dim query AS String = "SELECT * FROM customer WHERE id = @id"このクエリの場合、パラメータ id には値が割り当てられてないため、MySqlCommand クラスはこの例外を発生します。以下のようにパラメーターを設定すれば、例外は発生しません。 (´∀`)
Dim command As New MySqlCommand(query, con)
command.ExecuteNonQuery()
Dim query AS String = "SELECT * FROM customer WHERE id = @id"また気をつけなければいけないのは、以下のケース。
Dim command As New MySqlCommand(query, con)
command.Parameters.Add(New MySqlParameter("id", 10))
command.ExecuteNonQuery()
select @data := 3, @data * 4
この場合、クエリ内でパラメータに値を設定してるから phpMyAdmin や Navicat では正常に実行されます。
しかし MySQL Connector/NET では
しかし MySQL Connector/NET では
Dim query AS String = "select @data := 3, @data * 4"
Dim command As New MySqlCommand(query, con)
command.ExecuteNonQuery()
Fatal error encountered during command execution.
・・・例外が発生します。(-ω-)
MySQL Connector/NET の仕様ということで注意が必要です。
ちなみに SQLClient の場合は・・・・・・・・・忘れた!(^ω^)
ちなみに SQLClient の場合は・・・・・・・・・忘れた!(^ω^)
あと、どのパラメータが設定されてないのか調べるには、例外をウオッチして InnerException プロパティを見れば判ります。このケースでは ?id というパラメータが設定されてないのが判ります。(-ω-)
2009年12月18日金曜日
Ctrl+A実装
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.A AndAlso e.Control Then
DirectCast(sender, TextBox).SelectAll()
End If
End Sub
カスタムコントロールで継承
If e.KeyCode = Keys.A AndAlso e.Control Then
DirectCast(sender, TextBox).SelectAll()
End If
End Sub
カスタムコントロールで継承
2009年12月17日木曜日
入力チェック Validatingイベント
yyyy/mm/ddといった日付の入力チェックに利用
Public Class Form1
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If ActiveControl.CausesValidation = False Then
Exit Sub
End If
If Not IsDate(TextBox1.Text) Then
MsgBox("日付を 2005/05/22 のような形式で入力してください。", MsgBoxStyle.Information)
e.Cancel = True
End If
End Sub
Private Sub TextBox1_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Validated
If ActiveControl.CausesValidation = False Then
Exit Sub
End If
TextBox1.Text = CDate(TextBox1.Text).ToString("yyyy/MM/dd")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard23.htm
Public Class Form1
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If ActiveControl.CausesValidation = False Then
Exit Sub
End If
If Not IsDate(TextBox1.Text) Then
MsgBox("日付を 2005/05/22 のような形式で入力してください。", MsgBoxStyle.Information)
e.Cancel = True
End If
End Sub
Private Sub TextBox1_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Validated
If ActiveControl.CausesValidation = False Then
Exit Sub
End If
TextBox1.Text = CDate(TextBox1.Text).ToString("yyyy/MM/dd")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard23.htm
2009年12月15日火曜日
VBを使ってMySQLに日付をINSERTする方法
変数が使えない。
関数を使ってダイレクトに入力
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cn As New MySql.Data.MySqlClient.MySqlConnection(My.Settings.SNConnectionString)
Dim cmd As MySql.Data.MySqlClient.MySqlCommand = cn.CreateCommand()
cmd.Connection = cn
cmd.CommandText = "insert into tbl_projectlog (logNO,ProjectCode,Schedule,Result,AddDate) VALUES ('" + DateTime.Now.ToString("HHmmss") + "','','','OK','" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "')"
cn.Open()
cmd.ExecuteNonQuery()
MessageBox.Show(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
cn.close()
End Sub
関数を使ってダイレクトに入力
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cn As New MySql.Data.MySqlClient.MySqlConnection(My.Settings.SNConnectionString)
Dim cmd As MySql.Data.MySqlClient.MySqlCommand = cn.CreateCommand()
cmd.Connection = cn
cmd.CommandText = "insert into tbl_projectlog (logNO,ProjectCode,Schedule,Result,AddDate) VALUES ('" + DateTime.Now.ToString("HHmmss") + "','','','OK','" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "')"
cn.Open()
cmd.ExecuteNonQuery()
MessageBox.Show(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
cn.close()
End Sub
2009年12月11日金曜日
登録:
投稿 (Atom)