Dim aaa() as String
aaa(i) = "テスト"
これはNG
最初の宣言の時点では未定義の状態らしい。
なので、Splitなどで空を入れる必要があるとか。
激しくハマった……。
VB6 文字を日付に
String→Date
CDate(Format("20071019", "@@@@/@@/@@"))
結果:2007/10/19(Date)
初め、「yyyy/MM/dd」とかやっていてちっともできなかった。まさか「@」とは。
.NETばかりで、急にVB6をやると、これはこれで苦労する……。
CDate(Format("20071019", "@@@@/@@/@@"))
結果:2007/10/19(Date)
初め、「yyyy/MM/dd」とかやっていてちっともできなかった。まさか「@」とは。
.NETばかりで、急にVB6をやると、これはこれで苦労する……。
行継続文字 ( _) を使いすぎています。
久しぶりのVB6。
可読性を上げるために文字列を_(アンダーバー)でつなげていたが、どうやら25行以上はつなげられないようだ……。
以下の行で「&」を使ってくっつけるしかない。
可読性を上げるために文字列を_(アンダーバー)でつなげていたが、どうやら25行以上はつなげられないようだ……。
以下の行で「&」を使ってくっつけるしかない。
SQLServer テーブルが存在するか判別
IF object_id(' TableName ') IS not NULL
SELECT '1'
ELSE SELECT '0'
存在すれば1、しなければ0を返す。
SELECT '1'
ELSE SELECT '0'
存在すれば1、しなければ0を返す。
「Word」仕様
Microsoft Wordを使用していて、ファイルを開くと常に先頭になるのがうっとうしいなぁ、と思っていたら、Shift + F5 で最後に編集していた箇所に飛べるらしい。
ふむ、たしかに飛べる。
一太郎は確か、ファイルを開けば前回編集していたところになったと思った。
どちらがいいのかは使用者のスタイルによって異なるだろうけれど。
ふむ、たしかに飛べる。
一太郎は確か、ファイルを開けば前回編集していたところになったと思った。
どちらがいいのかは使用者のスタイルによって異なるだろうけれど。
作業の開始
気になり出すとうっとうしくてしょうがないOfficeの意味不明な機能たち。
そんな機能の一つ、アプリケーションを起動するたびに出る「作業の開始」ウィンドウを消す方法。
こういう機能は、あった方がいいっていう要望から実装されているのかね?
そんな機能の一つ、アプリケーションを起動するたびに出る「作業の開始」ウィンドウを消す方法。
1.Office アプリケーションを起動します。
2.[ツール] メニューの [オプション] をクリックします。
3.[表示] タブで、[起動時作業ウィンドウ] または [起動時に作業ウィンドウを表示] チェック ボックスをオフにし、[OK] をクリックします。
[OFF2003] [作業の開始] 作業ウィンドウに関する一般情報
こういう機能は、あった方がいいっていう要望から実装されているのかね?
「日付型」の上限
日付型の上限は9999年の12月31日59分59秒だとか。
それまでは「Date.DaysInMonth」を使用してもちゃんと末尾が帰ってくる(当たりまえか)。
しかし、9999年って…。
そのころになるとまた9999年問題とか出るのかもしれないが、そもそも今あるシステムがそこまで動いていないだろうね。
ちなみに、スタートは当然「1年」から。
それまでは「Date.DaysInMonth」を使用してもちゃんと末尾が帰ってくる(当たりまえか)。
しかし、9999年って…。
そのころになるとまた9999年問題とか出るのかもしれないが、そもそも今あるシステムがそこまで動いていないだろうね。
ちなみに、スタートは当然「1年」から。
「Console.WriteLine」の罠
ループを回して文字列を処理していたところ、どうも処理が引っかかる箇所がある。原因を追及するためにソースと睨めっこしても、とくに問題はなさそう。
そんなおり、「Console.WriteLine(...」の一行を発見。
コメントアウトしたところ、処理がスムーズに進むようになった。
まぁ、私はあまりこれは使わないが、意外と負荷がかかるようだ。
そんなおり、「Console.WriteLine(...」の一行を発見。
コメントアウトしたところ、処理がスムーズに進むようになった。
まぁ、私はあまりこれは使わないが、意外と負荷がかかるようだ。
「SQL Server Management Studio」との闘い
「SQL Server Management Studio」。
SQLコマンドで、文字列("0"など)をキャストせずに強引に日付型のテーブルにインサートしたら、アプリごと落ちた(笑)。何度やっても落ちる。
まぁ、無茶ではあるけれど、落ちることないじゃないの。
SQLコマンドで、文字列("0"など)をキャストせずに強引に日付型のテーブルにインサートしたら、アプリごと落ちた(笑)。何度やっても落ちる。
まぁ、無茶ではあるけれど、落ちることないじゃないの。
「子ウィンドウ」との闘い
親ウィンドウを閉じると子ウィンドウも連動して閉じるJavaScript。
親のBody要素にウィンドウを閉じたときの処理をかませておく。
onUnload="javascript:childWindow.close()"
子ウィンドウを開く
childWindow = window.open('child.html', '', ...
ただし、子ウィンドウのオブジェクトをグローバル変数で宣言しておかないと、閉じるウィンドウがないよ、とエラーがでる。変数のスコープに関してはブラウザごとに微妙な差があるので注意する(と思った)。
IEの場合、関数内の変数はその関数のみ有効なので注意する。
親のBody要素にウィンドウを閉じたときの処理をかませておく。
onUnload="javascript:childWindow.close()"
子ウィンドウを開く
childWindow = window.open('child.html', '', ...
ただし、子ウィンドウのオブジェクトをグローバル変数で宣言しておかないと、閉じるウィンドウがないよ、とエラーがでる。変数のスコープに関してはブラウザごとに微妙な差があるので注意する(と思った)。
IEの場合、関数内の変数はその関数のみ有効なので注意する。
「App_Offline.htm」との闘い
ASP.NET Webアプリのルートに App_Offline.htm というファイルが置いてあると一時的にそのアプリを停止することができる。エラーが出てアプリが動かなくなったとき、なぜかこれが作成されていてアクセスできずにちょっと焦った。
本来はメンテ時に使用するらしい。
参考サイト
本来はメンテ時に使用するらしい。
参考サイト
[.NET] "旧形式です" という警告
.NET Framework 1.1 から .NET Framework 2.0 へ移行し、古いソースを移植しようとしたときにたびたび出る「旧形式です」。これを見るたび、勝手に変えるなよな~、と思ってしまいますが、まぁそれはそれとして変更していくしかないですね。
SqlCommandのコレ
.Parameters.Add
↓
.Parameters.AddWithValue
Web.configから値を引っ張ってくるときにとくにハマる
ConfigurationSettings.AppSettings(" key ")
↓
ConfigurationManager.AppSettings(" key ")
SqlCommandのコレ
.Parameters.Add
↓
.Parameters.AddWithValue
Web.configから値を引っ張ってくるときにとくにハマる
ConfigurationSettings.AppSettings(" key ")
↓
ConfigurationManager.AppSettings(" key ")
「Splitメソッド」との闘い
StringクラスにあるSplitメソッド。
.NET Framework 2.0から追加されたのだが、これが便利すぎる。
複数検索機能拾を作るときには必需品なのだが、この第2パラメータが超絶便利。
None 空白を含める
RemoveEmptyEntries 空白を含めない
' 文字列
Dim keywords As String
Dim words() As String
' 分割
words = keywords.Split(splitKey, StringSplitOptions.RemoveEmptyEntries)
はじめは、このパラメータを知らなくて空白を除去しようと苦労した。
.NET Framework 2.0から追加されたのだが、これが便利すぎる。
複数検索機能拾を作るときには必需品なのだが、この第2パラメータが超絶便利。
None 空白を含める
RemoveEmptyEntries 空白を含めない
' 文字列
Dim keywords As String
Dim words() As String
' 分割
words = keywords.Split(splitKey, StringSplitOptions.RemoveEmptyEntries)
はじめは、このパラメータを知らなくて空白を除去しようと苦労した。
GridViewのセルの値を取り出す
GridViewの任意のセルから値を引き出したいとき。
たまに忘れていることがある。
「.ToStrin」ではなく「.Text」。
たまに忘れていることがある。
GridView2.Rows( 縦番号 ).Cells( 横番号 ).Text
「.ToStrin」ではなく「.Text」。
「GridViewの選択ボタン」との闘い2
テンプレート列にボタンを設置して値を拾おうと考えたのだが、SelectedIndexが「-1」しか返ってこない。
どうも内部的には「選択」されているわけではない模様。
いろいろ調べると、「選択」させるのはあくまで「SelectedIndexChanged」であり、Indexはこのイベントが起こったときにしか取得できない(と思う)。
これを解決するために一番手っ取り早い方法は、テンプレート列に配置してあるボタンのCommandNameを「Select」にしてしまう。こうすると、Selectボタンのイベントを拾うことができ、Indexも取得できる、ということ。
ただ、これをすると今度は列が選択状態になってしまう。
これは、Indexを取得した後、SelectedIndexを「-1」にしてイベントを終えることで対処できる。
対処できるが、ほんとにこれでいいのか…!?
どうも内部的には「選択」されているわけではない模様。
いろいろ調べると、「選択」させるのはあくまで「SelectedIndexChanged」であり、Indexはこのイベントが起こったときにしか取得できない(と思う)。
これを解決するために一番手っ取り早い方法は、テンプレート列に配置してあるボタンのCommandNameを「Select」にしてしまう。こうすると、Selectボタンのイベントを拾うことができ、Indexも取得できる、ということ。
ただ、これをすると今度は列が選択状態になってしまう。
これは、Indexを取得した後、SelectedIndexを「-1」にしてイベントを終えることで対処できる。
対処できるが、ほんとにこれでいいのか…!?
配列の型変換
関数から戻り値を受け取るときに、それが配列だったりすると型変換を変える必要がある。
初歩的な部分であるけれど、一瞬迷った。
まぁ、CStr()なんて使わなきゃいいのかもしれないけど。
初歩的な部分であるけれど、一瞬迷った。
NG
Dim key() As String
key = CStr( procedure)
OK
Dim key() As String
key = CType( procedure , String())
まぁ、CStr()なんて使わなきゃいいのかもしれないけど。
「テンプレート列」との闘い
テンプレート列にテキストボックスを配置し、その値を取り出すには以下のようにする。
この場合は、テキストボックスの値を拾う。戻りは文字列型。
... = CType(GridView1.FooterRow.FindControl(" ID "), TextBox).Text
この場合は、テキストボックスの値を拾う。戻りは文字列型。
... = CType(GridView1.FooterRow.FindControl(" ID "), TextBox).Text
「GridViewの選択ボタン」との戦い
GridViewにボタンをつけて、選択させるということもよくある。
そこで選択された行に対して、キーを拾うと思うのだが、これがDataGridとは多少変わっていた。
他にやり方があるのかもしれないけど、とりあえずこれで対処。
そこで選択された行に対して、キーを拾うと思うのだが、これがDataGridとは多少変わっていた。
DataGrid
e.Item.Cells(0).Text
GridVIew
GridView1.Rows(CInt(e.CommandArgument)).Cells(0).Text
他にやり方があるのかもしれないけど、とりあえずこれで対処。
「GridViewのフッターに合計値」との闘い
かなりよくある要望。
こちらのサイトにて万事解決。
http://akiokasai.qsh.eu/samples/060713-1.aspx
合計だけではなく、平均も出せます。
GridViewの「showfooter」プロパティを"true"にしておかないと、表示されません。
……当たり前かもしれませんが。
こちらのサイトにて万事解決。
http://akiokasai.qsh.eu/samples/060713-1.aspx
合計だけではなく、平均も出せます。
GridViewの「showfooter」プロパティを"true"にしておかないと、表示されません。
……当たり前かもしれませんが。
「Officeの個人情報」との闘い
パソコン君の親友、Microsoft Office。
文章を書いたり、表計算をしたり、大忙しです。
でも、このOfficeファイルには、個人情報がたっぷりと保存される仕様になっています。ファイルを右クリックして、プロパティを見ると……。
必要な人しかありがたくない機能をカットするツールがありました。
こういう部分から、流出したときに足がついちゃったりするのよね。
文章を書いたり、表計算をしたり、大忙しです。
でも、このOfficeファイルには、個人情報がたっぷりと保存される仕様になっています。ファイルを右クリックして、プロパティを見ると……。
必要な人しかありがたくない機能をカットするツールがありました。
こういう部分から、流出したときに足がついちゃったりするのよね。
「SQL Serverの予約語」との闘い
予約語一覧(SQL Server Compact Edition)
インポートしたテーブルに「user」っていうのがあってはまった。
こんなにたくさんあったのね。
Management Studioでテーブルを作る時点では、警告が出ない。
でも、取り出そうとするとエラーが出る(SQL文が間違っています、など)。
インポートしたテーブルに「user」っていうのがあってはまった。
こんなにたくさんあったのね。
Management Studioでテーブルを作る時点では、警告が出ない。
でも、取り出そうとするとエラーが出る(SQL文が間違っています、など)。
[Adobe Reader] Updater5 というフォルダは何?
マイドキュメントに Updater5 というフォルダがあることに気づく。
調べてみると、どうやら Adobe Reader 8.0 がアップデート用の一時ファイル置き場として使っているとのこと。

ファイルの保存先を変更すれば、自動的に作られる (マイドキュメントに) ことはなくなるようだ。
調べてみると、どうやら Adobe Reader 8.0 がアップデート用の一時ファイル置き場として使っているとのこと。

ファイルの保存先を変更すれば、自動的に作られる (マイドキュメントに) ことはなくなるようだ。
Cache メンバ
' キャッシュに値を入れる
Cache.Insert("1", "テスト")
Cache("1") = "テスト1"
' キャッシュの取り出し
Cache.Item("1")
Cache.Get("1")
xxxx = Cache("1")
' キャッシュの数(数値型で戻す)
Cache.Count
' キャッシュの削除
Cache.Remove("1")
Cache.Insert("1", "テスト")
Cache("1") = "テスト1"
' キャッシュの取り出し
Cache.Item("1")
Cache.Get("1")
xxxx = Cache("1")
' キャッシュの数(数値型で戻す)
Cache.Count
' キャッシュの削除
Cache.Remove("1")
VB.NETで乱数を発生させる
Dim rnd As New Random(1000)
' 1から3までの乱数(4は含まれないことに注意する)
Dim iRnd As Integer = rnd.Next(1, 4)
FileUploadクラス
FileUploadクラス
「.NET Framework version 2.0」より追加されたクラス。ファイルのアップロードを行う。
ユーザーがアップロードするファイルを選択した後、自動的に送信されるわけではないので別にアップロードボタンを用意する必要がある。AJAX処理はできない。
「.NET Framework version 2.0」より追加されたクラス。ファイルのアップロードを行う。
ユーザーがアップロードするファイルを選択した後、自動的に送信されるわけではないので別にアップロードボタンを用意する必要がある。AJAX処理はできない。
Connectionプロパティは初期化されていません
このエラーの最も可能性の高い原因として、コマンド オブジェクトに、有効なデータ接続オブジェクトへの参照が含まれていないことが考えられます。この問題は一般に、既存の接続オブジェクトを削除して再作成したときに生じます。
MSDN
接続情報が参照できなかった時に起こる。
「Web.config」に記述してたときに、参照先が間違っていたときに起こった。
MSDN
接続情報が参照できなかった時に起こる。
「Web.config」に記述してたときに、参照先が間違っていたときに起こった。
WindowsフォームのDataGridで表示されているレコード数をカウントする
実際に表示されているレコード数。
0からではなく、1からカウントする。
0からではなく、1からカウントする。
Dim count As Integer
count = DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember).Count
文字列の連結時におけるパフォーマンス
文字列の連結に「+演算子」を使用すると手軽ではあるが、高速に処理するのには適さないので「StringBuilderクラス(System.Text.StringBuilder)」を使用する。
インスタンス作成→.append("")
.ToString()
インスタンス作成→.append("")
.ToString()
バージョン番号の付け方
[メジャー・バージョン].[マイナー・バージョン].[ビルド番号].[リビジョン]
メジャーバージョン...必ず設定。変更する頻度は低い。
マイナーバージョン...マイナーチェンジに変更。変更する頻度は低い。
ビルド番号...ビルド回数。
リビジョン...開発時に使用する番号。
ビルド番号とリビジョンは省略できる。
メジャーバージョン...必ず設定。変更する頻度は低い。
マイナーバージョン...マイナーチェンジに変更。変更する頻度は低い。
ビルド番号...ビルド回数。
リビジョン...開発時に使用する番号。
ビルド番号とリビジョンは省略できる。
登録:
投稿 (Atom)