■閉鎖した昔のブログの記事復活
[2025/05/13] EXCEL:CSVファイル読込で、先頭ゼロのデータをそのまま表示させる方法 (No.433)
[2025/05/13] VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法 (No.432)
[2025/05/13] 福井について:福井(福井県)での美味しい和菓子屋さん(お土産にも) (No.431)
[2025/05/12] Oracle:Oracleでのログインエラーでアカウントがロックされた場合の、強制ログインを使った対処方法 (No.430)
[2025/05/12] VB.NET:入力コントロールのフォーカス移動を「Enter」キーで行う (No.429)
[2025/05/13] VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法 (No.432)
[2025/05/13] 福井について:福井(福井県)での美味しい和菓子屋さん(お土産にも) (No.431)
[2025/05/12] Oracle:Oracleでのログインエラーでアカウントがロックされた場合の、強制ログインを使った対処方法 (No.430)
[2025/05/12] VB.NET:入力コントロールのフォーカス移動を「Enter」キーで行う (No.429)
-
エクセルでCSVファイルを読込む場合、先頭がゼロのデータが消されてしまい左寄せの様な表示になります。 例えば電場番号や商品コードなどでは、先頭にゼロが存在することは自然なことなので、 ゼロがサプレスされてしまうと不都合が在ります。
以下の様なCSVファイルをエクセルに読込んでみます。
エクセルの結果はやはり先頭ゼロが在りません。
そこで先頭ゼロのカラムデータは値をダブルコーテーションで囲んで先頭に = (イコール)を 置いてやります。 以下の様にCSVファイルを変更してやります。
エクセルの結果は先頭ゼロが表示される様になりました。
上図のセルの値からも分かるように、値が ="0012345" とCSVファイルの値そのものになるので 注意が必要です。これをそのまま印刷しても 0012345 とちゃんと表示されます。
=====
2016/03/25:の時の情報
PR -
マスタのメンテテンス用プログラムとしては、1個のウインドウでいろんな項目を入力するのですが、 基本的には項目名とそれに対応するデータ入力コントロールとしてテキストボックス等を設置します。
このテキストボックスには入力の書式や、キーデータの選択等を自分で組んでやる必要があります。 市販の入力用コントロールを使えばいいのですが、自分で組むと結構大変です。
そこで、SPREADの出番なのですが、SPREAD自身には既に入力コントロールが備わっています。 これを使わない手はありません。SPREADなので表形式になってしまいますが、 この形が許されるのであれば、SPREADを使っていいのではと思います。
SPREADには、数値セルタイプとして CurrencyCellType , NumberCellType がありますが、 今回は NumberCellType を使って数値用のメンテナンスを行う場合を想定した例を紹介します。
画面の表示は以下の様になります。
以下の今回のソースを示しますが、フォームのロード時に全ての数値セルの CellType を設定しています。 尚、最後のコード的なセルは、通常では編集入力後の表示で先頭ゼロを行う様に、 NumberCellType を拡張したクラスを定義しています。
また、セルの編集時には背景色と文字色を変更して入力を分かりやすくしています。
Imports FarPoint.Win.Spread.CellType Public Class Form1 'フォームロード時イベントで各数値セルの初期化 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim NumCell As New NumberCellType '【ZZ9】 With NumCell .DecimalPlaces = 0 .MaximumValue = 999 .MinimumValue = 0 End With FpSpread1.ActiveSheet.Cells(0, 1).CellType = NumCell '【ZZ9.99】 NumCell = New NumberCellType With NumCell .DecimalPlaces = 2 .MaximumValue = 999.99 .MinimumValue = 0 End With FpSpread1.ActiveSheet.Cells(1, 1).CellType = NumCell '【-ZZ9~ZZ9】 NumCell = New NumberCellType With NumCell .DecimalPlaces = 0 .MaximumValue = 999 .MinimumValue = -999 .NegativeRed = True End With FpSpread1.ActiveSheet.Cells(2, 1).CellType = NumCell '【-ZZ9.99~ZZ9.99】 NumCell = New NumberCellType With NumCell .DecimalPlaces = 2 .MaximumValue = 999.99 .MinimumValue = -999.99 .NegativeRed = True End With FpSpread1.ActiveSheet.Cells(3, 1).CellType = NumCell '【-ZZ,ZZ9~ZZ,ZZ9】 NumCell = New NumberCellType With NumCell .DecimalPlaces = 0 .MaximumValue = 99999 .MinimumValue = -99999 .NegativeRed = True .Separator = "," .ShowSeparator = True End With FpSpread1.ActiveSheet.Cells(4, 1).CellType = NumCell '【CODE 99999】 Dim CdCell = New CodeCellType With CdCell .MaximumValue = 99999 .MinimumValue = 0 End With FpSpread1.ActiveSheet.Cells(5, 1).CellType = CdCell End Sub '編集中に背景色と文字色を変える Private Sub FpSpread1_EditModeOn(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOn CType(FpSpread1.EditingControl, GeneralEditor).BackColor = Color.AntiqueWhite CType(FpSpread1.EditingControl, GeneralEditor).ForeColor = Color.Blue End Sub '入力データの取得・表示 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim str As String = "" str &= "ZZ9 : " & Me.FpSpread1.ActiveSheet.GetValue(0, 1) & vbCrLf str &= "ZZ9.99 : " & Me.FpSpread1.ActiveSheet.GetValue(1, 1) & vbCrLf str &= "-ZZ9~ZZ9 : " & Me.FpSpread1.ActiveSheet.GetValue(2, 1) & vbCrLf str &= "-ZZ9.99~ZZ9.99 : " & Me.FpSpread1.ActiveSheet.GetValue(3, 1) & vbCrLf str &= "-ZZ,ZZ9~ZZ,ZZ9 : " & Me.FpSpread1.ActiveSheet.GetValue(4, 1) & vbCrLf str &= "CODE 99999 : " & Me.FpSpread1.ActiveSheet.GetValue(5, 1) & vbCrLf MsgBox(str, "数値入力テスト") End Sub End Class '【CODE用カスタムセルクラス】 Public Class CodeCellType Inherits FarPoint.Win.Spread.CellType.NumberCellType Public Sub New() MyBase.New() Me.DecimalPlaces = 0 End Sub '編集を抜ける時に先頭ゼロ付きで表示 Public Overrides Function Format(ByVal obj As Object) As String Dim Val As Decimal = Convert.ToDecimal(obj) Dim Len As Integer = Me.MaximumValue.ToString.Length Return Val.ToString(New String("0"c, Len)) End Function End Class
下図は、「Button1」をクリックした時の表示です。
■SPREADをコントロールを何個も設置
SPREADの表形式が気に入らないのであれば、テキストボックスを何個も設置する様に 1セルしかないSPREADを個別に設置し、それぞれのSPREADのセルにCellTypeを設定してやれば テキストボックス的に使えます。
この方法だと、SPREADコントロールを何個も設置するのでプログラムの動きが重くなるかも しれませんが、意外と使える方法だと思いますが、如何でしょうか?
=====
2016/03/18:の時の情報
-
最近のニュースで昨年金沢まで開通した北陸新幹線の影響で、福井県への観光客が増えていて、 福井市の一乗谷朝倉遺跡、勝山市の県立恐竜博物館、坂井市の東尋坊、永平寺のでは前年比10%~50%増だそうです。
今まで知名度の低かった福井県も、北陸新幹線による良い効果があったようで、 多くのお客さんが福井を訪れて頂けることはうれしい限りです。
さて、観光に来られた方が福井のお店でどこがいいのか、美味しいのか、迷うのではないでしょうか。 そこで福井の中で私が美味しいと思う「和菓子屋」さん4店舗ほど紹介したいと思います。
■金花堂はや川
http://habutaekurumi.com/
・お店:
福井駅高架下プリズム店
(福井駅から帰る時はここで買えますが、非常に混んでいます)
勝山大仏店の2カ所
(国道157号の勝山大仏入口の「旭町」交差点角)
・お勧め:
「羽二重くるみ」これが有名です
「笹寿司」(菓子ではありませんが、これもおいしいです)
■親玉菓舗
親玉菓舗facebook
・お店:
福井市順化2-20-15(福井の歓楽街・片町の中心通にあります)
・お勧め:
「碌寶焼(ろっぽうやき)」これが有名です。
■甘福
甘福の地図
・お店:
福井市二の宮5丁目11-20(えちせん鉄道・八ツ島駅すぐ近く)
・お勧め:
「あべかわ餅」きな粉の量が非常に多いので開封時は気をつけてください。
(作っている量が少ないので前もって電話で連絡してみてください)
■八田屋
越前おおの観光ガイド・八田屋
・お店:
福井県大野市元町8-4
(四番通り:七間朝市すぐ近く、大野市観光の折に立ち寄ってみては)
・お勧め:
「カステラ」「おやき」「でっちようかん」「越の奥」
和菓子一般ほぼすべて美味しいです。
春は「おやき」夏は「くず餅」秋は「クルミようかん」冬は「でっちようかん」と季節ごとにいろいろあります。
私の独断と偏見で選びましたので、お口に合わない場合はすみません。 和菓子は賞味期限が3~5日、ものによってはその1日のみのものもありますので気を付けて下さい。
=====
2016/03/16:の時の情報
-
オラクルでログイン処理で何回もエラーを起こした場合には、既定回数を超えるとアカウントがロックされてしまいます。
以下のSQLの実行を見てください。(SQLコマンドラインから実行しています)
なお、既定回数はデフォルトでは10回の様です。10回目の「CONNECT」でアカウントがロックされました。
SQL> CONNECT TEST/TEST ERROR: ORA-28000: the account is locked
このTESTユーザのアカウントのロックを解除する為に、強制的にログインします。 「/ AS SYSDBA」でのログインはOS認証で「SYSDBA」の権限を持つログインになります。
SQL> CONNECT / AS SYSDBA 接続されました。 SQL> ALTER USER TEST ACCOUNT UNLOCK; ユーザーが変更されました。 SQL>
「ALTER USER」命令によりアカウントをアンロックしています。
尚、強制ログインの方法は「CONNECT SYSTEM/MANAGER AS SYSDBA」などもあります。
=====
2016/03/14:の時の情報
-
VB.NETのフォームに張り付けた入力コントロールの遷移は通常は「Tab」キーで行えますが、 「Enter」キーでも次の入力コントロールへフォーカスを移動したい要求は少なからずあります。
普通の人はテキストボックスに何かを入力し、入力の最後に「Enter」を押したくなります。 キーボードの配置(形)からしても1個の入力後は「Enter」を押すことが前提の様な感じがします。
さて、複数のTextBoxを並べたFormを例にしますが、画面的には以下の様な感じです。 この画面で、各TextBoxで「Enter」キーを押下した時に、次のコントロールにフォーカスを移動させます。
次のコントロールにフォーカスを移動させるためのメソッドが、Formコントロールのメソッドとして在ります。 以下のメソッドがそうです。
-----
SelectNextControl(ctl As System.Windows.Forms.Control, forward As Boolean, tabStopOnly As Boolean, nested As Boolean, wrap As Boolean) As Boolean
-----
引数 内容 ctl
検索を開始する位置にある System.Windows.Forms.Control forward
タブ オーダー内を前方に移動する場合は true、後方に移動する場合は false tabStopOnly
System.Windows.Forms.Control.TabStop プロパティが false に設定されているコントロールを無視する場合は true、それ以外の場合は false nested
入れ子になった (子コントロールの子) 子コントロールを含める場合は true、それ以外の場合は false wrap
タブ オーダーの最後のコントロールに到達した後、タブ オーダーの最初のコントロールから検索を続行する場合は true、それ以外の場合は false
このメソッドをKeyDownイベントで呼出せる形でメソッド化し、 FormのKeyDownで呼出してやるか、または、フォームのコンストラクタでKeyDownイベントにハンドラとして追加してやります。
以下のソースでは、コンストラクタでKeyDownイベントにハンドラを追加しています。
Public Class Form2 '当クラスのコンストラクタ Public Sub New() ' この呼び出しはデザイナーで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 '「Enter」キーでのコントロール遷移処理の設定 Me.KeyPreview = True AddHandler Me.KeyDown, AddressOf MoveNextCtrl AddHandler Me.KeyPress, AddressOf MoveNextCtrlBeepSup End Sub '「Enter」キーによるコントロールの移動メソッド Private Sub MoveNextCtrl(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Try If e.KeyCode = Keys.Enter Then Dim fProc As Boolean = True If TypeOf sender.ActiveControl Is TextBox Then If (CType(sender.ActiveControl, TextBox)).Multiline = True Then fProc = False End If End If '次のコントロールをアクティブにします。 If fProc Then 'forward: タブ オーダー内を前方に移動する場合は true。後方に移動する場合は false。 Dim forward As Boolean = e.Modifiers <> Keys.Shift sender.SelectNextControl(sender.ActiveControl, forward, True, True, True) End If End If Catch ex As Exception MsgBox("PGエラー:" & ex.ToString) End Try End Sub '「Enter」キーによるコントロールの移動メソッド時にビープ音の消音 Private Sub MoveNextCtrlBeepSup(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Try 'Enterキーが押された事を取得 If e.KeyChar = Chr(Keys.Enter) Then Dim fProc As Boolean = True If TypeOf sender.ActiveControl Is TextBox Then If (CType(sender.ActiveControl, TextBox)).Multiline = True Then fProc = False End If End If 'イベントをキャンセルでBeep音の消音 If fProc Then e.Handled = True End If End If Catch ex As Exception MsgBox("PGエラー:" & ex.ToString) End Try End Sub End Class
■「Enter」キーによるコントロールの移動メソッド時にビープ音の消音
入力コントロールで「Enter」キーを押下するとビーとBeep音がなります。 これを止めるには、KeyDownイベントで「Enter」の次のコントロール移動をした様に、 KeyPressイベントで、「Enter」キー入力時にイベント処理のキャンセルを行うことです。
=====
2016/03/14:の時の情報