C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■9038  Re[3]: リストボックスの全アイテムをテーブルと差分を取り更新
□投稿者/ 魔界の仮面弁士 -(2007/10/17(Wed) 09:23:42)
    No9034 (みこ さん) に返信
    > ですので1件ごとに処理をしなければならないのでは?と思ったのですが、そうではないのでしょうか?

    いえ。それらの処理は、Adapter 側で自動的に処理させることができます。


    DataSet(というよりも、その中のDataTable)に登録された行(DataRow)は、
    それぞれ、RowState という「状態」を持っています。

    その状態が Unchanged なら「変更なし」、Modified で「修正あり」、Added は「追加」、Deleted が「削除」です。
    それぞれについて、編集前の値を得る事も、編集後の値を得ることもできます。(DataRowVersion)


    そして DataAdapter/TableAdapter の Update では、各行の RowState を基に、自動的に
    INSERT / UPDATE / DELETE の SQL コマンドを発行してくれます。

    この SQL とは、Adapter 側の InsertCommand / UpdateCommand / DeleteCommand プロパティです。
    これらのコマンド設定次第で、悲観的更新も楽観的更新も可能となっています。
    # 悲観的…編集対象の行が、既に他のユーザによって編集済みの場合、更新失敗として扱う。
    # 楽観的…他のユーザによる編集結果を無視して、後書き優先として扱う。

    [行の状態とバージョン]
    http://msdn2.microsoft.com/ja-jp/library/ww3k31w0%28VS.80%29.aspx

    [コマンドの自動生成] - [更新および削除のオプティミスティック同時実行制御]
    http://msdn2.microsoft.com/ja-jp/library/tf579hcz%28VS.80%29.aspx
記事No.8996 のレス /過去ログ21より / 関連記事表示
削除チェック/

■55908  Re[5]: WebBrowserコントロールで選択したファイル情報
□投稿者/ 魔界の仮面弁士 -(2010/12/17(Fri) 19:01:53)
    No55896 (やんまー さん) に返信
    >>SelectionChanged イベントで代用できませんか?
    > そもそもこれはどうやって書いたらいいのでしょうか。
    
    レイトバインドだと面倒そうなので、タイプライブラリを用いる方法でのサンプルです。
    参照設定で、COM の [Microsoft Shell Controls And Automation] を加えておいてください。
    
    Imports System.Runtime.InteropServices
    Public Class Form1
        'WithEvents にはしない
        Private FolderView As Shell32.ShellFolderView
    
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            ListBox1.Items.Clear()
            ListBox2.Items.Clear()
            WebBrowser1.Navigate(TextBox1.Text)
        End Sub
    
        Private Sub FolderView_SelectionChanged()
            Dim fld As Shell32.Folder = FolderView.Folder
    
            'ListBox1 に「FocusedItem」を取得
            ListBox1.BeginUpdate()
            ListBox1.Items.Clear()
            Dim focusedItem As Shell32.FolderItem = FolderView.FocusedItem()
            ListBox1.Items.Add(focusedItem.Path)
            For column As Integer = 0 To 63
                Dim title As String = fld.GetDetailsOf(fld, column)
                If String.IsNullOrEmpty(title) Then
                    Continue For
                End If
                ListBox1.Items.Add(" " & title)
                ListBox1.Items.Add("  " & fld.GetDetailsOf(focusedItem, column))
            Next
            Marshal.FinalReleaseComObject(focusedItem)
            ListBox1.EndUpdate()
    
            'ListBox2 に「SelectedItems」を取得
            ListBox2.BeginUpdate()
            ListBox2.Items.Clear()
            Dim selectedItems As Shell32.FolderItems = FolderView.SelectedItems()
            ListBox2.Items.Add(String.Format("{0:#,0}個のアイテムが選択されています。", selectedItems.Count))
            For n As Integer = 0 To selectedItems.Count - 1
                Dim fi As Shell32.FolderItem = selectedItems.Item(n)
                ListBox2.Items.Add(fi.Path)
                Marshal.FinalReleaseComObject(fi)
            Next
            Marshal.ReleaseComObject(selectedItems)
            ListBox2.EndUpdate()
    
            Marshal.ReleaseComObject(fld)
        End Sub
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            WebBrowser1.ScriptErrorsSuppressed = True
            WebBrowser1.AllowWebBrowserDrop = False
            WebBrowser1.AllowNavigation = True
            ListBox1.Items.Add("フォーカスのあるアイテム")
            ListBox2.Items.Add("選択されているアイテム")
    
            TextBox1.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
            Button1.Text = "移動"
        End Sub
    
        Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, _
            ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            If FolderView IsNot Nothing Then
                RemoveHandler FolderView.SelectionChanged, AddressOf FolderView_SelectionChanged
                If Marshal.IsComObject(FolderView) Then
                    Marshal.ReleaseComObject(FolderView)
                End If
                FolderView = Nothing
            End If
            Dim doc As Object = Nothing
            Try
                doc = WebBrowser1.ActiveXInstance.Document
                FolderView = TryCast(doc, Shell32.ShellFolderView)
                AddHandler FolderView.SelectionChanged, AddressOf FolderView_SelectionChanged
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                If doc IsNot Nothing AndAlso FolderView Is Nothing Then
                    If Marshal.IsComObject(doc) Then
                        Marshal.ReleaseComObject(doc)
                    End If
                End If
            End Try
        End Sub
    
        Private Sub Form1_FormClosing(ByVal sender As Object, _
            ByVal e As FormClosingEventArgs) Handles Me.FormClosing
            If FolderView IsNot Nothing Then
                If Marshal.IsComObject(FolderView) Then
                    Marshal.ReleaseComObject(FolderView)
                End If
            End If
        End Sub
    End Class
記事No.55470 のレス /過去ログ93より / 関連記事表示
削除チェック/

■55909  Re[6]: WebBrowserコントロールで選択したファイル情報
□投稿者/ やんまー -(2010/12/17(Fri) 19:06:08)
    2010/12/27(Mon) 14:02:44 編集(投稿者)
    2010/12/20(Mon) 13:06:55 編集(投稿者)

    魔界の仮面弁士 さま

    ありがとうございました。

    サンプル、バッチリ動作いたしました!


    Private FolderView As Shell32.ShellFolderView

    としておいて

    Private Sub FolderView_SelectionChanged()

    とすればイベントとして処理されるという寸法なのですね?!

    もうすこしいじって勉強させてもらおうと思います。


    ありがとうございました!
記事No.55470 のレス / END /過去ログ93より / 関連記事表示
削除チェック/

■92580  Re[1]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 魔界の仮面弁士 -(2019/10/08(Tue) 17:59:51)
    No92579 (初心者 さん) に返信
    > 生き詰まっております。
     行き詰まる?

    > 例えばDATE1を基準としたときに、DATE1よりもDATE2の方が古い日付(年月)の場合はFalseつまり0
    > それ以外の場合はTrueつまり0としたいのですがどうクエリに記述したらいいのか分からず

    False も True も固定値 0 で表すのなら、そもそも判断する必要も無いかも。

    DATE1 < DATE2 を「0」
    DATE1 ≧ DATE2 を「1」と表すなら、たとえばこうとか。

    SELECT ID1, ID2, CASE WHEN DATE1 < DATE2 THEN 0 ELSE 1 END As olddate FROM Teble1
記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92583  Re[2]: MySQLを使って日付(年月)の比較をしたい。
□投稿者/ 初心者 -(2019/10/09(Wed) 09:31:15)
    No92580 (魔界の仮面弁士 さん) に返信

    >  行き詰まる?

    漢字間違えました…。

    > False も True も固定値 0 で表すのなら、そもそも判断する必要も無いかも。
    >
    > DATE1 < DATE2 を「0」
    > DATE1 ≧ DATE2 を「1」と表すなら、たとえばこうとか。
    >
    > SELECT ID1, ID2, CASE WHEN DATE1 < DATE2 THEN 0 ELSE 1 END As olddate FROM Teble1

    実装できました、ありがとうございます。
    他にも条件を加える場合は、CASE分を増やせばいいんですよね?

    (魔界の仮面弁士さんが教えてくださった例えの不等号が逆の場合)
    DATE1 < DATE2 を「0」
    DATE1 ≦ DATE2 を「1

    CASE WHEN DATE1 < DATE2 THEN 0 ELSE 1 END As nowdate


記事No.92579 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -