trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

Crystarl Reportsのバージョンアップでハマる・・・

Visual Studio 2019で久しぶりにCrystal Reportsをいじると、何やら動作がおかしい。コンテキストメニューが2、3回ほどは普通に出るが、そのうち出なくなる。で、そのうちにVisual Studioの操作自体も固まったようになる。完全に固まってはいないのだけれ…

【Visual Studio 2019】Version 16.4.5に上げたら勝手に「マイコードのみを有効にする」のチェックが外れた

先ほど、Visual Studio 2019をVersion 16.4.5に上げたところ、デバックのオプションである「マイコードのみを有効にする」のチェックが勝手に外れ、以下の問題が再発。 突然、デバッグでアプリが動かなくなるから一瞬焦りました。 System.IO.FileNotFoundExc…

【Visual Studio】IAをPIAに変更してC#からExcelを操作できるようにする。Visual Studio 2008のプロジェクトをVisual Studio 2019へ

IAでExcelを操作しているVisual Studio 2008のプロジェクトをVisual Studio 2019に持ってくる。コンパイルはできるけど、Excelを操作するところで実行時エラーとなる。 「ファイルまたはアセンブリ 'Interop.Office, Version=2.1.0.0, Culture=neutral, Publ…

【Visual Studio 2019】コードエディタのコンテキストメニューに「このアイテムのフォルダーを開く」コマンドの追加

コードエディタで編集している際に、そのソースファイルがあるフォルダを開きたい場合があります。以下の記事で書いたように、 【Visual Studio】ソシューションエクスプローラーでファイルを選択し、そのファイルがあるフォルダをエクスプローラーで開く ht…

【C#】エラー CS7036 Hoge.Fuga(string 引数)' の必要な仮パラメーター '引数' に対応する特定の引数がありません。

以下のクラスを作成して、 public class Fuga { public Fuga(string param1) { this.param1 = param1; } public string param1 { get; set; } } 以下のように利用しようとすると、 var fuga = new Fuga {param1 = "あああ"}; エラー CS7036 Hoge.Fuga(string…

【Visual Studio】ソシューションエクスプローラーでファイルを選択し、そのファイルがあるフォルダをエクスプローラーで開く

意外に知らない人がいるんじゃないかと思ってTips。 Visual Studioのソシューションエクスプローラーでファイルを選択し、そのファイルがあるフォルダをエクスプローラーで開くショートカットは、デフォルトで CTRL + O です。 ファイルを開くのショートカッ…

タスクスケジューラーからタスクの手動実行で「ユーザーアカウントにこのタスクを実行するアクセス許可がありません」の対処法

タスクスケジューラ―の画面からタスクを手動実行させようとしたところ、「ユーザーアカウントにこのタスクを実行するアクセス許可がありません」というエラーが出て実行できない。 Administratorでログインしているのにもかかわらずである。 ネットを漁ると…

SQL Server リンクサーバーへアクセスする際のライセンスは?

SQL Serverでリンクサーバーとして設定してあるデータベースへのアクセスのライセンスが気になって確認してみた。日本マイクロソフトと日本オラクルに確認したところ、SQL ServerもOracleも、間接アクセスであっても直接アクセスと同等のライセンスが必要と…

【SQL Server】TRANSLATE的な関数を作ってみる

SQL Server 2017からTRANSLATE関数が導入されたことはご存じだろうか? Oracleなんかには以前よりあったから、よほど要望が強かったんでしょうね。 で、実際にTRANSLATE関数を使いたいけどSQL Server 2016以前が本番環境で動いていることもまだまだたくさん…

OPENQUERYの結果を変数に入れる

OPENQUERYの結果を変数に入れるには、次のようにOUTPUTを付けた変数を定義し、それに渡します。 declare @rowcnt int; set @sqlwk = 'select @rowcnt = count(*) from openquery(edpsrd, '' select 契約番号 from mine.dbo.契約テーブル where 契約番号 = ''…

WPFのコマンドボタン等の表示で改行する方法のまとめ

WPFのコマンドボタン等の表示で改行する方法として、まずXAMLだと以下の5つの方法を思いつきます。 ■1つめ 改行位置に&#xa;を使う <Button Text="1行目の文字列&#xa;2行目の文字列" />■2つめ 改行位置に&#10;を使う <Button Text="1行目の文字列&#10;2行目の文字列" />■3つめ 改行位置に&#13;を使う <Button Text="1行目の文字列&#13;2行目の文字列" />■4つめ <LineBreak />を使う <Button> <TextBlock>1行目の文字列<LineBreak />2行目の文字列</TextBlock>…</button></linebreak></button></button></button>

Windows FormアプリケーションからWPFのWindowを開いた際にTextBoxで半角入力ができない

過去に作成したWindows Formアプリケーションの機能アップをすべく、その部分はWPFで作成してます。 さて、問題にぶつかりました。Windows FormアプリケーションからWPFのWindowを開いた際に、そのWindowのTextBoxではなぜか半角入力を受け付けてくれません…

【SQL ServerからOracleへのリンクサーバー】列’xxx’に必要なデータ長に一致しないデータが返されました。必要な (最大) データ長は xxですが、返されたデータ長は xx です。

SQL ServerからOracleへのリンクサーバーを設定している状態で、例えば以下のSQLを実行すると次のエラーが出る。 select * from openquery(edpstv, 'select ''有'' as 有無 from BSS.契約 ') リンク サーバー 'edpstv' の OLE DB プロバイダー 'OraOLEDB.Ora…

SQL Server リンクサーバーにあるユーザー関数は呼び出せない

リンクサーのユーザー関数を使おうとすると、 「リモート関数参照 ・・・は許可されておらず・・・」のようなエラー出る。下記によれば、リンクサーバーにあるユーザー関数は呼び出せない仕様のようだ。Call User-defined Function on Linked Server :SQL Se…

order by句でcase式

order by句でcase式が使えることに気づいていない人が割と多い。 例えば以下の例では、通常は、 A, B, C, SA と並ぶところを、 SA, A, B, C と並び変えている。 order by case ランク when 'SA' then 1 else 2 end, case ランク when 'A' then 1 else 2 end,…

OracleとSQL ServerのSQLを同時に書いているとついnullの処理でうっかりしてしまう・・・

SQL Serverで、nullの場合に他の値に置き換える関数は、isnull。Oracleは、nvl。 まぁ、これは簡単なことなんだが、nullの時に空文字に置き換えようと、SQL Serverで以下のように書いていると isnull(A項目, '') つい、Oracleでも、 nvl(A項目, '') と書い…

SQL Server スキーマ名を省略したらアクセスできなくなった

以下のような簡単なSQLがアクセス出来なくなった。 select * from テーブルA 「オブジェクト名 'テーブルA' は無効です。」といったエラーが出る。以下のようにスキーマ名を付けるとちゃんとアクセスできる。 select * from hoge.テーブルA もちろん、ア…

SQL ServerからOracleへのリンクサーバーのパフォーマンス

Oracleへのリンクサーバーのテーブルを読む際に、とんでもなく遅いパフォーマンスのテーブルに出会った。 1つのテーブルから2件のレコードを読むだけなのに1分20秒もかかる。 一方で、6つぐらい外部結合していても数秒で表示されるクエリもある。 レコー…

System.IO.FileNotFoundException: 'ファイルまたはアセンブリ 'System.XmlSerializers, Version=4.0.0.0,・・・・・指定されたファイルが見つかりません。'

Visual Studio 2019に変えてから始めてだとおもうのだが、デバッグ実行すると以下の例外が発生した。 System.IO.FileNotFoundException: 'ファイルまたはアセンブリ 'System.XmlSerializers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934…

【Oracle】NVL関数ではまる。NZLから返される値と比較する場合、末尾の空白を考慮する必要がある

NVL関数は、レファレンスによると、NVL( 文字列 , 変換文字列 ), 文字列 がNULLの場合は、変換文字列を返します。とある。いたって簡単かつ便利な関数である。 ところがである。これにchar(2)などの固定長の項目を適用すると、末尾の空白を含めて比較しなけ…

OracleのSQLで、ERROR ORA-00907: 右カッコがありません。

久しぶりにOracleのSQLを書いていたのだが、以下のSQLで、 「ERROR ORA-00907: 右カッコがありません。」なんて謎のエラーが出た。 #下記のSQLは実際のSQLではなく、テーブル名や項目名を変え、かつ簡略化するために手動で書き換えてますので タイポとか…

T4でコード生成の自動生成化を進めていて思うこと

T4

ずーぅつとやってることなのだが、C#でコーディングする際に、T4というツールを使ってソースを生成する機能を進化させ続けている。大体、事務的なプログラミングのパターンは決まっているので、比較的こういうことには事務用アプリの作成には向いている。 今…

【SQL Server, SQL】削除フラグのあるテーブルの抽出条件 [初心者向けネタ]

あるレコードを表示したくなくて、削除フラグとか非表示フラグなんかが定義してあるレコードがよくあると思うんだが、そんなテーブルの抽出条件はcase句を使って以下のように簡単に書ける。 ちょっとしたTipsで知っている人も多いと思うが、意外に知らない人…

SQLからOracleサーバーへのリンクサーバーでwhere句の条件を変えるとなぜか結合する際のキーが一致しなくなる

SQL ServerからOracleをリンクサーバーにしてアクセスしているのだが、またまた不思議なことがあった。以下のようなSQLを書いたのだが、なぜかユーザー名が表示されない。もちろんデータもあるし、SQLも間違いない。 実際、Oracle上で試したが問題なかった。…

SQL ServerからOracleへのリンクサーバーでbitは使えない!?

SQL ServerからOracleのリンクサーバーへ以下のストアドプロシージャを実行したところ、 EXEC sp_executesql @sqlwk, N'@タイム抽出 bit,@抽出期間開始 char(8), @抽出期間終了 char(8), ・・・・・・・ 以下のエラーが表示された。 リンク サーバー "HogeSe…

デスクトップを暗号化したら解除できない罠

PC

デスクトップにファイルを作成すると、なんでもかんでもアイコンの右上に鍵のマークが表示される現象が発生したとヘルプを求められる。 調べてみると、デスクトップフォルダの「内容を暗号化してデータをセキュリティで保護する」チェックを外せば良いのだが…

SQL Server Management Studio クエリーウインドウのタブを切り替えた際にウインドウの内容が更新されないことがある場合の対処方法

新しいPCにSQL Server Management Studio (SSMS)のv.18.4を入れて初めて使ってみたのがだが、クエリウインドウのタブを切り替えた際に、たまに画面が更新(リフレッシュ)されないことがある。ググると、 SQL Management Studio 18 Screen Refresh Problem h…

Windows FormプロジェクトにWPFプロジェクトで開発して機能を追加する

Window Formプロジェクトのアプリがあり、それに機能を追加する案件が発生しました。今更Windows Formで開発したくもなく、かといってWPFプロジェクトで全て作り直すのもアホらしいのです。 で、新規開発はWPFプロジェクトで作成し、それをWindows Formプロ…

Visual Studio 2015 Xamlで参照しているクラスやリソースが見つからない

Visual Studio 2015でのお話。他のバージョンのVisual Studioでもそうかもしれない。少なくともVisual Studio 2013はそうだ。なぜなら解決策が書いてあったページの症例がVisual Studio 2013だったからだ。 Xamlで参照しているクラスやリソースが見つからな…

Visual Studio 2010での不思議。「○○クラスは○○で既に定義されています」

ちょっと不思議なことがありました。 Visual Studio 2010(以下、VS2010)で改修作業を行ってコンパイルしたところ、hogefugaクラス(仮名)が「hogefugaクラスは既に定義されています。」と突然エラーになった。 VS2010で検索するも他にヒットせず。エクス…