Localkit が起動しない!

Posted by muchag | Monaca |
初回投稿:2018-02-18 (日) 21:59:11 | 最終更新:2018-02-18 (日) 22:08:47

【環境】
Monaca LocalKit: 2.5.0? → 2.5.1
経緯

ある日突然 Localkit が起動しなくなった。

アプリアイコンをクリックして、処理中のグルグルが断続的に2,3回出たものの
サッパリ起動しない。

Localkit をアンインストールして、再インストールしてもダメ。

原因

不明。

解決

teratail:Monaca LocalKitが起動されません(2017-12-11)
こちらの記事のおかげで解決。

記事にある通り、下記手順にて無事に起動するようになった。

  1. Localkit(おそらく 2.5.0)をアンインストール
  2. 下記2ディレクトリを削除
    1. ローカルディスク(c)/Users/(ユーザ名)/.cordova
    2. ローカルディスク(c)/Users/(ユーザ名)/AppData/Roaming/Monaca Localkit
  3. Localkit 2.5.1 を再インストール

私が戸惑っている数ヶ月の間に、解決記事がアップされていて助かりました。
ありがとうございました。

プロジェクト追加

プロジェクトが綺麗サッパリなくなっていたので

  1. 左ペイン「プロジェクト一覧」右にある+ボタンから
  2. [インポート]-[Cordova プロジェクトをインポート]
  3. 「既存の Cordova プロジェクトをインポート」
    1. 作業ディレクトリ:[参照] からローカルリポジトリ(ディレクトリ)を選択
    2. プロジェクト名:任意
    3. [インポート]
Posted by muchag | Monaca |
初回投稿:2018-02-18 (日) 21:59:11 | 最終更新:2018-02-18 (日) 22:08:47

DateTime

Posted by muchag | C# |
初回投稿:2018-02-11 (日) 12:23:12 | 最終更新:2018-02-11 (日) 12:28:15


MSDN:DateTime 構造体
MSDN:DateTime 演算子
MSDN:DateTimeOffset 構造体

【環境】
Visual C#: 15.5.4(2017)
文字列変換

dobon.net:日時(DateTimeオブジェクト)を文字列に変換する

Posted by muchag | C# |
初回投稿:2018-02-11 (日) 12:23:12 | 最終更新:2018-02-11 (日) 12:28:15

双方向データバインド

Posted by muchag | C# |
初回投稿:2018-02-11 (日) 12:21:07 | 最終更新:2019-12-17 (火) 21:18:59

【環境】
.NET Framwork: 4.5
Visual Studio: 2019C 16.4.1
前提

今回は、VB 案件で試したので、VB で。

本体プロジェクト(Windows フォームアプリ)とは別に
ユーザコントロール用クラスライブラリプロジェクトを作成。
(以下、コントロールプロジェクト)

手順
コントロールデザイン

コントロールプロジェクトを新規作成。

デフォルトで用意されたファイルに、テキストボックスなどを配置。

データバインディング用クラスを作成

Public Class ProfileEntity
    Public Property FirstName() As String = ""
    Public Property FamilyName() As String = ""
    Public Property Age() As Integer = 0
    Public Property Gender() As Integer = 0
End Class

そして、性別ラジオボタンのデータバインディングをどうすればよいか
と考えたら、全然思いつかなかった。

Google 先生にも質問してみたけど
ドンピシャの回答は得られなかった。

今後の課題。

バインディング
  1. [データソース] ビューで、[新しいデータソースの追加]
  2. 「データソースの種類の選択」ダイアログ
    1. [オブジェクト] を選択
    2. [次へ]
  3. 「データ オブジェクトの選択」ダイアログ
    1. ツリーを開いて、対象オブジェクトにチェック
    2. [完了]
  4. コントロールデザインへ、DataSource コントロールを配置
    1. DataSource コントロールの DataSource プロパティから
      1. [他のデータソース]-[プロジェクト データソース]-[(先程登録したオブジェクト)]
  5. フォーム上の各コントロールの (DataBindings) の対象プロパティへ、オブジェクトプロパティをバインディング
    1. ComboBox:SelectedValue プロパティ?
    2. TextBox:Text プロパティ
  6. ソースへデータオブジェクトのインスタンスを、DataSource へ設定するメソッドを追加

Public Sub SetDataSource(ByVal profile As ProfileEntity)
    Me.DataSource1.DataSource = profile
End Sub

試行錯誤に書いた通り、DataSource プロパティを外から設定することはできない。

フォーム利用
  1. コントロールプロジェクトをビルド
  2. 本体プロジェクトを新規作成
  3. 本体プロジェクト内の [参照] のコンテキストメニューから [参照の追加]
  4. 「参照マネージャー」ダイアログ
    1. [参照] から、コントロールプロジェクトの .dll を選択
  5. コントロール追加 の手順でツールボックスへ自作コントロールを追加
  6. 自作コントロールを、ツールボックスからフォームへ D&D
参考サイト

MSDN:とあるコンサルタントのつぶやき Part 1. 双方向データバインドの基本的な使い方(2009-02-26)
→とてもわかりやすい解説

@IT:WPF/UWP:ラジオボタンを双方向バインディングするには?[C#/VB](2016-02-03)
→ラジオボタンにおける双方向データバインド

試行錯誤
ユーザコントロールクラスを作成

UserControl クラスを継承するのに、下記のように書いたら

ステートメントの終わりを指定してください。

と怒られた。


Public Class ProfileControl Inherits UserControl

End Class

これが正解。


Public Class ProfileControl
    Inherits UserControl

End Class
データバインディング用クラスを作成
メンバ変数

メンバ変数ではダメ。

これでは、データバインディングのときに
選択肢として出てこなかった。

Public Class ProfileEntity
    Public FirstName As String = ""
End Class
古い記述

プロパティとして宣言すれば問題なかった。

けど、これは古い書き方らしい。


Public Class ProfileEntity
    Private _firstName As String = ""
    Public Property FirstName() As String
        Get
            Return _firstName
        End Get
        Set(value As String)
            _firstName = value
        End Set
    End Property
End Class
DataSource 設定

コントロールを利用するフォーム側で DataSource を設定しようとしたら
できなかった。

なので、コントロール側に、DataSource を設定するメソッドを追加した。

Posted by muchag | C# |
初回投稿:2018-02-11 (日) 12:21:07 | 最終更新:2019-12-17 (火) 21:18:59

LINQ -> Where

Posted by muchag | C# |
初回投稿:2018-02-08 (木) 10:54:02 | 最終更新:2018-02-11 (日) 12:16:10

【環境】
Visual C#: 15.5.4(2017)
OR

if 文と同じように書けば良い。


.Where(x => x == 1 || x => x == 2)
動的に生成

C#erの備忘録:Linqの動的条件生成ライブラリ(2013-02-16)
→ありがたくライブラリを使わせていただいたけど、期待通りには動かなかった。


var condition = ConditionChain.Create(condition1).OrElse(condition2);

ここで、null になっちゃったんだったっけか。。。

Posted by muchag | C# |
初回投稿:2018-02-08 (木) 10:54:02 | 最終更新:2018-02-11 (日) 12:16:10

Database operation expected to affect 1 row(s) but actually affected 0 row(s).

Posted by muchag | C# |
初回投稿:2018-02-06 (火) 0:12:26 | 最終更新:2018-02-06 (火) 0:17:58

【環境】
Visual C#: 15.5.4(2017)
経緯

SQLite3 で管理しているデータを削除しようとしたら
下記エラーが出た。

{“Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions.”} Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException

データが既に更新またや削除されているよ。。。って、誰よ~TT

原因

データベースに格納されている日付文字列が「2018-02-05」となっていたため
DateTime 型で値を持っている C# では「2018-02-05 00:00:00」となり
整合性が取れなくなっていたみたい。

解決

データベース側の値を「2018-02-05 00:00:00」とすることで
エラーは出なくなった。

愚痴

そもそも SQLite のデータ型に DateTime がないから・・・。
ん~なんで、初期データを「2018-02-05」しちゃったんだろう。。。
私がアホなだけよね。。。

Posted by muchag | C# |
初回投稿:2018-02-06 (火) 0:12:26 | 最終更新:2018-02-06 (火) 0:17:58