ラベル VB の投稿を表示しています。 すべての投稿を表示
ラベル VB の投稿を表示しています。 すべての投稿を表示

2010年3月20日土曜日

アポストロフィのReplace処理

Replace(targetword,"'","''")

2つにするとよい

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

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

2010年2月19日金曜日

テキストボックスの文末にカーソルを移動したい

TextBox1.SelectionStart=textBox1.Text.Length

開発途中のデータ型(長さ)変更

データの長さを変更することはよくあります。
この場合、
まず、DB側は単にデータの長さを変更します。
VB側はDataSet.xsdを開き、テーブルアダプターのカラムのMaxLengthを修正します。

2010年2月10日水曜日

2010年1月21日木曜日

MySQLと.NETの日付の互換性

MySQL側
× 0000-00-00 00:00:00
○ 0001-01-01 00:00:00

2010年1月10日日曜日

VBアプリにおけるDataGridViewリレーションの作り方

主従のDataGridViewがある場合、
従の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

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"
Dim command As New MySqlCommand(query, con)
command.ExecuteNonQuery()
このクエリの場合、パラメータ id には値が割り当てられてないため、MySqlCommand クラスはこの例外を発生します。以下のようにパラメーターを設定すれば、例外は発生しません。 (´∀`)
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 では
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 の場合は・・・・・・・・・忘れた!(^ω^)


あと、どのパラメータが設定されてないのか調べるには、例外をウオッチして InnerException プロパティを見れば判ります。このケースでは ?id というパラメータが設定されてないのが判ります。(-ω-)

イメージ 1




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


カスタムコントロールで継承

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

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

2009年12月11日金曜日

TableAdapterは重い

リレーションすると特に重い。
ReadOnlyの場合ならDataReaderを採用し、
TableAdapterは使わないのが軽量化につながります。